搜档网
当前位置:搜档网 › struts2拦截器配置详解

struts2拦截器配置详解

struts2拦截器配置详解
struts2拦截器配置详解

Struts2拦截器详细配置过程

1:所有拦截器的超级接口Interceptor,拦截器去实现这个接口; 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方式注入到拦截器类中;

class="com.zzz.struts2.interceptor.MyInterceptor

">

张钊钊

ref>

也可以在使用拦截器的时候给它设置参数:

就是在一个action的reslut下面配置上如下:

class="com.zzz.struts2.action.RegisterAction

">

/success.jsp

/register.jsp

welcome

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

1:拦截器和拦截器栈是一个级别的,也就是说一个拦截器栈中包括许多拦截器,一个拦截器栈中还可以包括许多拦截器栈,配置如下方式:

class="com.zzz.struts2.interceptor.MyInterceptor

">

张钊钊

ref>

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

class="com.zzz.struts2.interceptor.MyInterceptor

">

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

如果想改变系统默认的拦截器栈,可以这样配置:

其中myStack是自己定义的拦截器栈名字;

如果拦截器栈中有多个拦截器,在执行action之前的顺序跟配置拦截器的顺序一致,而在action之后执行的顺序是相反的;

3:抽象的拦截器类AbstractInterceptor

1:Interceptor这个超级拦截器接口,有三方法需要实现,但是如果不想使用init();

destroy())方法,可以去继承这个抽象拦截器类;

和destroy(

它的使用跟上边的没有什么区别;

4:方法过滤拦截器MethodFilterInterceptor

1:上边的拦截器都要是针对整个action的,如果针对某个方法进行拦截可以去继承这个类;它的使用跟上边的使用方法差不多,只是需要要配置它对那个方法进行拦截,方法过滤拦截器最好不要配置到自己设置默认的拦截器栈里边,自己手动配置.

interceptor-ref name="myInterceptor3">

execute

execute

其中includeMethods,excludeMethods是固定写法:includeMethods包含拦截那些

方法,多个方法需要用”,”隔开;excludeMehtods是排除拦截的那些方法;

5:

1:它的鉴听点在拦截器执行完某个action方法后,在渲染视图之前做一些事情;让某个类去实现这个接口;然后

向需要它的拦截器中注册进去如下代码:

publicclass MyInterceptor3extends MethodFilterInterceptor{ privatestaticfinallong g serialVersionUID=3756655410194005443L;

privatestaticfinallon

@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 interceptor3finshed!");

return result;

}

}

SCME_STRUTS2试卷

--------------------------------------装--------------------------------------订------------------------------线---------------------------------------- **学院课程考试试卷 课程名称:《使用Struts2开发基于MVC设计模式的企业级应用》(A)卷 年级:班级: 姓名:_______________ 学号:_________________ 考试(考查) 闭卷 选择题(每题2分,共计100分) 1.在控制器类中一般需要添加相应属性的( A )和(C )。(选两项) A.setter方法 B.as方法 C.getter方法 D.is方法 2.业务控制器需要在( B )配置文件中进行配置 A.web.xml B.struts.xml C.struts2.xml D.webwork.xml 3.不属于Struts 2表单标签库的是( D )。 A. B. C. D.