数据加载中……
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的类都可以正常写单独方法完成。

posted on 2009-06-08 15:46 cpdlx 阅读(134) 评论(0)  编辑  收藏