您的位置:首页 > 其它

自定义拦截器

2016-04-02 23:28 225 查看
package com.cn.interceptors;

import javax.servlet.http.HttpSession;

import org.apache.struts2.ServletActionContext;

import com.cn.domain.User;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;
//执行动作方法前检查用户是否已经登录
public class SessionCheckInterceptors extends MethodFilterInterceptor{

@Override
protected String doIntercept(ActionInvocation invocation) throws Exception {
String result = "login";//对应的就是一个结果(即action的结果配置:<result name="login">/login.jsp</result>)
HttpSession session = ServletActionContext.getRequest().getSession();
User user = (User)session.getAttribute("user");
if(user!=null)
result = invocation.invoke();
return result;
}

}


在Struts配置文件中进行配置:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
<constant name="struts.devMode" value="true"></constant>

<package name="mypackage" extends="struts-default" abstract="true">
<interceptors>
<interceptor name="sessionCheck" class="com.cn.interceptors.SessionCheckInterceptors">
<!-- 说明test2动作方法不需要拦截(这里是指action的method方法) -->
<param name="excludeMethods">test2</param>
</interceptor>
<interceptor-stack name="myDefaultStack">
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="sessionCheck"></interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="myDefaultStack"></default-interceptor-ref>
</package>

<package name="p1" extends="mypackage">
<action name="test1" class="com.cn.action.HelloAction1" method="test1">
<result>/1.jsp</result>
<result name="login">/login.jsp</result>
</action>
<action name="test2" class="com.cn.action.HelloAction1" method="test2">
<result>/2.jsp</result>
</action>
</package>
</struts>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: