本文共 3952 字,大约阅读时间需要 13 分钟。
实例功能:当用户登陆成功后,若session超时则返回到登陆页面重新登陆。
1、 用户登陆
2、 若登陆成功,会跳转到成功页面,否则会跳转到session失效提示页面
配置session失效时间,修改web.xml
< session - config > < session - timeout > 1
登陆页面
<% @ page language = " java " import = " java.util.* " pageEncoding = " UTF-8 " %> <% request.getSession().setAttribute( " user " , " 林计钦 " ); %> 用户已经登录
Action类
package com.ljq.action; public class HelloWorldAction { public String login() { return " success " ; }}
session拦截器
package com.ljq.interceptor; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.AbstractInterceptor; /** * 自定义session拦截器,30s后失效 * * */ @SuppressWarnings( " serial " ) public class SessionIterceptor extends AbstractInterceptor{ @Override public String intercept(ActionInvocation invocation) throws Exception { ActionContext ctx = invocation.getInvocationContext(); String user = (String)ctx.getSession().get( " user " ); if (user != null && user.equals( " 林计钦 " )){ return invocation.invoke(); } // 如果超时,返回提示页面 return " index " ; }}
struts.xml配置文件
< struts > < constant name = " struts.i18n.encoding " value = " UTF-8 " /> < constant name = " struts.enable.DynamicMethodInvocation " value = " false " /> < constant name = " struts.action.extension " value = " do " /> < package name = " login " namespace = " /login " extends = " struts-default " > < interceptors > < interceptor name = " permission " class = " com.ljq.interceptor.SessionIterceptor " /> < interceptor - stack name = " permissionStack " > < interceptor - ref name = " permission " /> < interceptor - ref name = " defaultStack " /> < default - interceptor - ref name = " permissionStack " /> < global - results > < result name = " success " >/ WEB - INF / page / message.jsp < action name = " *HelloWorld " class = " com.ljq.action.HelloWorldAction " method = " {1} " > < result name = " index " >/ index.jsp
转载地址:http://gdnni.baihongyu.com/