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