Struts2 拦截器具体配置过程

拦截器差点儿遍布每个程序中,所以贴出拦截器配置的具体过程,希望可以帮到大家。

Struts2 拦截器具体配置过程

<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>

2.拦截器,拦截器栈和默认的拦截器之间的关系

1:拦截器和拦截器栈是一个级别的,也就是说一个拦截器栈中包含很多拦截器, 一个拦截器栈中还能够包含很多拦截器栈,配置例如以下方式:

<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>

拦截器的使用:1.先定义;2.在引用使用;

<interceptor name="myInterceptor" class="com.zzz.struts2.interceptor.MyInterceptor">

<interceptor-ref name="myInterceptor">

</interceptor-ref>

2:struts2中有一个系统默认的拦截器栈是 defaultStack,假设你手动引用自己的拦截器,系统默认的拦截器栈将不起作用;这样必需手动引入系统的拦截器栈

<interceptor-ref name="defaultStack"> </interceptor-ref>

假设想改变系统默认的拦截器栈,能够这样配置:

<default-interceptor-ref name="myStack"> </default-interceptor-ref>

当中myStack是自定义的拦截器栈名字; 假设拦截器栈中有多个拦截器,在运行action之前的顺序跟配置拦截器的顺序一致,而在action之后运行的顺序是相反的;

3:抽象的拦截器类AbstractInterceptor

1:Interceptor这个超级拦截器接口,有三方法须要实现,可是假设不想使用init();  和destroy()

方法,能够去继承这个抽象拦截器类; 它的使用跟上边的没有什么差别;

4:方法过滤拦截器MethodFilterInterceptor

1:上边的拦截器都要是针对整个action的,假设针对某个方法进行拦截能够去继承这个类;

它的使用跟上边的用法差点儿相同,仅仅是须要要配置它对那个方法进行拦截,方法过滤拦截器

好不要配置到自己设置默认的拦截器栈里边,自己手动配置.

<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是排除拦截的那些方法;

5:鉴听器PreResultListener接口

1:它的鉴听点在拦截器运行完某个action方法后,在渲染视图之前做一些事情;让某个类去实现这个接口; 然后向须要它的拦截器中注冊进去例如以下代码:

publicclass MyInterceptor3 extends MethodFilterInterceptor {

privatestaticfinallongserialVersionUID = 3756655410194005443L;

@Override

protected String doIntercept(ActionInvocation invocation) throws Exception {

//

把鉴听器注冊到拦截中去;

invocation.addPreResultListener(new MyListener());

System.out.println("my Interceptor3");

String result=arg0.invoke();

System.out.println("my interceptor3 finshed!");

return result;

}

}

时间: 2024-11-02 04:44:09

Struts2 拦截器具体配置过程的相关文章

转载 - Struts2 拦截器详细配置过程

出处:http://www.blogjava.net/zzzlyr/archive/2009/10/12/297998.html Struts2 拦截器详细配置过程 1:所有拦截器的超级接口Interceptor ,Action去实现这个接口; Interceptor 它其中有三个方法(init(),destroy() ,interceptor()): Init()方法:在服务器起动的时候加载一次,并且只加载一次; Destroy()方法:当拦截器销毁时执行的方法; Interceptor()方

Struts2拦截器的配置

struts2拦截器interceptor的三种配置方法方法1. 普通配置法 <struts> <package name="struts2" extends="struts-default"> <interceptors> <interceptor name="myInterceptor" class="edu.zd.core.MyInterceptor"></inter

Struts2 拦截器(Interceptor )原理和配置

一.Struts2拦截器原理: Struts2拦截器的实现原理相对简单,当请求struts2的action时,Struts 2会查找配置文件,并根据其配置实例化相对的    拦截器对象,然后串成一个列表,最后一个一个地调用列表中的拦截器. 比如:应用要求用户登陆,且必须为指定用户名才可以查看系统中某个视图资源:否则,系统直接转入登陆页面.对于上面的需求,可以在每个Action的执行实际处理逻辑之前,先执行权限检查逻辑,但这种做法不利于代码复用.因为大部分Action里的权限检查代码都大同小异,故

转载 - Struts2拦截器配置

出处:http://blog.csdn.net/axin66ok/article/details/7321430 目录(?)[-] 理解拦截器 1 什么是拦截器 2 拦截器的实现原理 拦截器的配置 使用拦截器 自定义拦截器 1 实现拦截器类 2 使用自定义拦截器 自定义拦截器示例 1 问题描述 2 实现权限控制拦截器类 3 配置权限控制拦截器 4 运行调试 1. 理解拦截器 1.1. 什么是拦截器: 拦截器,在AOP(Aspect-Oriented Programming)中用于在某个方法或字段

Struts2中拦截器的配置

在struts.xml文件中定义拦截器只需要给拦截器类指定一个拦截器名,这就完成了定义.拦截器使用<interceptor>标记来定义,格式如下 <interceptor name="拦截器名" class="拦截器类"></interceptor> 大部分情况下,如果有一个拦截器这样配置就够了.如果有多个拦截器,则需要写多个<interceptor>,而<interceptor>是写在<interc

struts2拦截器interceptor的三种配置方法

struts2拦截器interceptor的三种配置方法方法1. 普通配置法 <struts>     <package name="struts2" extends="struts-default">         <interceptors>             <interceptor name="myInterceptor" class="edu.hust.interceptor.

struts2框架之自定义拦截器和配置

struts框架中也存在拦截器,只不过系统自动调用.框架自带的拦截器的配置文件所在的位置为: java Resources--->Libraries--->struts2-core-2.3.36.jar(核心包)--->struts-default.xml 这个配置文件中放置的是框架所有的拦截器,拦截器放置在拦截器栈中<interceptor-stack>.在配置文件中有一个基本拦截器栈,我们如果需要使用拦截器的时候,调用基本拦截器就可以了. 如果我们想要实现自己定义的功能,

Struts2 拦截器与Spring AOP的区别

在学习Spring AOP技术的同时,发现其实与以前做过的拦截器的功能很类似,于是开始抱着这两者之间有什么关系的问题进行深入研究. 我们知道struts2使用拦截器主要是用来处理用户的请求,OGNL的使用,表单验证 等. 而spring的拦截器,主要体现在AOP的事务管理方面,还有比如一些错误或者异常的日志的显示 也是通过配置spring的log拦截器来实现的. Struts的拦截器是针对Struts的,比如SSH项目都会去使用AOP ,如果是单纯的STRUTS项目 自然使用Struts本身的拦

Struts2拦截器和标签

一.struts2拦截器 1.struts2是框架,封装了很多的功能,struts2里面封装的功能都是在拦截器里面. 2 struts2里面封装了很多的功能,有很多拦截器,不是每次这些拦截器都执行,每次执行默认的拦截器. 3 struts2里面默认拦截器位置,在struts2-core.jar jar包里面有一个struts-default.xml文件,在里面配置了默认拦截器. 4拦截器在action被创建之后,方法执行之前执行. 5拦截器的底层使用的两个原理 (1)aop思想:struts2的