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

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

项目中一般需要做验证用户是否登陆,没登陆就不能进入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的类都可以正常写单独方法完成。

至此两种验证见效。

转自:http://hi.baidu.com/nieweiguo/blog/item/9fee19d53cd761c751da4bb3.html
减肥瘦身品总汇     值得信赖*脉脉美妆*正品现货谢绝讲价     〓深港商盟〓名品欧衣坊(美国休闲品牌AF系列)     QQ三国游戏币及道具专卖店     小脸红红的瘦身旗舰店减肥瘦身品总汇     值得信赖*脉脉美妆*正品现货谢绝讲价     〓深港商盟〓名品欧衣坊(美国休闲品牌AF系列)     QQ三国游戏币及道具专卖店     小脸红红的瘦身旗舰店



减肥瘦身品总汇     值得信赖*脉脉美妆*正品现货谢绝讲价     〓深港商盟〓名品欧衣坊(美国休闲品牌AF系列)     QQ三国游戏币及道具专卖店     小脸红红的瘦身旗舰店

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