验证内容:当用户登陆后,session超时后则返回到登陆页面重新登陆。
有些文件参考
Struts2自定义拦截器实例—登陆权限验证
web.xml文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!--设置超时时间,1代表1分钟--->
<session-config>
<session-timeout>1</session-timeout>
</session-config>
</web-app>
SessionIterceptor.java 文件内容如下:
package net.mtk.tools;
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 net.mtk.action.loginAction;
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("USER_NAME");
if (userName == null) {
return Action.LOGIN;
} else {
return actionInvocation.invoke();
}
}
}
struts.xml文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//ApacheSoftware Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.ui.theme" value="simple" />
<constant name="struts.ui.templateDir" value="template" />
<constant name="struts.ui.templateSuffix" value="ftl" />
<package name="struts2" extends="struts-default">
<interceptors>
<interceptor name="authority"
class="net.mtk.tools.LoginInterceptor">
</interceptor>
<interceptor name="sessionout"
class="net.mtk.tools.SessionIterceptor">
</interceptor>
<interceptor-stack name="mydefault">
<interceptor-ref name="defaultStack" />
<interceptor-ref name="authority" />
<interceptor-ref name="sessionout" />
</interceptor-stack>
</interceptors>
<global-results>
<!-- 当返回login视图名时,转入/login.jsp页面 -->
<result name="login">/login2.jsp</result>
</global-results>
<action name="login" class="net.mtk.action.loginAction">
<result name="success">/welcome.jsp</result>
<result name="input">/login2.jsp</result>
<result name="error">/login2.jsp</result>
</action>
<action name="show" class="net.mtk.action.ShowAction">
<result name="success">/show.jsp</result>
<!-- 使用此拦截器 -->
<interceptor-ref name="mydefault" />
</action>
<action name="sho" class="net.mtk.action.shoAction">
<result name="success">/sho.jsp</result>
<!-- 使用此拦截器 -->
<interceptor-ref name="mydefault" />
</action>
</package>
</struts>
需要新加的内容已用红色标出,其它缺少文件见上面链接,今天会的第二点东东,加油!
感谢:http://blog.csdn.net/java_cxrs/article/details/5519743 的主人