您的位置:首页 > 编程语言 > Java开发

struts2自定义拦截器

2017-04-27 19:15 323 查看
首先自己写一个类来继承Interceptor(这里继承了MethodFilterInterceptor以实现对需要拦截的方法的配置)

public class MyIntercepter extends MethodFilterInterceptor {

@Override
protected String doIntercept(ActionInvocation invocation) throws Exception {
//得到session中的user
User user=(User) ServletActionContext.getRequest().getAttribute("user");
if(user==null){
return Action.LOGIN;
}
return invocation.invoke();
}

}


在struts.xml中进行配置

<?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 name="struts.enable.DynamicMethodInvocation" value="true" />
<!-- 这里的package和java中的包一样 , namespace是访问路径(不写的话默认是:namespace="") -->
<package name="default" extends="struts-default" namespace="/">

<interceptors>

<interceptor name="bookInterceptor" class="com.wz.intercepter.MyIntercepter">
<!-- 不拦截的方法 -->
<param name="excludeMethods">select</param>
<!-- 拦截的方法 -->
<param name="includeMethods">delete,update,add</param>
</interceptor>

<interceptor-stack name="myInterceptors">
<interceptor-ref name="bookInterceptor"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
</interceptors>

<action name="book_*" class="com.wz.action.BookAction" method="{1}">
<result name="login">
/login.jsp
</result>
<interceptor-ref name="myInterceptors"></interceptor-ref>
</action>

</package>

</struts>


被拦截的action

public class BookAction extends ActionSupport {

public String add(){
System.out.println("add");
return null;
}

public String delete(){
System.out.println("delete");
return null;
}

public String update(){
System.out.println("update");
return null;
}

public String select(){
System.out.println("select");
return null;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  struts interceptor