首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Struts2自定义拦截器范例—Session超时的处理

2012-11-04 
Struts2自定义拦截器实例—Session超时的处理版本:struts2.1.6实例功能:当用户登陆后,session超时后则返回

Struts2自定义拦截器实例—Session超时的处理

版本:struts2.1.6

实例功能:当用户登陆后,session超时后则返回到登陆页面重新登陆。

为了更好的实现此功能我们先将session失效时间设置的小点,这里我们设置成1分钟

修改web.xml

?

view plaincopy to clipboardprint?
  1. ?<session-config>??<session-timeout>1</session-timeout>??
  2. </session-config>??

?

?

?

此实例用到的jsp页面及登陆所涉及到的相关代码请参考:

Struts2自定义拦截器实例—登陆权限验证

?

实现自定义拦截器类

?

view plaincopy to clipboardprint?
  1. package?com.ywjava.interceptor;????
  2. import?java.util.Map;????
  3. import?com.opensymphony.xwork2.Action;??import?com.opensymphony.xwork2.ActionContext;??
  4. import?com.opensymphony.xwork2.ActionInvocation;??import?com.opensymphony.xwork2.interceptor.AbstractInterceptor;??
  5. import?com.ywjava.action.LoginAction;??import?com.ywjava.utils.Constants;??
  6. ??public?class?SessionIterceptor?extends?AbstractInterceptor?{??
  7. ??????@Override??
  8. ????public?String?intercept(ActionInvocation?actionInvocation)?throws?Exception?{??????????ActionContext?ctx?=?ActionContext.getContext();??
  9. ????????Map?session?=?ctx.getSession();??????????Action?action?=?(Action)?actionInvocation.getAction();??
  10. ????????if?(action?instanceof?LoginAction)?{??????????????return?actionInvocation.invoke();??
  11. ????????}??????????String?userName?=?(String)?session.get(Constants.USER_SESSION);??
  12. ????????if?(userName?==?null)?{??????????????return?Action.LOGIN;??
  13. ????????}?else?{??????????????return?actionInvocation.invoke();??
  14. ????????}??????}??
  15. ??}??

?

?

?

struts.xml中定义并使用此拦截器

?

view plaincopy to clipboardprint?
  1. <?xml?version="1.0"?encoding="UTF-8"?>??<!DOCTYPE?struts?PUBLIC??
  2. ????"-//Apache?Software?Foundation//DTD?Struts?Configuration?2.1//EN"??????"http://struts.apache.org/dtds/struts-2.1.dtd">??
  3. <struts>??????<package?name="authority"?extends="struts-default">??
  4. ??????????????<!--?定义一个拦截器?-->??
  5. ????????<interceptors>??????????????<interceptor?name="authority"??
  6. ????????????????class="com.ywjava.interceptor.LoginInterceptor">??????????????</interceptor>??
  7. ????????????<interceptor?name="sessionout"???????????????class="com.ywjava.interceptor.SessionIterceptor"></interceptor>??
  8. ????????????<!--?拦截器栈?-->??????????????<interceptor-stack?name="mydefault">??
  9. ????????????????<interceptor-ref?name="defaultStack"?/>??????????????????<interceptor-ref?name="authority"?/>??
  10. ????????????????<interceptor-ref?name="sessionout"/>??????????????</interceptor-stack>??
  11. ????????</interceptors>????
  12. ????????<!--?定义全局Result?-->??????????<global-results>??
  13. ????????????<!--?当返回login视图名时,转入/login.jsp页面?-->??????????????<result?name="login">/login.jsp</result>??
  14. ????????</global-results>????
  15. ????????<action?name="loginform"??????????????class="com.ywjava.action.LoginFormAction">??
  16. ????????????<result?name="success">/login.jsp</result>??????????</action>??
  17. ??????????????????<action?name="login"?class="com.ywjava.action.LoginAction">??
  18. ????????????<result?name="success">/welcome.jsp</result>??????????????<result?name="error">/login.jsp</result>??
  19. ????????????<result?name="input">/login.jsp</result>??????????</action>??
  20. ??????????<action?name="show"?class="com.ywjava.action.ShowAction">??
  21. ????????????<result?name="success">/show.jsp</result>??????????????<!--?使用此拦截器?-->??
  22. ????????????<interceptor-ref?name="mydefault"?/>??????????</action>??
  23. ??????????????</package>??
  24. </struts>??

?

?

?

当我们登陆后一分钟不做任何操作刷新后则会跳转到登陆页面

热点排行