Struts1.2 验证用户是否登陆 两种方法 项目中一般需要做验证用户是否登陆,没登陆就不能进入ACTION执行后台代码等的需要。 这里根据以前经验我用两种方法做过验证,特记下供大家参考,有更好方法请留言。 第一种 为所有ACTION做一个BaseAction(此类 extends Action) 此类重载execute方法 ,部分实例代码 ,根据个人需要去定 java 代码 /** * 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的类都可以正常写单独方法完成。 至此两种验证见效。