struts2拦截器实现用户登录管理



struts2拦截器实现用户登录管理

struts2拦截器实现用户登录管理

ManagerInterceptor.java

 

Java代码  收藏代码
  1. package dsh.bikegis.interceptor;
  2. import javax.servlet.http.HttpServletRequest;
  3. import javax.servlet.http.HttpSession;
  4. import org.apache.struts2.ServletActionContext;
  5. import com.opensymphony.xwork2.ActionInvocation;
  6. import com.opensymphony.xwork2.ActionSupport;
  7. import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
  8. import dsh.bikegis.action.ManagerLoginAction;
  9. /**
  10.  * 管理員登錄控制的攔截器
  11.  * @author NanGuoCan
  12.  *
  13.  */
  14. public class ManagerInterceptor extends AbstractInterceptor {
  15.     private static final long serialVersionUID = 5722672508679011124L;
  16.     public String intercept(ActionInvocation invocation) throws Exception {
  17.         HttpServletRequest request = ServletActionContext.getRequest();
  18.         HttpSession session = request.getSession(true);
  19.         String username = (String) session.getAttribute(“userName”);
  20.         ActionSupport action = (ActionSupport) invocation.getAction();
  21.         if (action instanceof ManagerLoginAction)
  22.             return invocation.invoke();
  23.         if (username != null && !username.equals(“”))
  24.             return invocation.invoke();
  25.         else {
  26.             return ”login”;
  27.         }
  28.     }
  29. }

 

ManagerLoginActionImpl.java

 

Java代码  收藏代码
  1. package dsh.bikegis.action.impl;
  2. import com.opensymphony.xwork2.ActionSupport;
  3. import dsh.bikegis.action.ManagerLoginAction;
  4. import dsh.bikegis.model.User;
  5. import dsh.bikegis.service.ManagerLoginService;
  6. import dsh.bikegis.system.SysAction;
  7. public class ManagerLoginActionImpl extends SysAction implements ManagerLoginAction {
  8.     /**
  9.      * 管理員登錄Action的實現部分
  10.      */
  11.     private static final long serialVersionUID = 1L;
  12.     private User user;
  13.     private ManagerLoginService loginService;
  14.     private String errMesg;
  15.     /**
  16.      * 管理員登錄
  17.      */
  18.     @Override
  19.     public String login() {
  20.         if(!(this.validateLogin()))
  21.             return ActionSupport.ERROR;
  22.         try {
  23.             if (this.loginService.login(user)) {// 登錄成功
  24.                 request.getSession().setAttribute(“userName”,
  25.                         user.getUsername());
  26.                 request.getSession().setAttribute(“id”, user.getId());
  27.                 if (user.getUsername().equals(“manager”)) {
  28.                     request.getSession().setAttribute(“ROLE”, ”manager”);
  29.                 }
  30.                 return SUCCESS;
  31.             } else {
  32.                 this.errMesg = ”帳號或密码错误”;
  33.                 return ERROR;
  34.             }
  35.         } catch (Exception e) {
  36.             e.printStackTrace();
  37.             this.errMesg = ”帳號或密码错误”;
  38.             return ERROR;
  39.         }
  40.     }
  41.     /**
  42.      * 管理员登录 验证
  43.      * @return
  44.      * 驗證成功返回true,否則返回false
  45.      */
  46.     @Override
  47.     public boolean validateLogin() {
  48.         if (user == null) {
  49.             this.errMesg =”未能取得用戶信息”;
  50.             return false;
  51.         }
  52.         if (user.getUsername() == null || user.getUsername().equals(“”)) {
  53.             this.errMesg = ”帳號不能為空”;
  54.             return false;
  55.         }
  56.         if (user.getUserpsw() == null || user.getUserpsw().equals(“”)) {
  57.             this.errMesg = ”密碼不能為空”;
  58.             return false;
  59.         }
  60.         return true;
  61.     }
  62.     public User getUser() {
  63.         return user;
  64.     }
  65.     public void setUser(User user) {
  66.         this.user = user;
  67.     }
  68.     public ManagerLoginService getLoginService() {
  69.         return loginService;
  70.     }
  71.     public void setLoginService(ManagerLoginService loginService) {
  72.         this.loginService = loginService;
  73.     }
  74.     public String getErrMesg() {
  75.         return errMesg;
  76.     }
  77.     public void setErrMesg(String errMesg) {
  78.         this.errMesg = errMesg;
  79.     }
  80. }

struts.xml

 

Xml代码  收藏代码
  1. <!DOCTYPE struts PUBLIC
  2.   ”-//Apache Software Foundation//DTD Struts Configuration 2.0//EN”
  3.   ”http://struts.apache.org/dtds/struts-2.0.dtd”>
  4. <struts>
  5.     <!– 用戶操作類的Action –>
  6.     <package name=”adminmanage” namespace=”/manage” extends=”bikeGIS”>
  7.         <interceptors>
  8.             <!– 是否登录 –>
  9.             <interceptor name=”adminLogin”
  10.                 class=”dsh.bikegis.interceptor.ManagerInterceptor”></interceptor>
  11.             <interceptor-stack name=”adminmanageStack”>
  12.                 <interceptor-ref name=”bikeGISstack”></interceptor-ref>
  13.                 <interceptor-ref name=”adminLogin”></interceptor-ref>
  14.             </interceptor-stack>
  15.         </interceptors>
  16.         <default-interceptor-ref name=”adminmanageStack”></default-interceptor-ref>
  17.         <global-results>
  18.             <!– 重新登錄 –>
  19.             <result name=”login” type=”redirectAction”>
  20.                 <param name=”actionName”>index</param>
  21.                 <param name=”namespace”>/manage</param>
  22.             </result>
  23.         </global-results>
  24.         <action name=”index” class=”loginAction”>
  25.             <result>/manage/index.jsp</result>
  26.         </action>
  27.         <!– 用戶登錄 –>
  28.         <action name=”loginAction” class=”loginAction” method=”login”>
  29.             <result type=”redirect”>/manage/frame.action</result>
  30.             <result name=”error”>/manage/index.jsp</result>
  31.             <result name=”input”>/manage/index.jsp</result>
  32.         </action>
  33.         <!– 用戶退出 –>
  34.         <action name=”loginOut” class=”userAction” method=”loginOut”>
  35.             <result name=”success”>/manage/index.jsp</result>
  36.         </action>
  37.         <!– 修改密碼 –>
  38.         <action name=”modifyPswAction” class=”userAction” method=”modifyUserPsw”>
  39.             <result name=”success” type=”redirect” >/manage/main.action</result>
  40.             <result name=”error” >/manage/user/modifypsw.jsp</result>
  41.         </action>
  42.     </package>
  43. </struts>