- 浏览: 720467 次
- 性别:
- 来自: 西安
文章分类
最新评论
-
cuqing:
laogao598599 写道匿名内部类不一定是局部内部类,还 ...
匿名内部类访问外部类中的局部变量必须是final属性 -
laogao598599:
匿名内部类不一定是局部内部类,还可以作为成员变量
匿名内部类访问外部类中的局部变量必须是final属性 -
stand_star:
非常给力!
struts2验证规则配置文件命名方式 -
wenlongsust:
嗯, 将返回值修改为html的确就可以了
EasyUI form ajax submit后,在IE下提示下载内容的解决办法 -
勇往直前wwt:
这样是自动增长,但每次id还得插入,如何只插入其他字段而让id ...
把主键定义为自动增长标识符类型
拦截器简介:
1:拦截器-Exception
<interceptor name="exception" class="com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor"/>
配置Exception,如果出现什么样的异常就跳转到对应的页面。
在action执行之后,抛出异常才会被调用的。
2:拦截器alias
在action执行之前执行
The aim of this Interceptor is to alias a named parameter to a different named parameter. By acting as the glue between actions sharing similiar parameters (but with different names), it can help greatly with action chaining.
主要用在chain的action,如果从一个action直接跳转到另外一个action,可能需要传递参数值,而参数的名称是不一样的,这个时候alias拦截器就起作用了。
3:拦截器-ServletConfig
在action执行之前执行
An interceptor which sets action properties based on the interfaces an action implements. For example, if the action implements ParameterAware then the action context's parameter map will be set on it.
配置了这个拦截器后,action可以实现某些接口,就可以自动获取到某些对象,例如request和response对象。
详细的例子:com.work.core.action.OurActionSupport
4:拦截器-prepare
在action执行之前执行
必须实现Preparable接口,com.opensymphony.xwork2.Preparable
<interceptor name="prepare" class="com.opensymphony.xwork2.interceptor.PrepareInterceptor"/>
可以通过setAlwaysInvokePrepare方法,来决定prepare()是否要被执行。
和validate方法一样,你可以在action中设定prepareList()方法,那么这个方法就会被首先执行,然后在执行prepare方法。(prepareDoList也可以)。
先执行prepareList如果这个找不到就寻找prepareDoList方法,如果都找不到就不执行。
需要测试。
(注意:需要使用呢params prepare params 拦截器的配置方式)
Prepare方法,当前action中的任何方法执行都会执行到他;
import com.opensymphony.xwork2.Preparable;
public void prepare() throws Exception {
if(log.isInfoEnabled())
log.info("执行prepare()方法了");
}
/**
* 测试失败!
* @throws Exception
*/
public void prepareLoadForEdit() throws Exception {
if(log.isInfoEnabled())
log.info("执行prepareLoadForEdit()方法了");
try {
if (labid == null) {
//lab = null;
log.debug("labid==null");
} else {
lab = labServiceDao.loadForEditById(labid);
log.debug("lab="+lab);
}
} catch (DataAccessException e) {
if (log.isErrorEnabled()) {
log.error("根据labid"+labid+"查询出错。", e);
}
}
}
5:拦截器-i18n
在action执行之前执行
<interceptor name="i18n" class="com.opensymphony.xwork2.interceptor.I18nInterceptor"/>
实现国际化的功能。
6:拦截器-chain
在action执行之前执行
如果action实现了接口com.opensymphony.xwork2.Unchainable,那么对应的属性将不再拷贝。
An interceptor that copies all the properties of every object in the value stack to the currently executing object, except for any object that implements Unchainable. A collection of optional includes and excludes may be provided to control how and which parameters are copied. Only includes or excludes may be specified. Specifying both results in undefined behavior. See the javadocs for OgnlUtil.copy(Object, Object, java.util.Map, java.util.Collection, java.util.Collection) for more information.
It is important to remember that this interceptor does nothing if there are no objects already on the stack. This means two things: One, you can safely apply it to all your actions without any worry of adverse affects. Two, it is up to you to ensure an object exists in the stack prior to invoking this action. The most typical way this is done is through the use of the chain result type, which combines with this interceptor to make up the action chaining feature.
7:拦截器- scopedModelDriven
在action执行之前执行
你的action实现com.opensymphony.xwork2.interceptor. ScopedModelDriven接口;
如果一个Action实现了ScopedModelDriven,则这个拦截器会从相应的Scope中取出model调用Action的setModel方法将其放入Action内部。
8:拦截器- modelDriven
在action执行之前执行
实现ModelDriven接口
Watches for ModelDriven actions and adds the action's model on to the value stack.
Note: The ModelDrivenInterceptor must come before the both StaticParametersInterceptor and ParametersInterceptor if you want the parameters to be applied to the model.
9:拦截器- fileUpload
上传文件的代码,在action执行之前执行,清除临时文件在action之后执行。
<interceptor name="fileUpload" class="org.apache.struts2.interceptor.FileUploadInterceptor"/>
10:拦截器- checkbox在action执行之前执行
org.apache.struts2.interceptor.CheckboxInterceptor
11:拦截器- staticParams
在action执行之前执行<interceptor name="staticParams" class="com.opensymphony.xwork2.interceptor.StaticParametersInterceptor"/>This interceptor populates the action with the static parameters defined in the action configuration. If the action implements Parameterizable, a map of the static parameters will be also be passed directly to the action.
在struts的xml配置文件中配置的参数
12:拦截器-params
在action执行之前执行
interceptor name="params" class="com.opensymphony.xwork2.interceptor.ParametersInterceptor"/>
将所有的参数值放入到stack中去。(Ognl)
ParameterNameAware接口
com.opensymphony.xwork2.interceptor.ParameteraNameAware
实现了此接口,可以设定允许哪些action的属性的值被放入stack中去。
13:拦截器-conversionError
在action执行之前执行
转换器
<interceptor name="conversionError" class="org.apache.struts2.interceptor.StrutsConversionErrorInterceptor"/>
将错误从ActionContext中添加到Action的属性字段中
14:拦截器- validation(xml自动校验配置文件)
在action执行之前执行
使用action-validation.xml文件中定义的内容校验提交的数据。
15:拦截器-workflow(执行action中的validate方法)
在action执行之前执行
调用Action的validate方法,一旦有错误返回,重新定位到INPUT画面
<interceptor name="workflow" class="com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor"/>
将cookie的值,放到valuestack中去,
你也可以实现接口CookiesAware,在程序中编程设置。
17:拦截器- createSession
org.apache.struts2.interceptor.CreateSessionInterceptor
拦截器-其他
Debugging Interceptor
debugging
提供不同的调试用的页面来展现内部的数据状况。
Execute and Wait Interceptor
execAndWait
在后台执行Action,同时将用户带到一个中间的等待页面。
Message Store Interceptor
store
存储或者访问实现ValidationAware接口的Action类出现的消息,错误,字段错误等。
Scope Interceptor
scope
将Action状态存入session和application的简单方法。
Roles Interceptor
roles
确定用户是否具有JAAS指定的Role,否则不予执行。
Token Interceptor
token
通过Token来避免双击
Token Session Interceptor
tokenSession
和Token Interceptor一样,不过双击的时候把请求的数据存储在Session中
Parameter Filter Interceptor
N/A
从参数列表中删除不必要的参数
Profiling Interceptor
profiling
通过参数激活profile
16:拦截器-cookie
在拦截器中获取action的属性值
// 找到对应的临时文件的路径
String tempFilePath = (String) invocation.getStack().findValue("tempFilePath");
给拦截器栈中的某个拦截器配置参数的方法
<!DOCTYPE xwork PUBLIC
"-//OpenSymphony Group//XWork 1.1.1//EN"
"http://www.opensymphony.com/xwork/xwork-1.1.1.dtd"
>
<xwork>
<include file="xwork-test-beans.xml" />
<package name="default">
<interceptors>
<interceptor name="timer" class="com.opensymphony.xwork2.interceptor.TimerInterceptor"/>
<interceptor name="test" class="com.opensymphony.xwork2.mock.MockInterceptor">
<param name="foo">fooDefault</param>
</interceptor>
<interceptor-stack name="defaultStack">
<interceptor-ref name="timer"/>
<interceptor-ref name="test"/>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="defaultStack" />
<action name="TestInterceptorParam" class="com.opensymphony.xwork2.SimpleAction">
<interceptor-ref name="defaultStack">
<param name="test.expectedFoo">expectedFooValue</param>
</interceptor-ref>
</action>
<action name="TestInterceptorParamOverride" class="com.opensymphony.xwork2.SimpleAction">
<interceptor-ref name="defaultStack">
<param name="test.foo">foo123</param>
<param name="test.expectedFoo">expectedFooValue2</param>
</interceptor-ref>
defaultStack中有个拦截器的名称为test,test拦截器中有配置参数的get和set方法。
</action>
</package>
</xwork>
1:拦截器-Exception
<interceptor name="exception" class="com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor"/>
配置Exception,如果出现什么样的异常就跳转到对应的页面。
在action执行之后,抛出异常才会被调用的。
2:拦截器alias
在action执行之前执行
The aim of this Interceptor is to alias a named parameter to a different named parameter. By acting as the glue between actions sharing similiar parameters (but with different names), it can help greatly with action chaining.
主要用在chain的action,如果从一个action直接跳转到另外一个action,可能需要传递参数值,而参数的名称是不一样的,这个时候alias拦截器就起作用了。
3:拦截器-ServletConfig
在action执行之前执行
An interceptor which sets action properties based on the interfaces an action implements. For example, if the action implements ParameterAware then the action context's parameter map will be set on it.
配置了这个拦截器后,action可以实现某些接口,就可以自动获取到某些对象,例如request和response对象。
详细的例子:com.work.core.action.OurActionSupport
4:拦截器-prepare
在action执行之前执行
必须实现Preparable接口,com.opensymphony.xwork2.Preparable
<interceptor name="prepare" class="com.opensymphony.xwork2.interceptor.PrepareInterceptor"/>
可以通过setAlwaysInvokePrepare方法,来决定prepare()是否要被执行。
和validate方法一样,你可以在action中设定prepareList()方法,那么这个方法就会被首先执行,然后在执行prepare方法。(prepareDoList也可以)。
先执行prepareList如果这个找不到就寻找prepareDoList方法,如果都找不到就不执行。
需要测试。
(注意:需要使用呢params prepare params 拦截器的配置方式)
Prepare方法,当前action中的任何方法执行都会执行到他;
import com.opensymphony.xwork2.Preparable;
public void prepare() throws Exception {
if(log.isInfoEnabled())
log.info("执行prepare()方法了");
}
/**
* 测试失败!
* @throws Exception
*/
public void prepareLoadForEdit() throws Exception {
if(log.isInfoEnabled())
log.info("执行prepareLoadForEdit()方法了");
try {
if (labid == null) {
//lab = null;
log.debug("labid==null");
} else {
lab = labServiceDao.loadForEditById(labid);
log.debug("lab="+lab);
}
} catch (DataAccessException e) {
if (log.isErrorEnabled()) {
log.error("根据labid"+labid+"查询出错。", e);
}
}
}
5:拦截器-i18n
在action执行之前执行
<interceptor name="i18n" class="com.opensymphony.xwork2.interceptor.I18nInterceptor"/>
实现国际化的功能。
6:拦截器-chain
在action执行之前执行
如果action实现了接口com.opensymphony.xwork2.Unchainable,那么对应的属性将不再拷贝。
An interceptor that copies all the properties of every object in the value stack to the currently executing object, except for any object that implements Unchainable. A collection of optional includes and excludes may be provided to control how and which parameters are copied. Only includes or excludes may be specified. Specifying both results in undefined behavior. See the javadocs for OgnlUtil.copy(Object, Object, java.util.Map, java.util.Collection, java.util.Collection) for more information.
It is important to remember that this interceptor does nothing if there are no objects already on the stack. This means two things: One, you can safely apply it to all your actions without any worry of adverse affects. Two, it is up to you to ensure an object exists in the stack prior to invoking this action. The most typical way this is done is through the use of the chain result type, which combines with this interceptor to make up the action chaining feature.
7:拦截器- scopedModelDriven
在action执行之前执行
你的action实现com.opensymphony.xwork2.interceptor. ScopedModelDriven接口;
如果一个Action实现了ScopedModelDriven,则这个拦截器会从相应的Scope中取出model调用Action的setModel方法将其放入Action内部。
8:拦截器- modelDriven
在action执行之前执行
实现ModelDriven接口
Watches for ModelDriven actions and adds the action's model on to the value stack.
Note: The ModelDrivenInterceptor must come before the both StaticParametersInterceptor and ParametersInterceptor if you want the parameters to be applied to the model.
9:拦截器- fileUpload
上传文件的代码,在action执行之前执行,清除临时文件在action之后执行。
<interceptor name="fileUpload" class="org.apache.struts2.interceptor.FileUploadInterceptor"/>
10:拦截器- checkbox在action执行之前执行
org.apache.struts2.interceptor.CheckboxInterceptor
11:拦截器- staticParams
在action执行之前执行<interceptor name="staticParams" class="com.opensymphony.xwork2.interceptor.StaticParametersInterceptor"/>This interceptor populates the action with the static parameters defined in the action configuration. If the action implements Parameterizable, a map of the static parameters will be also be passed directly to the action.
在struts的xml配置文件中配置的参数
12:拦截器-params
在action执行之前执行
interceptor name="params" class="com.opensymphony.xwork2.interceptor.ParametersInterceptor"/>
将所有的参数值放入到stack中去。(Ognl)
ParameterNameAware接口
com.opensymphony.xwork2.interceptor.ParameteraNameAware
实现了此接口,可以设定允许哪些action的属性的值被放入stack中去。
13:拦截器-conversionError
在action执行之前执行
转换器
<interceptor name="conversionError" class="org.apache.struts2.interceptor.StrutsConversionErrorInterceptor"/>
将错误从ActionContext中添加到Action的属性字段中
14:拦截器- validation(xml自动校验配置文件)
在action执行之前执行
使用action-validation.xml文件中定义的内容校验提交的数据。
15:拦截器-workflow(执行action中的validate方法)
在action执行之前执行
调用Action的validate方法,一旦有错误返回,重新定位到INPUT画面
<interceptor name="workflow" class="com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor"/>
将cookie的值,放到valuestack中去,
你也可以实现接口CookiesAware,在程序中编程设置。
17:拦截器- createSession
org.apache.struts2.interceptor.CreateSessionInterceptor
拦截器-其他
Debugging Interceptor
debugging
提供不同的调试用的页面来展现内部的数据状况。
Execute and Wait Interceptor
execAndWait
在后台执行Action,同时将用户带到一个中间的等待页面。
Message Store Interceptor
store
存储或者访问实现ValidationAware接口的Action类出现的消息,错误,字段错误等。
Scope Interceptor
scope
将Action状态存入session和application的简单方法。
Roles Interceptor
roles
确定用户是否具有JAAS指定的Role,否则不予执行。
Token Interceptor
token
通过Token来避免双击
Token Session Interceptor
tokenSession
和Token Interceptor一样,不过双击的时候把请求的数据存储在Session中
Parameter Filter Interceptor
N/A
从参数列表中删除不必要的参数
Profiling Interceptor
profiling
通过参数激活profile
16:拦截器-cookie
在拦截器中获取action的属性值
// 找到对应的临时文件的路径
String tempFilePath = (String) invocation.getStack().findValue("tempFilePath");
给拦截器栈中的某个拦截器配置参数的方法
<!DOCTYPE xwork PUBLIC
"-//OpenSymphony Group//XWork 1.1.1//EN"
"http://www.opensymphony.com/xwork/xwork-1.1.1.dtd"
>
<xwork>
<include file="xwork-test-beans.xml" />
<package name="default">
<interceptors>
<interceptor name="timer" class="com.opensymphony.xwork2.interceptor.TimerInterceptor"/>
<interceptor name="test" class="com.opensymphony.xwork2.mock.MockInterceptor">
<param name="foo">fooDefault</param>
</interceptor>
<interceptor-stack name="defaultStack">
<interceptor-ref name="timer"/>
<interceptor-ref name="test"/>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="defaultStack" />
<action name="TestInterceptorParam" class="com.opensymphony.xwork2.SimpleAction">
<interceptor-ref name="defaultStack">
<param name="test.expectedFoo">expectedFooValue</param>
</interceptor-ref>
</action>
<action name="TestInterceptorParamOverride" class="com.opensymphony.xwork2.SimpleAction">
<interceptor-ref name="defaultStack">
<param name="test.foo">foo123</param>
<param name="test.expectedFoo">expectedFooValue2</param>
</interceptor-ref>
defaultStack中有个拦截器的名称为test,test拦截器中有配置参数的get和set方法。
</action>
</package>
</xwork>
发表评论
-
StrutsUtils 未定义”错误
2011-04-02 00:14 1889使用s:optiontransferselect标签必须放在s ... -
struts2.xml method属性不配置时,url链接不能带参数
2011-03-31 14:21 1580如下: <action name="linkA ... -
s:iterator使用begin、end、step
2011-02-28 18:29 9525<s:iterator value="list ... -
关于struts2页面数据处理的分析
2011-01-25 09:31 2719关于struts2页面数据处理的分析 前言:struts2中 ... -
s:doubleselect不换行
2011-01-21 13:55 1789属性 labelposition=left 换行 labelp ... -
struts2 中 OGNL表达式的使用
2010-12-17 13:46 1196GNL是Object Graph Navigation L ... -
webwork中变量的存放有两种方式
2010-12-17 13:37 19531.web app通用的方式,即是:放入sesson,requ ... -
paramsPrepareParamsStack
2010-12-17 12:43 1914paramsPrepareParamsStack在Struts ... -
struts2自己定义拦截器
2010-12-17 12:42 1512Interceptor(拦截器), ... -
struts2与webWork2的区别
2010-12-17 11:31 37071.Struts2更加优雅一些,至少Action变成了一个纯粹 ... -
配置了sitemesh后用struts2标签就报错
2010-12-17 09:49 1648配置了sitemesh后用struts2标签就报错,用ognl ... -
struts2验证器
2010-12-15 11:25 1328在Struts2框架中Validator必须在系统中注册,如果 ... -
struts2 json插件
2010-12-15 11:24 1222<package name="default& ... -
STRUTS2 ACTION的跳转类型说明
2010-12-15 11:23 1301chain:Action链式处理的结果类型,也就是将结果转发到 ... -
struts2调用javabean中的方法
2010-09-27 16:28 16361.<s:set name="str" ... -
struts2 result type=chain、dispatcher、redirect
2010-08-23 17:14 2989dispatcher:用于页面转发,页面跳转过程一直是同一个线 ... -
struts2取url参数
2010-08-16 15:21 2120取url参数,用request.getParameter(na ... -
struts2.1.8.1+jquery1.4.2返回json数据
2010-08-16 10:10 13311、引入包(本文中的包全部引自struts-2.1.8.1\l ... -
struts2 alert 错误消息
2010-08-05 17:55 1233<s:if test="hasFieldErr ... -
struts2的result type="plainText"
2010-07-13 14:46 63241.作用:将response中的数据直接打印到当前页面指定的地 ...
相关推荐
Struts2拦截器(Interceptor) Struts2拦截器(Interceptor)
在Struts2中,拦截器(Interceptors)扮演着核心角色,增强了框架的功能和灵活性。这篇文章将深入探讨Struts2拦截器的概念、工作原理以及如何在实际应用中使用它们。 **一、什么是Struts2拦截器** 拦截器是基于AOP...
2. **拦截器链**:在Struts2中,多个拦截器可以形成一个拦截器链,每个拦截器按照定义的顺序依次执行。如果所有拦截器都允许Action执行,那么Action的结果将被传递到下一个拦截器,直到整个链执行完毕。 ### 二、...
在Struts2中,拦截器(Interceptor)扮演着核心角色,它们允许开发者在Action执行前后插入自定义的逻辑,如日志、权限检查、事务管理等。现在我们将深入探讨Struts2的拦截器机制及其实例应用。 ### 一、Struts2拦截...
### Struts2拦截器详解 #### 一、Struts2拦截器概述 Struts2框架作为Java Web开发中的一种流行框架,其核心组件之一便是**拦截器**。拦截器不仅在Struts2中扮演着重要角色,更是整个框架灵活性与扩展性的基石。...
Struts2拦截器.ppt Struts2拦截器.ppt Struts2拦截器.ppt
标题“struts2拦截器”指的是Struts2框架中的拦截器机制,这是一个关键的组件,可以让我们在不修改实际业务代码的情况下,实现对请求处理流程的扩展和定制。 描述中提到的“基于struts2的拦截器测试,实现了页面的...
在这个“Struts2拦截器实现权限控制demo”中,我们将深入探讨如何利用拦截器来实现细粒度的用户权限管理。 首先,我们需要了解Struts2中的拦截器工作原理。拦截器是基于Java的动态代理模式实现的,它们按照配置的...
拦截器是Struts2框架的核心特性之一,它们扮演着处理请求、增强功能和实现业务逻辑的角色。在Struts2中,拦截器就像过滤器一样工作,通过链式调用在动作执行前后进行预处理和后处理。 首先,我们来理解一下拦截器的...
### Struts2拦截器的使用方法 #### 一、Struts2拦截器概述 Struts2框架中的拦截器(Interceptor)是一种重要的机制,用于在Action执行前后进行一系列处理,比如参数验证、数据预处理等。它能够帮助开发者更加灵活...
当请求到达控制器时,Struts2会依次调用这个栈中的拦截器,每个拦截器都有机会处理请求,然后决定是否将请求传递给下一个拦截器或直接返回响应。 创建一个简单的Struts2拦截器,你需要遵循以下步骤: 1. 创建拦截...
在Struts2中,拦截器扮演着至关重要的角色,它们是实现MVC(Model-View-Controller)架构的关键组件之一。拦截器允许开发者在动作执行前后插入自定义逻辑,比如日志记录、权限检查、数据验证等,而无需修改核心业务...
拦截器是Struts2框架的核心组成部分,它们在请求处理流程中起到了关键的作用。在本文中,我们将深入探讨Struts2拦截器的工作原理。 ### 一、拦截器概念 拦截器是基于Java的动态代理机制实现的,它允许我们在Action...
拦截器是Struts2框架的一个重要组成部分,能够帮助开发者实现一些在请求处理前后执行的通用逻辑,如日志记录、权限验证、数据校验等。在本场景中,我们将探讨如何使用Struts2拦截器来实现对不文明字迹或者敏感词汇的...
首先,理解拦截器的定义:拦截器是AOP(面向切面编程)的一个概念,在Struts2中,拦截器是基于Java的动态代理机制实现的。它们是一系列实现了`Interceptor`接口的类,可以在Action执行前后插入额外的行为。这些行为...
在Struts2中,拦截器(Interceptor)扮演着至关重要的角色,它允许开发者在动作执行前后插入自定义逻辑,如日志记录、权限验证等。在本案例中,我们将深入探讨如何使用Struts2拦截器实现登录权限验证,同时结合...
在本学习案例中,重点在于Struts2的拦截器(Interceptor)功能,这是Struts2的核心特性之一,它允许开发者在Action执行前后进行自定义处理,实现了灵活的业务逻辑控制和增强的功能。 首先,我们来理解一下什么是...
Struts2是一个强大的MVC框架,它通过使用拦截器(Interceptor)来实现业务逻辑与表现层的解耦,提供了一种灵活的扩展机制。在Struts2中,拦截器是AOP(面向切面编程)的一种实现,它可以监控、修改或增强方法调用的...
这篇博客文章“struts2拦截器实现权限控制”深入探讨了如何利用Struts2的拦截机制来执行用户访问权限的验证。 在Struts2中,拦截器是基于AOP(面向切面编程)的概念设计的,它们在Action调用前后执行,可以添加额外...
拦截器是Struts2框架的核心组件之一,它允许开发者在动作执行前后插入自定义逻辑,实现如权限验证、日志记录、性能优化等多种功能。在"Struts2 拦截器注解"这个主题中,我们将深入探讨如何利用注解来简化拦截器的...