Struts2的拦截器怎么配

 我来答
错永伊I
推荐于2016-07-08 · TA获得超过5543个赞
知道小有建树答主
回答量:1036
采纳率:71%
帮助的人:255万
展开全部
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是排除拦截的那些方法.
Jtti
2024-10-10 广告
Jtti是一家新加坡全球网络基础服务商,为数百万个网站提供支持,提供香港服务器、新加坡服务器等多种全球服务器,自营全球多个数据中心,为用户提供优质的网络资源和服务。 JTTI服务器整体性能是非常不错的,拥有CN2 GIA+BGP优化线路,多... 点击进入详情页
本回答由Jtti提供
趣事情
推荐于2016-10-11 · 知道合伙人互联网行家
趣事情
知道合伙人互联网行家
采纳数:517 获赞数:5452
电脑技术,软件开发。移动开发。网站建设相关专业知识。都可以提供解答和相关技术指导。

向TA提问 私信TA
展开全部
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>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友8927dbe5b
2012-03-29 · TA获得超过448个赞
知道小有建树答主
回答量:1011
采纳率:100%
帮助的人:287万
展开全部
<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>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式