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

来源:互联网 发布:淘宝纯棉四件套店铺 编辑:程序博客网 时间:2024/05/22 11:41

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

        //用户如果未登录或session过期,则转向登录动作。
        if (!isLogin(request))
            return mapping.findForward("login");

        try
        {
            ActionForward forward = doExecute(mapping, form, request, response);
           
            //重新生成token
            //super.saveToken(request);
            return forward;
        } catch (Exception e)
        {
            logger.error(e);
            e.printStackTrace();
           
            return mapping.findForward("systemError");
        }
    }

/**
     * 判断用户是否已经登录。
     *
     * @param request
     * @return
     */
    protected boolean isLogin(HttpServletRequest request)
    {
        return request.getSession().getAttribute(Session_User) != null;
    }

这样写后,以后所有ACTION都继承此类,然后重写doExecute方法即可
GradeAction extends BaseAction
在doExecute方法 写操作代码

第二种
也是做个BaseAction继承DispatchAction,然后所有ACTION继承此BaseAction
BaseAction主要代码片段
/**
     * override method.
     */
    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception
    { //用户如果未登录或session过期,则转向登录动作。
      if (!isLogin(request))
            return mapping.findForward("sessionEnd");
try
        {
           // ActionForward forward = new ActionForward();

            //重新生成token
            //super.saveToken(request);
       
            return super.execute(mapping, form, request, response);
        } catch (Exception e)
        {
           // logger.error(e);
            e.printStackTrace();
           
            return mapping.findForward("systemError");
        }
}
以后所有类继承此基类
LinkAction extends ActionX
由于DispatchAction特点,所有继承BaseAction的类都可以正常写单独方法完成。

至此两种验证见效。

原创粉丝点击