[转]Struts1.2 验证用户是否登陆 两种方法

阅读更多
Struts1.2 验证用户是否登陆 两种方法

项目中一般需要做验证用户是否登陆,没登陆就不能进入ACTION执行后台代码等的需要。
这里根据以前经验我用两种方法做过验证,特记下供大家参考,有更好方法请留言。
第一种
为所有ACTION做一个BaseAction(此类 extends Action)
此类重载execute方法 ,部分实例代码 ,根据个人需要去定

java 代码
  1.   
  2.    /**  
  3.      * override method.  
  4.      */  
  5.     public ActionForward execute(ActionMapping mapping, ActionForm form,   
  6.             HttpServletRequest request, HttpServletResponse response)   
  7.             throws Exception   
  8.     {   
  9.         super.execute(mapping, form, request, response);   
  10.   
  11.         //用户如果未登录或session过期,则转向登录动作。   
  12.         if (!isLogin(request))   
  13.             return mapping.findForward("login");   
  14.   
  15.         try  
  16.         {   
  17.             ActionForward forward = doExecute(mapping, form, request, response);   
  18.                
  19.             //重新生成token   
  20.             //super.saveToken(request);   
  21.             return forward;   
  22.         } catch (Exception e)   
  23.         {   
  24.             logger.error(e);   
  25.             e.printStackTrace();   
  26.                
  27.             return mapping.findForward("systemError");   
  28.         }   
  29.     }   
  30.   
  31. /**  
  32.      * 判断用户是否已经登录。  
  33.      *   
  34.      * @param request  
  35.      * @return  
  36.      */  
  37.     protected boolean isLogin(HttpServletRequest request)   
  38.     {   
  39.         return request.getSession().getAttribute(Session_User) != null;   
  40.     }   
  41.   
  42. 这样写后,以后所有ACTION都继承此类,然后重写doExecute方法即可   
  43. GradeAction extends BaseAction   
  44. 在doExecute方法 写操作代码   
  45.   
  46. 第二种   
  47. 也是做个BaseAction继承DispatchAction,然后所有ACTION继承此BaseAction   
  48. BaseAction主要代码片段   
  49. /**  
  50.      * override method.  
  51.      */  
  52.     public ActionForward execute(ActionMapping mapping, ActionForm form,   
  53.             HttpServletRequest request, HttpServletResponse response)   
  54.             throws Exception   
  55.     { //用户如果未登录或session过期,则转向登录动作。   
  56.       if (!isLogin(request))   
  57.             return mapping.findForward("sessionEnd");   
  58. try  
  59.         {   
  60.            // ActionForward forward = new ActionForward();   
  61.   
  62.             //重新生成token   
  63.             //super.saveToken(request);   
  64.            
  65.             return super.execute(mapping, form, request, response);   
  66.         } catch (Exception e)   
  67.         {   
  68.            // logger.error(e);   
  69.             e.printStackTrace();   
  70.                
  71.             return mapping.findForward("systemError");   
  72.         }   
  73. }   
  74.   

以后所有类继承此基类
LinkAction extends ActionX
由于DispatchAction特点,所有继承BaseAction的类都可以正常写单独方法完成。

至此两种验证见效。

你可能感兴趣的:([转]Struts1.2 验证用户是否登陆 两种方法)