歡迎您光臨本站 註冊首頁

登錄成功后自動跳轉到原頁面的實現辦法

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0

  需求:某些頁面需要登錄後方可顯示,因此需要驗證是否登錄,如果登錄成功后自動跳轉到原頁面,實現此功能的方法已有很多,對高手們就班門弄斧了,希望能給像我這樣的菜鳥們一些參考,起到拋磚引玉的作用;代碼並不完整,只列出了主要部分.

  環境:Spring JSF Hibernate

  實現方式:

  1、定義業務核心服務Bean,完成主要的業務邏輯,在Spring中配置為Session類.

  /*

  類名:PublicService

  功能:實現各種核心業務.

  */

  public class PublicService {

  private String strurl; //登錄后跳轉的url地址

  ....

  public String checkLogin(String pre_url)

  {

  // 判斷用戶是否已經登錄,如果未登錄,那麼跳轉到登錄頁面

  FacesContext facesContext = FacesContext.getCurrentInstance();

  if (!Check_if_validateuser()) { //如果未登錄

  try {

  this.setStrurl(pre_url); //設置登錄后跳轉的url地址

  facesContext.getExternalContext().redirect(

  Adsysparameters.sys_url "enterprises/login.faces"); //登錄頁面

  return "invalid";

  } catch (IOException e) {

  // TODO Auto-generated catch block

  e.printStackTrace();

  }

  }

  return "sessionok";

  }

  //登錄頁面

  public String loginYGsys(String account, String password) {

  FacesContext facesContext = FacesContext.getCurrentInstance();

  //登錄系統,代碼略

  //登錄成功后

  try {

  facesContext.getExternalContext().redirect(

  this.getStrurl()); //Strurl在判斷是否登錄的函數checkLogin中已設置

  } catch (IOException e) {

  e.printStackTrace();

  }

  return "success";

  }

  return "error ";

  …

  }

  }

  spring的applicationContext.xml中,

  <bean id="publicservice"

  class="com.gisco.adsys.service.PublicService" scope="session"> //session級

  .......

  </bean>

  2、定義一個Bean,此處命名為CheckloginBean,設置一些屬性,這些屬性在頁面請求時從此Bean中獲取屬性;如:

  package com.gisco.adsys.view.bean;

  import com.gisco.adsys.parameters.Adsysparameters;

  import com.gisco.adsys.service.PublicService;

  public class CheckloginBean {

  private PublicService publicservice; //定義業務核心服務Bean

  // 如下變數,僅做驗證用戶是否登錄只用

  private String valid4producelist;

  private String valid4newproduce;

  public String getValid4newproduce() {

  this.valid4newproduce=publicservice

  .checkLogin(Adsysparameters.sys_url

   "enterprises/extentprodadd.faces"); //需要驗證登錄的頁面

  return valid4newproduce;

  }

  public void setValid4newproduce(String valid4newproduce) {

  this.valid4newproduce = valid4newproduce;

  }

  public String getValid4producelist() {

  this.valid4producelist=publicservice

  .checkLogin(Adsysparameters.sys_url

   "enterprises/extproducelist.faces");//需要驗證登錄的頁面

  return valid4producelist;

  }

  public void setValid4producelist(String valid4producelist) {

  this.valid4producelist = valid4producelist;

  }

  }

  3、JSF中配置CheckloginBean

  <managed-bean>

  <managed-bean-name>checkloginBean</managed-bean-name>

  <managed-bean-class>

  com.gisco.adsys.view.bean.CheckloginBean

  </managed-bean-class>

  <managed-bean-scope>request</managed-bean-scope>

  <managed-property>

  <property-name>publicservice</property-name>

  <value>#{publicservice}</value>

  </managed-property>

  </managed-bean>

  4、頁面中extentprodadd.jsp中,引用CheckloginBean 中定義的屬性valid4newproduce

  <f:view>

  <h:form id="newprodform">

  <h:inputHidden value="#{checkloginBean.valid4newproduce}" id="valid4newproduce">

  </h:inputHidden>

  …

  </h:form>

  </f:view>


[火星人 ] 登錄成功后自動跳轉到原頁面的實現辦法已經有827次圍觀

http://coctec.com/docs/java/show-post-60294.html