Struts2
拦截器详细配置过程
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
>
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
方法后
,
在渲染视图之前做一些事情;让某个类去实现这个接口;
然后向需要它的拦截器中注册进去如下代码:
public
class
MyInterceptor3
extends
MethodFilterInterceptor {
private
static
final
long
serialVersionUID
= 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;
}
}
引:http://www.blogjava.net/zzzlyr/archive/2009/10/12/297998.html
分享到:
相关推荐
教程名称:浪曦Struts2系列视频教程课程目录:【】1 Struts2入门与配置【】10 Struts2的核心 拦截器【】11 Struts2的核心 拦截器续【】12 Struts2的文件上传和下载【】13 Struts2的文件上传和下载续【】14 Struts2的...
Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与Servlet API完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,...
4.3.1 扩展拦截器接口的自定义拦截器配置 54 4.3.2 继承抽象拦截器的自定义拦截器配置 56 4.3.3 继承方法拦截器的自定义拦截器配置 58 4.4 Struts2文件上传拦截器应用 61 4.4.1 Struts2文件上传功能开发 61 4.4.2 ...
2、拦截器不依赖于servlet容器,通过动态代理实现,过滤器依赖于servlet容器 3、拦截器在方法前后,异常前后等调用,而过滤器只能在请求前和请求后各调一次。 4、拦截器可以利用依赖注入,因此在spring框架程序中,...
Struts 2框架本身大致可以分为3个部分:核心控制器FilterDispatcher、业务控制器Action和用户实现的企业业务逻辑组件...Struts 2框架按照模块来划分,可以分为Servlet Filters、Struts核心模块、拦截器和用户实现部分。
4.3 研究内建的Struts 2拦截器 67 4.3.1 工具拦截器 67 4.3.2 数据转移拦截器 67 4.3.3 工作流拦截器 69 4.3.4 其他拦截器 72 4.3.5 内建的拦截器栈 73 4.4 声明拦截器 74 4.4.1 声明独立的拦截器和拦截器栈 74 ...
但在调用之前,ActionInvocation会根据配置加载Action相关的所有Interceptor(拦截器)。 一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果result。 Struts 2的核心控制器是...
本部分主要介绍struts.xml的常用配置。...Struts2框架中核心组件就是Action、拦截器等,Struts2框架使用包来管理Action和拦截器等。每个包就是多个Action、多个拦截器、多个拦截器引用的集合。 ...
-- 配置核心拦截器 --> <filter-name>struts2 <!-- Filter的实现类 struts2.5 --> org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter <!-- 拦截所有的url --> ...
Struts2框架中核心组件就是Action、拦截器等,Struts2框架使用包来管理Action和拦截器等。每个包就是多个Action、多个拦截器、多个拦截器引用的集合。 在struts.xml文件中package元素用于定义包配置,每个package...
Struts2的核心组成部分是Action,拦截器和结果页。 Struts2提供了许多方法来创建Action类,并通过struts.xml中或通过注释进行配置。我们可以创建自己的拦截器实现常见任务。 Struts2中自带了很多的标签,并使用...
可以直接运行,并对整合spring和struts2步骤及需要注意的事项进行类总结 整合spring和struts2总结 1.将struts2和spring中的库文件复制...— 如果没有使用Spring ObjectFactory,提供了2个拦截器来自动装配action。
Struts2框架简介 Struts2历史 Struts2与MVC Struts2体系介绍 Struts2体系架构 ...Struts2拦截器 默认配置文件struts-default.xml概要说明 Struts2核心配置文件Struts.xml详解 Struts2的简单开发和配置
struts2机制、关键流程、拦截器、action、配置文件等
1、MVC 概述 2、Struts1.x简述 3、Struts2概述 4、编写一个struts2应用程序 5、Struts2的核心配置文件 6、Action的实现 7、拦截器
XWork是一个通用的命令框架,它提供了很多核心的功能,例如actions,验证和拦截器,它可以完全独立于执行上下文运行,并提供了一个内部的依赖注入机制,用来做配置和工厂实现的管理。 而WebWork则是一个完全独立的上...
拦截器是Struts2框架的核心组成部分,通过本章的学习,应该掌握如下知识点: 了解AOP设计思想。 能够使用AOP设计思路,分离横切关注点 掌握Java中提供的动态代理方式实现拦截 了解拦截在开发中的意义 掌握Struts2...
· 引入拦截器: Struts 2为拦截器(interceptor)提供了全面支持。拦截器可在Action类执行前后加以执行。拦截器经配置后,可以把工作流程或者验证等常见功能作用到请求上。所有请求通过一组拦截器传送,之后再发送到...
Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与Servlet API完全脱离开,所以Struts 2可以理解为WebWork的更新产品。因为Struts 2和Struts 1有着太大的变化,...