版本:struts2.1.6
实例功能:当用户登陆后,session超时后则返回到登陆页面重新登陆。
为了更好的实现此功能我们先将session失效时间设置的小点,这里我们设置成1分钟
修改web.xml
- <session-config>
- <session-timeout>1</session-timeout>
- </session-config>
此实例用到的jsp页面及登陆所涉及到的相关代码请参考:
实现自定义拦截器类
- package com.ywjava.interceptor;
- import java.util.Map;
- import com.opensymphony.xwork2.Action;
- import com.opensymphony.xwork2.ActionContext;
- import com.opensymphony.xwork2.ActionInvocation;
- import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
- import com.ywjava.action.LoginAction;
- import com.ywjava.utils.Constants;
- public class SessionIterceptor extends AbstractInterceptor {
- @Override
- public String intercept(ActionInvocation actionInvocation) throws Exception {
- ActionContext ctx = ActionContext.getContext();
- Map session = ctx.getSession();
- Action action = (Action) actionInvocation.getAction();
- if (action instanceof LoginAction) {
- return actionInvocation.invoke();
- }
- String userName = (String) session.get(Constants.USER_SESSION);
- if (userName == null) {
- return Action.LOGIN;
- } else {
- return actionInvocation.invoke();
- }
- }
- }
struts.xml中定义并使用此拦截器
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE struts PUBLIC
- "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
- "http://struts.apache.org/dtds/struts-2.1.dtd">
- <struts>
- <package name="authority" extends="struts-default">
- <!-- 定义一个拦截器 -->
- <interceptors>
- <interceptor name="authority"
- class="com.ywjava.interceptor.LoginInterceptor">
- </interceptor>
- <interceptor name="sessionout"
- class="com.ywjava.interceptor.SessionIterceptor"></interceptor>
- <!-- 拦截器栈 -->
- <interceptor-stack name="mydefault">
- <interceptor-ref name="defaultStack" />
- <interceptor-ref name="authority" />
- <interceptor-ref name="sessionout"/>
- </interceptor-stack>
- </interceptors>
- <!-- 定义全局Result -->
- <global-results>
- <!-- 当返回login视图名时,转入/login.jsp页面 -->
- <result name="login">/login.jsp</result>
- </global-results>
- <action name="loginform"
- class="com.ywjava.action.LoginFormAction">
- <result name="success">/login.jsp</result>
- </action>
- <action name="login" class="com.ywjava.action.LoginAction">
- <result name="success">/welcome.jsp</result>
- <result name="error">/login.jsp</result>
- <result name="input">/login.jsp</result>
- </action>
- <action name="show" class="com.ywjava.action.ShowAction">
- <result name="success">/show.jsp</result>
- <!-- 使用此拦截器 -->
- <interceptor-ref name="mydefault" />
- </action>
- </package>
- </struts>
当我们登陆后一分钟不做任何操作刷新后则会跳转到登陆页面
转载自:http://blog.csdn.net/java_cxrs/article/details/5519743