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框架的重要组成部分,它们允许开发者在动作执行前后插入自定义逻辑,以实现如日志、权限验证、数据校验等常见功能。下面将详细讲解Struts2的核心拦截器以及如何在项目中使用它们。 1. **Struts2...
在Struts2中,拦截器(Interceptors)扮演着核心角色,增强了框架的功能和灵活性。这篇文章将深入探讨Struts2拦截器的概念、工作原理以及如何在实际应用中使用它们。 **一、什么是Struts2拦截器** 拦截器是基于AOP...
2. **配置拦截器**:在`struts.xml`配置文件中定义拦截器,指定其执行顺序和关联的Action。 3. **注册拦截器**:将自定义拦截器加入到`struts-default`或`struts-plugin`拦截器栈中,或者创建新的拦截器栈并应用到...
在Struts2框架中,拦截器扮演着至关重要的角色,它们是实现业务逻辑、验证、日志记录等功能的核心组件。下面将详细探讨Struts2拦截器的源码及其工作原理。 首先,理解拦截器的定义:拦截器是AOP(面向切面编程)的...
本篇将深入探讨Struts2的核心拦截器以及其工作原理。 在Struts2中,拦截器是一个实现了`Interceptor`接口的类,它通过在动作执行前后插入额外的处理逻辑,实现了对请求处理的增强。拦截器链是由多个拦截器按照特定...
在Struts2中,拦截器(Interceptor)扮演着核心角色,它们允许开发者在Action执行前后插入自定义的逻辑,如日志、权限检查、事务管理等。现在我们将深入探讨Struts2的拦截器机制及其实例应用。 ### 一、Struts2拦截...
1. **配置问题**:如果Struts2的配置文件(struts.xml或struts.properties)中拦截器配置有误,可能会导致拦截器链无法正常工作,从而影响到Result的执行。 2. **拦截器逻辑错误**:如果自定义的拦截器在处理过程中...
在本学习案例中,重点在于Struts2的拦截器(Interceptor)功能,这是Struts2的核心特性之一,它允许开发者在Action执行前后进行自定义处理,实现了灵活的业务逻辑控制和增强的功能。 首先,我们来理解一下什么是...
在Struts2的核心配置文件`struts.xml`中,我们可以定义拦截器链,指定哪些拦截器应用于哪些Action。 权限控制是web应用中不可或缺的一部分,它可以防止未经授权的用户访问特定资源。在Struts2中,我们可以通过拦截...
在Struts2中,拦截器(Interceptor)是核心功能之一,用于增强应用的功能和处理业务逻辑。拦截器是基于AOP(面向切面编程)的概念,可以在动作执行前后插入额外的操作,比如日志记录、权限检查、数据验证等。 标题...
通过对Struts2拦截器的深入分析,我们可以看出拦截器不仅是Struts2框架的核心组成部分,也是实现代码重用、提高代码质量的有效手段。理解并合理运用拦截器,对于提升项目的开发效率和代码质量具有重要意义。
在Struts2中,拦截器(Interceptor)扮演着核心角色,它们允许开发者在动作执行前后插入自定义的逻辑,如日志、权限检查、数据验证等。本示例将探讨如何在Struts2中使用拦截器。 首先,我们需要理解Struts2拦截器的...
拦截器是Struts2框架的核心特性之一,它们扮演着处理请求、增强功能和实现业务逻辑的角色。在Struts2中,拦截器就像过滤器一样工作,通过链式调用在动作执行前后进行预处理和后处理。 首先,我们来理解一下拦截器的...
总结来说,Struts2拦截器是框架的核心部分,它们提供了一种灵活的方式,以实现各种功能,如日志记录、性能监控、权限控制等,同时保持代码的整洁和模块化。通过对`98struts201`文件的深入研究,我们可以更好地掌握...
### Struts2拦截器的使用方法 #### 一、Struts2拦截器概述 ...通过以上介绍,我们可以了解到Struts2拦截器的基本使用方法及配置方式,这对于理解Struts2框架的工作机制以及优化应用架构具有重要意义。
拦截器是Struts2框架的核心组件之一,它们在Action调用前后执行,提供了诸如日志记录、权限验证、数据校验等额外功能,极大地提高了代码的可复用性和可维护性。 在Struts2中,拦截器的使用主要基于两个方面:配置...
1. **内置拦截器**:Struts2提供了多种内置拦截器,例如`modelDriven`、`servletConfig`、`chain`、`debugging`等,这些拦截器已经实现了常用的功能,可以直接在配置文件中引用使用。 2. **自定义拦截器**:对于...
2. **拦截器配置**: - 在Struts2配置文件中定义拦截器,比如创建一个名为`myInterceptor`的拦截器,指定其类为`com.zzz.struts2.interceptor.MyInterceptor`,并设置系统初始化参数,如`张钊钊</param>`。 - 创建...
Struts2.X 拦截器是Apache Struts框架的核心组件之一,它是基于拦截器模式实现的,使得开发者能够方便地扩展和定制应用程序的行为。在Struts2中,拦截器扮演着中间件的角色,它在Action执行前后进行处理,可以进行如...