欢迎来到天天文库
浏览记录
ID:38574893
大小:363.00 KB
页数:37页
时间:2019-06-15
《Struts2框架及应用——主要组件---作业与要求》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、3、Struts2的拦截器拦截器(Interceptor)是Struts2的核心组成部分。拦截器动态拦截Action调用的对象,它提供了一种机制,使开发者可以定义一个特定的功能模块,这个模块可以在Action执行之前或者之后运行,也可以在一个Action执行之前阻止Action执行。拦截器分为两类:Struts2提供的内建拦截器和用户自定义的拦截器。Struts2拦截器的自定义实现为了实现自定义拦截器,Struts2提供了Interceptor接口,以及对该接口实现的一个抽象拦截器类(AbstractInterceptor)。实现拦截器类一般可以实现I
2、nterceptor接口,或者直接继承AbstractInterceptor类。Struts2还提供了一个MethodFilterIntercepter类,该类是AbstractInterceptor类的子类,需要实现的拦截器支持方法过滤性,就继承MethodFilterIntercepter。用户自定义一个拦截器一般需要三步:(1)自定义一个实现Interceptor接口(或继承AbstractInterceptor或继承MethodFilterIntercepter)的类。(2)在struts.xml中注册上一步中定义的拦截器。(3)在需要使用的A
3、ction中引用上述定义的拦截器。1.拦截器接口:InterceptorStruts2提供的Interceptor接口(Interceptor.java)的代码如下:importcom.opensymphony.xwork2.ActionInvocation;importjava.io.Serializable;publicinterfaceInterceptorextendsSerializable{voiddestroy();voidinit();Stringintercept(ActionInvocationinvocation)throwsEx
4、ception;}Intercept方法是拦截器的核心方法,实现具体的拦截操作,返回一个字符串作为逻辑视图。与Action一样,如果拦截器能够成功调用Action,则Action中的execute()方法返回一个字符串类型值,作为逻辑视图,否则,返回开发者自定义的逻辑视图。2.抽象拦截器类:AbstractInterceptor抽象拦截器类(AbstractInterceptor),是对接口Interceptor的一种实现,其中,init()和destroy()方法是空实现。importcom.opensymphony.xwork2.ActionInv
5、ocation;publicabstractclassAbstractInterceptorimplementsInterceptor{publicvoidinit(){}publicvoiddestroy(){}publicabstractStringintercept(ActionInvocationinvocation)throwsException;}3.自定义拦截器:实现接口Intercepter(或继承AbstractInterceptor),并在interceptor方法中加入有关的处理代码,其代码格式如下:packageintercep
6、tor;publicclassMyInterceptorextendsAbstractInterceptor{publicStringintercept(ActionInvocationinvocation)throwsException{System.out.println("Before");//在Action之前调用Stringresult=invocation.invoke();/*invocation.invoke()方法检查是否还有拦截器,若有,则继续调用余下的拦截器,若没有,则执行action的业务逻辑,并返回值*/System.out.
7、println("After");returnresult;}}4.在Struts.xml中配置拦截器8、rceptorAction">/success.j
8、rceptorAction">/success.j
此文档下载收益归作者所有