Struts2的拦截器怎么配
3个回答
展开全部
1、自定义拦截器:
<interceptors>
<!-- 先定义拦截器 -->
<interceptor name="myInterceptor" class="com.zzz.struts2.interceptor.MyInterceptor">
<!-- 指定系统初始化给拦截器的参数 -->
<param name="hello">hello</param>
</interceptor>
<!-- 加到自己设置的拦截器栈里边去 -->
<interceptor-stack name="myStack">
<interceptor-ref name="myInterceptor">
</interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
</interceptors>
2、struts2中有一个系统默认的拦截器栈是 defaultStack,如果你手动引用自己的拦截器,系统默认的拦截器栈将不起作用;这样必需手动引入系统的拦截器栈
<interceptor-ref name="defaultStack">
</interceptor-ref>
3、如果想改变系统默认的拦截器栈,可以这样配置:
<default-interceptor-ref name="myStack">
</default-interceptor-ref>
其中myStack是自己定义的拦截器栈名字;
注:如果拦截器栈中有多个拦截器,在执行action之前的顺序跟配置拦截器的顺序一致,而在action之后执行的顺序是相反的;
4、上边的拦截器都要是针对整个action的,如果针对某个方法进行拦截可以去继承这个类:MethodFilterInterceptor。它需要要配置对哪个方法进行拦截。方法过滤拦截器最好不要配置到自己设置默认的拦截器栈里边,自己手动配置。
<interceptor-ref name="myInterceptor3">
<param name="includeMethods">execute</param>
<param name="excludeMethods">execute</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
其中includeMethods ,excludeMethods是固定写法: includeMethods 包含拦截那些方法,多个方法需要用”,”隔开; excludeMehtods是排除拦截的那些方法.
<interceptors>
<!-- 先定义拦截器 -->
<interceptor name="myInterceptor" class="com.zzz.struts2.interceptor.MyInterceptor">
<!-- 指定系统初始化给拦截器的参数 -->
<param name="hello">hello</param>
</interceptor>
<!-- 加到自己设置的拦截器栈里边去 -->
<interceptor-stack name="myStack">
<interceptor-ref name="myInterceptor">
</interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
</interceptors>
2、struts2中有一个系统默认的拦截器栈是 defaultStack,如果你手动引用自己的拦截器,系统默认的拦截器栈将不起作用;这样必需手动引入系统的拦截器栈
<interceptor-ref name="defaultStack">
</interceptor-ref>
3、如果想改变系统默认的拦截器栈,可以这样配置:
<default-interceptor-ref name="myStack">
</default-interceptor-ref>
其中myStack是自己定义的拦截器栈名字;
注:如果拦截器栈中有多个拦截器,在执行action之前的顺序跟配置拦截器的顺序一致,而在action之后执行的顺序是相反的;
4、上边的拦截器都要是针对整个action的,如果针对某个方法进行拦截可以去继承这个类:MethodFilterInterceptor。它需要要配置对哪个方法进行拦截。方法过滤拦截器最好不要配置到自己设置默认的拦截器栈里边,自己手动配置。
<interceptor-ref name="myInterceptor3">
<param name="includeMethods">execute</param>
<param name="excludeMethods">execute</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
其中includeMethods ,excludeMethods是固定写法: includeMethods 包含拦截那些方法,多个方法需要用”,”隔开; excludeMehtods是排除拦截的那些方法.
Jtti
2024-10-10 广告
2024-10-10 广告
Jtti是一家新加坡全球网络基础服务商,为数百万个网站提供支持,提供香港服务器、新加坡服务器等多种全球服务器,自营全球多个数据中心,为用户提供优质的网络资源和服务。
JTTI服务器整体性能是非常不错的,拥有CN2 GIA+BGP优化线路,多...
点击进入详情页
本回答由Jtti提供
推荐于2016-10-11 · 知道合伙人互联网行家
关注
展开全部
1:所有拦截器的超级接口Interceptor ,Action实现这个接口;
?Interceptor 它其中有三个方法(init(),destroy() ,interceptor()):
Init()方法:在服务器起动的时候加载一次,并且只加载一次;
Destroy()方法:当拦截器销毁时执行的方法;
Interceptor()方法:其中里边有一个参数invocation
public String intercept(ActionInvocation invocation) throws xception {
System.out.println("interceptor!!");
String result=invocation.invoke();
return result;
}
Invocation.invoke()只有一个拦截器执行完这个方法后,返回给视图,有多个拦截器,顺序的执行完所有的拦截器返回给视图.
2:可以在系统初始化中给拦截器指定默认的参数(也包括了定义拦截器方式)如下:
在拦截器类中把hello当做属性set/get方式注入到拦截器类中;
<interceptors>
<!-- 先定义拦截器 -->
<interceptor name="myInterceptor" class="com.zzz.struts2.interceptor.MyInterceptor">
<!-- 指定系统初始化给拦截器的参数 -->
<param name="hello">张钊钊</param>
</interceptor>
<!-- 加到自己设置的拦截器栈里边去 -->
<interceptor-stack name="myStack">
<interceptor-ref name="myInterceptor">
</interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
</interceptors>
<!-- 改变系统默认的拦截器,改成自己的默认拦截器,并且一个系统只能有一个默认的拦截器,这样这个拦截器栈会默认应用到所有的Action上去 -->
<default-interceptor-ref name="myStack">
</default-interceptor-ref>
也可以在使用拦截器的时候给它设置参数:
就是在一个action 的reslut下面配置上如下:
<action name="register"
class="com.zzz.struts2.action.RegisterAction">
<result name="success">/success.jsp</result>
<!-- result 它其中还有一个信息转发类型 type=""记住,如果不转向JSP,转向图表,可以改变type=""值 -->
<result name="input">/register.jsp</result>
<interceptor-ref name="myInterceptor">
<param name="hello">welcome</param>
</interceptor-ref>
<interceptor-ref name="myStack"></interceptor-ref>
</action>
?Interceptor 它其中有三个方法(init(),destroy() ,interceptor()):
Init()方法:在服务器起动的时候加载一次,并且只加载一次;
Destroy()方法:当拦截器销毁时执行的方法;
Interceptor()方法:其中里边有一个参数invocation
public String intercept(ActionInvocation invocation) throws xception {
System.out.println("interceptor!!");
String result=invocation.invoke();
return result;
}
Invocation.invoke()只有一个拦截器执行完这个方法后,返回给视图,有多个拦截器,顺序的执行完所有的拦截器返回给视图.
2:可以在系统初始化中给拦截器指定默认的参数(也包括了定义拦截器方式)如下:
在拦截器类中把hello当做属性set/get方式注入到拦截器类中;
<interceptors>
<!-- 先定义拦截器 -->
<interceptor name="myInterceptor" class="com.zzz.struts2.interceptor.MyInterceptor">
<!-- 指定系统初始化给拦截器的参数 -->
<param name="hello">张钊钊</param>
</interceptor>
<!-- 加到自己设置的拦截器栈里边去 -->
<interceptor-stack name="myStack">
<interceptor-ref name="myInterceptor">
</interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
</interceptors>
<!-- 改变系统默认的拦截器,改成自己的默认拦截器,并且一个系统只能有一个默认的拦截器,这样这个拦截器栈会默认应用到所有的Action上去 -->
<default-interceptor-ref name="myStack">
</default-interceptor-ref>
也可以在使用拦截器的时候给它设置参数:
就是在一个action 的reslut下面配置上如下:
<action name="register"
class="com.zzz.struts2.action.RegisterAction">
<result name="success">/success.jsp</result>
<!-- result 它其中还有一个信息转发类型 type=""记住,如果不转向JSP,转向图表,可以改变type=""值 -->
<result name="input">/register.jsp</result>
<interceptor-ref name="myInterceptor">
<param name="hello">welcome</param>
</interceptor-ref>
<interceptor-ref name="myStack"></interceptor-ref>
</action>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
<struts>
<constant name="struts.custom.i18n.resources" value="message"></constant>
<constant name="struts-i18n.encoding" value="utf-8"></constant>
<package name="struts" extends="struts-default">
<interceptors>
<interceptor name="myinterceptor"
class="com.Vote.interceptor.ActionInterceptor">
</interceptor>
<interceptor-stack name="myStack">
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="myinterceptor"></interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="myStack"></default-interceptor-ref>
</package>
</struts>
<constant name="struts.custom.i18n.resources" value="message"></constant>
<constant name="struts-i18n.encoding" value="utf-8"></constant>
<package name="struts" extends="struts-default">
<interceptors>
<interceptor name="myinterceptor"
class="com.Vote.interceptor.ActionInterceptor">
</interceptor>
<interceptor-stack name="myStack">
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="myinterceptor"></interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="myStack"></default-interceptor-ref>
</package>
</struts>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询