- 浏览: 1021745 次
文章分类
最新评论
-
cjh_android:
我想你是对的,至少对于现实是对的,不过对于技术岗位竞争越来越激 ...
程序员的思考--终于确定了自己的技术发展方向 -
dongbiying:
现在情况如何 。。
创业,不能兼职 -
jackyrong:
ie 9 下时,老显示关闭窗口提示,有办法去掉么,就是关闭掉那 ...
jquery右下角弹窗效果 -
lmaxjj:
加点班如果都称得上是累,只能说明还没体会到真正的生活。。
IT男的进化论 -
馨雨轩:
IT男要进化需要先穿越
IT男的进化论
通过前几章介绍,读者应该明白在 Web 项目中,客户先在视图界面提交一个 HTTP 请求,在 Struts2 的 ServletDispatcher 接收请求时, Struts2 会查找配置文件,如 struts.xml 文件。根据 xml 文件中定义的拦截器配置,会去调用拦截器。如果配置了拦截器栈,则根据拦截器在拦截器栈中的前后顺序,一一进行调用。而 Struts2 自带的源代码中也提供了缺省的拦截器配置。
在第一章中,笔者曾经介绍了 Struts2 的各个文件夹内容,也说过在 src 文件夹中包含了 Struts2 的所有底层实现源代码,读者们可到自己安装 Struts2 的文件路径下找到 src\core\src\main\resources\ ,其中有个名为 struts-default.xml 。它是 Struts2 自定义的配置文件,其中有关拦截器的配置代码正是本节需要介绍的拦截器在 Struts2 中的缺省应用。
技术要点
本节代码说明 Struts2 中的拦截器缺省配置及其各拦截器的功能。
= 拦截器和拦截器栈的定义配置格式。
= Struts2 定义的各个拦截器功能介绍。
演示代码
<!------------------------------------------- 文件名: struts-default.xml-------------------------------->
<interceptors>
<interceptor name="alias"
class="com.opensymphony.xwork2.interceptor.AliasInterceptor"/>
……………
<interceptor name="roles"
class="org.apache.struts2.interceptor.RolesInterceptor" />
<!— 基础栈 -->
<interceptor-stack name="basicStack">
<interceptor-ref name="exception"/>
<interceptor-ref name="servletConfig"/>
<interceptor-ref name="prepare"/>
<interceptor-ref name="checkbox"/>
<interceptor-ref name="params"/>
<interceptor-ref name="conversionError"/>
</interceptor-stack>
<!— 校验和工作流栈 -->
<interceptor-stack name="validationWorkflowStack">
<interceptor-ref name="basicStack"/>
<interceptor-ref name="validation"/>
<interceptor-ref name="workflow"/>
</interceptor-stack>
<!— 文件上传栈 -->
<interceptor-stack name="fileUploadStack">
<interceptor-ref name="fileUpload"/>
<interceptor-ref name="basicStack"/>
</interceptor-stack>
<!— 模型驱动栈 -->
<interceptor-stack name="modelDrivenStack">
<interceptor-ref name="modelDriven"/>
<interceptor-ref name="basicStack"/>
</interceptor-stack>
<!—action 链栈 -->
<interceptor-stack name="chainStack">
<interceptor-ref name="chain"/>
<interceptor-ref name="basicStack"/>
</interceptor-stack>
<!-- i18n 国际化栈 -->
<interceptor-stack name="i18nStack">
<interceptor-ref name="i18n"/>
<interceptor-ref name="basicStack"/>
</interceptor-stack>
</interceptors>
代码解释
( 1 )在 xml 配置文件中配置拦截器和拦截器栈都是以“ <interceptors> ”开头,以“ </interceptors> ”结尾。
( 2 )配置拦截器的格式如上面代码所示以“ <interceptor/> ”格式显示,其中两个属性 name 是拦截器名字,另一个是对应的类路径,因为之前也已经说过其实拦截器也是一个普通的 Java 对象。
( 3 )拦截器栈的格式是以“ <interceptor-stack > ”开头,以“ </interceptor-stack> ”结尾。其中属性 name 是拦截器栈名字。在“ <interceptor-stack > ”和“ </interceptor-stack> ”之间可以设置拦截器。如代码所示格式为“ <interceptor-ref /> ”,其中 name 属性也是拦截器名字。如果系统运行拦截器栈都是按照拦截器栈中定义的拦截器先后顺序执行拦截器。请读者仔细查看那个基础栈配置,其中配置的拦截器都是在 xml 文件中定义的拦截器。
注意:拦截器栈中不单单可以配置拦截器,它甚至还可以配置拦截器栈。比如在“ validationWorkflowStack ” 拦截器栈中就配置了“ basicStack ”拦截器栈。这样的话,配置的子拦截器栈中的拦截器也会被执行。这就类似于父集合和子集合的概念。
( 4 ) 针对struts-default.xml 文件中各个拦截器配置,笔者一一做介绍,因为如果使用Struts2 在Web 项目开发中,这些拦截器都是默认缺省的会被执行的 。因此了解一下Struts2 底层的拦截器到底实现什么功能对开发人员来说是很有帮助的。
l alias :对于 HTTP 请求包含的参数设置别名。
l autowiring :将某些 JavaBean 实例自动绑定到其他 Bean 对应的属性中。有点类似 Spring 的自动绑定,在 Spring 部分会详细说明。
l Chain :在 Web 项目开发中,以前使用 Struts 开发时候经常碰到两个 Action 互相传递参数或属性的情况。该拦截器就是让前一 Action 的参数可以在现有 Action 中使用。
l conversionError :从 ActionContext 中将转化类型时候发生的错误添加到 Action 的值域错误中,在校验时候经常被使用到来显示类型转化错误的信息。
l cookie :从 Struts2.0.7 版本开始,可以把 cookie 注入 Action 中可设置的名字或值中。
l createSession :自动创建一个 HTTP 的 Session ,尤其是对需要 HTTP 的 Session 的拦截器特别有用。比如下面介绍的 TokenInterceptor 。
l debugging :用来对在视图间传递的数据进行调试。
l ExecAndWait :不显式执行 Action ,在视图上显示给用户的是一个正在等待的页面,但是 Action 其实是在“背后”正在执行着。该拦截器尤其在对进度条进行开发的时候特别有用。
l exception :将异常和 Action 返回的 result 相映射。
l fileUpload :支持文件上传功能的拦截器。
l i18n :支持国际化的拦截器。
l logger :拥有日志功能的拦截器。
l modelDriven : Action 执行该拦截器时候,可以将 getModel 方法得到的 result 值放入值栈中。
l scopedModelDriven :执行该拦截器时候,它可以从一个 scope 范围检索和存储 model 值,通过调用 setModel 方法去设置 model 值。
l params :将 HTTP 请求中包含的参数值设置到 Action 中。
l prepare :假如 Action 继承了 Preparable 接口,则会调用 prepare 方法。
l staticParams :对于在 struts.xml 文件中 Action 中设置的参数设置到对应的 Action 中。
l scope :在 session 或者 application 范围中设置 Action 的状态。
l servletConfig :该拦截器提供访问包含 HttpServletResquest 和 HttpServletResponse 对象的 Map 的方法。
l timer :输出 Action 的执行时间。
l token :避免重复提交的校验拦截器。
l tokenSession :和 token 拦截器类似,但它还能存储提交的数据到 session 里。
l validation :运行在 action-validation.xml( 校验章节将介绍 ) 文件中定义的校验规则。
l workflow :在 Action 中调用 validate 校验方法。如果 Action 有错误则返回到 input 视图。
l store :执行校验功能时候,该拦截器提供存储和检索 Action 的所有错误和正确信息的功能。
l checkbox :视图中如果有 checkbox 存在的情况,该拦截器自动将 unchecked 的 checkbox 当作一个参数(通常值为“ false ”)记录下来。这样可以用一个隐藏的表单值来记录所有未提交的 checkbox ,而且缺省 unchecked 的 checkbox 值是布尔类型的,如果视图中 checkbox 的值设置的不是布尔类型,它就会被覆盖成布尔类型的值。
l profiling :通过参数来激活或不激活分析检测功能,前提是 Web 项目是在开发模式下。(涉及到调试和性能检验时使用)
l roles :进行权限配置的拦截器,如果登录用户拥有相应权限才去执行某一特定 Action 。
更多信息请查看 java进阶网 http://www.javady.com/index.php/category/thread
发表评论
-
Struts之拦截器
2012-05-16 17:16 1507今天看了看拦截器,不由得想对拦截器做个描述,在我们进 ... -
struts第一篇:struts诞生记
2012-04-23 22:29 1105Struts是一个开源框架,学Struts有一段时间 ... -
Struts2教程 - 5.4.4 debug标签使用介绍
2012-04-16 21:23 1034技术要点 本节代码具体介绍 debug 数据 标签的使 ... -
Struts2教程 - 5.4.3 date标签使用介绍
2012-04-16 21:23 1146技术要点 本节代码具体介绍 date 数据 标签的使用 ... -
Struts2教程 - 5.2 OGNL表达式语言介绍
2012-04-14 21:15 2118在进行 Struts2 的标签库介绍之前,有必要着重对 ... -
Struts2教程 - 使用Action类控制导航业务数据
2012-04-09 10:10 1239Struts2 中 Action 充当着一个关键的角色。它解决 ... -
Struts2教程 - 3.4 使用ActionSupport进行校验
2012-04-08 09:04 1555如果 From 数据操作有误,比如输入不是我们需要的数据, ... -
Struts2教程 - 3.3使用Action类控制导航业务数据
2012-04-08 09:04 1133Struts2 中 Action 充当着一个关键的角色。 ... -
Struts2教程 - 5.4.8--10 url标签使用介绍
2012-04-16 21:24 10265.4.8 url 标签使用介绍 ... -
Struts2教程 - 5.4.6-7push、set标签使用介绍
2012-04-16 21:23 1176技术要点 本节代码具体介绍 push ... -
Struts2教程 - 5.4.5 include标签使用介绍
2012-04-16 21:23 1212技术要点 本节代码具体介绍 inclu ... -
Struts2教程 - 5.4.4 debug标签使用介绍
2012-04-17 23:46 1017技术要点 本节代码具体介绍 debug ... -
Struts2教程 - 5.4.3 date标签使用介绍
2012-04-17 23:46 1107技术要点 本节代码具体介绍 date ... -
Struts2教程 - 5.4.2 bean标签使用介绍
2012-04-15 22:57 847技术要点 本节代码具体介绍 bean ... -
Struts2教程 - 5.4.1 action标签使用介绍
2012-04-15 22:57 1130技术要点 本节代码具体介绍 actio ... -
Struts2教程 - 5.3.7 subset标签使用介绍
2012-04-15 22:57 11715.3.7 subset 标签使用介绍 ... -
Struts2教程 - 5.3.5-6 merge、sort标签使用介绍
2012-04-15 22:57 10575.3.5 merge 标签使用介绍 ... -
Struts2教程 - 5.3.4 iterator标签使用介绍
2012-04-14 21:14 1083技术要点 本节代码具体介绍 itera ... -
Struts2教程 - 5.3.3 if、else、elseif标签使用介绍
2012-04-14 21:14 1304技术要点 本节代码具体介绍 if 、 ... -
Struts2教程 - 5.3.2 generator标签使用介绍
2012-04-14 21:14 938技术要点 本节代码具体介绍 gener ...
相关推荐
《struts2 权威指南》第四章 深入Struts2--4.1源码
struts2-core-2.0.1.jar, struts2-core-2.0.11.1.jar, struts2-core-2.0.11.2.jar, struts2-core-2.0.11.jar, struts2-core-2.0.12.jar, struts2-core-2.0.14.jar, struts2-core-2.0.5.jar, struts2-core-2.0.6.jar,...
struts-2.3.4.1all 第一部分 jar包 api 倡导免积分下载!所有资源,欢迎浏览下载。
赠送jar包:struts2-json-plugin-2.3.24.jar; 赠送原API文档:struts2-json-plugin-2.3.24-javadoc.jar; 赠送源代码:struts2-json-plugin-2.3.24-sources.jar; 赠送Maven依赖信息文件:struts2-json-plugin-...
struts.xml文件中新增以下内容: <!-- 为修复struts2 s2-016、s2-017漏洞,重写DefaultActionMapper --> <bean type="org.apache.struts2.dispatcher.mapper.ActionMapper" name="myDefaultActionMapper" class=...
struts2-2拦截器与SiteMeshstruts
struts2-dojo-plugin-2.3.4 jar 日期控件的jar包 需要的自行下载
struts2-spring-plugin 最新jar包(2012.10.22) 0分资源,方便你我
struts2--4.拦截器
struts2-core-2.3.4.1-sources.jar最新jar包(2012.10.22) 0分资源,方便你我 struts2-core-2.3.4.1-sources.jar源码,学strut2源码时能用到的
struts2-spring-plugin-2.3.15.2.jar ; struts2-json-plugin-2.3.16.3.jarstruts2-spring-plugin-2.3.15.2.jar ; struts2-json-plugin-2.3.16.3.jar
2017年7月7日,Apache Struts发布最新的安全公告,Apache Struts2-strus1-plugin插件存在远程代码执行的高危漏洞,漏洞编号为CVE-2017-9791(S2-048),主要受影响的Struts版本为:2.3.x。 攻击者可以构造恶意的字段值...
struts-core-1.3.10.jar, struts2-cdi-plugin-2.3.30.jar, struts2-codebehind-plugin-2.3.30.jar, struts2-config-browser-plugin-2.3.30.jar, struts2-convention-plugin-2.3.30.jar, struts2-core-2.3.30.jar, ...
struts2-convention-plugin-2.3.4.1.jar
struts2-jfreechart-plugin-2.3.4.1.jar
struts2-config-browser-plugin-2.3.24.jar, struts2-core-2.3.24.jar, struts2-jasperreports-plugin-2.3.24.jar, struts2-jfreechart-plugin-2.3.24.jar, struts2-pell-multipart-plugin-2.3.24.jar, struts2-...
NULL 博文链接:https://huangminwen.iteye.com/blog/1837430
struts-2.3.4.1-docs.zip
struts-taglib-1.3.8.jar struts-taglib-1.3.8.jar