- 浏览: 880542 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (687)
- java (127)
- servlet (38)
- struts (16)
- spring (22)
- hibernate (40)
- javascript (58)
- jquery (18)
- tomcat (51)
- 设计模式 (6)
- EJB (13)
- jsp (3)
- oracle (29)
- RUP (2)
- ajax (3)
- java内存管理 (4)
- java线程 (12)
- socket (13)
- path (5)
- XML (10)
- swing (2)
- UML (1)
- JBPM (2)
- 开发笔记 (45)
- Note参考 (15)
- JAXB (4)
- Quartz (2)
- 乱码 (2)
- CSS (2)
- Exception (4)
- Tools (7)
- sqlserver (3)
- DWR (7)
- Struts2 (47)
- WebService (2)
- 问题解决收藏 (7)
- JBOSS (7)
- cache (10)
- easyUI (19)
- jQuery Plugin (11)
- FreeMarker (6)
- Eclipse (2)
- Compass (2)
- JPA (1)
- WebLogic (1)
- powerdesigner (1)
- mybatis (1)
最新评论
-
bugyun:
受教了,谢谢
java 正则表达式 过滤html标签 -
xiongxingxing_123:
学习了,感谢了
java 正则表达式 过滤html标签 -
wanmeinange:
那如果无状态的。对同一个任务并发控制怎么做?比如继承Quart ...
quartz中参数misfireThreshold的详解 -
fanjieshanghai:
...
XPath 元素及属性查找 -
tianhandigeng:
还是没明白
quartz中参数misfireThreshold的详解
自定义一个拦截器和使用拦截器的方法如下
<interceptors>
<interceptor name="timer" class=".."/>
</interceptors>
<action name="login"class="tutuorial.Login">
<interceptor-ref name="timber"/>
<result>success.jsp</result>
</action>
</package>
如果有多个拦截器,我们可以定义一个拦截器栈将所有的拦截器放在栈里,然后引用一个栈
<package name="default" extends="struts-default">
<interceptors>
<interceptor name="timer" class=".."/>
<interceptor name="logger" class=".."/>
<interceptor-stack name="myStack">
<interceptor-ref name="timer"/>
<interceptor-ref name="logger"/>
</interceptor-stack>
</interceptors>
<action name="login"
class="tutuorial.Login">
<interceptor-ref name="myStack"/>
<result>success.jsp</result>
</action>
</package>
struts2事先在struts-default.xml中定义了许多拦截器和适合不同用途的拦截器栈
下边是在网上找的别人整理的默认的拦截器
拦截器
名字
说明
下面是struts2提供的一些自带拦截器栈
<interceptors>
<!--省略了拦截器定义-->
<!-- Basic stack -->
<interceptor-stack name="basicStack">
<interceptor-ref name="exception"/>
<interceptor-ref name="servletConfig"/>
<interceptor-ref name="prepare"/>
<interceptor-ref name="checkbox"/>
<interceptor-ref name="actionMappingParams"/>
<interceptor-ref name="params"/>
<interceptor-ref name="conversionError"/>
</interceptor-stack>
<!-- Sample validation and workflow stack -->
<interceptor-stack name="validationWorkflowStack">
<interceptor-ref name="basicStack"/>
<interceptor-ref name="validation"/>
<interceptor-ref name="workflow"/>
</interceptor-stack>
<!-- Sample JSON validation stack -->
<interceptor-stack name="jsonValidationWorkflowStack">
<interceptor-ref name="basicStack"/>
<interceptor-ref name="validation">
<param name="excludeMethods">input,back,cancel</param>
</interceptor-ref>
<interceptor-ref name="jsonValidation"/>
<interceptor-ref name="workflow"/>
</interceptor-stack>
<!-- Sample file upload stack -->
<interceptor-stack name="fileUploadStack">
<interceptor-ref name="fileUpload"/>
<interceptor-ref name="basicStack"/>
</interceptor-stack>
<!-- Sample model-driven stack -->
<interceptor-stack name="modelDrivenStack">
<interceptor-ref name="modelDriven"/>
<interceptor-ref name="basicStack"/>
</interceptor-stack>
<!-- Sample action chaining stack -->
<interceptor-stack name="chainStack">
<interceptor-ref name="chain"/>
<interceptor-ref name="basicStack"/>
</interceptor-stack>
<!-- Sample i18n stack -->
<interceptor-stack name="i18nStack">
<interceptor-ref name="i18n"/>
<interceptor-ref name="basicStack"/>
</interceptor-stack>
<!-- An example of the params-prepare-params trick. This stack
is exactly the same as the defaultStack, except that it
includes one extra interceptor before the prepare interceptor:
the params interceptor.
This is useful for when you wish to apply parameters directly
to an object that you wish to load externally (such as a DAO
or database or service layer), but can't load that object
until at least the ID parameter has been loaded. By loading
the parameters twice, you can retrieve the object in the
prepare() method, allowing the second params interceptor to
apply the values on the object. -->
<interceptor-stack name="paramsPrepareParamsStack">
<interceptor-ref name="exception"/>
<interceptor-ref name="alias"/>
<interceptor-ref name="i18n"/>
<interceptor-ref name="params"/>
<interceptor-ref name="servletConfig"/>
<interceptor-ref name="prepare"/>
<interceptor-ref name="chain"/>
<interceptor-ref name="modelDriven"/>
<interceptor-ref name="fileUpload"/>
<interceptor-ref name="checkbox"/>
<interceptor-ref name="staticParams"/>
<interceptor-ref name="actionMappingParams"/>
<interceptor-ref name="params"/>
<interceptor-ref name="conversionError"/>
<interceptor-ref name="validation">
<param name="excludeMethods">input,back,cancel</param>
</interceptor-ref>
<interceptor-ref name="workflow">
<param name="excludeMethods">input,back,cancel</param>
</interceptor-ref>
</interceptor-stack>
<!-- A complete stack with all the common interceptors in place.
Generally, this stack should be the one you use, though it
may do more than you need. Also, the ordering can be
switched around (ex: if you wish to have your servlet-related
objects applied before prepare() is called, you'd need to move
servlet-config interceptor up.
This stack also excludes from the normal validation and workflow
the method names input, back, and cancel. These typically are
associated with requests that should not be validated.
-->
<interceptor-stack name="defaultStack">
<interceptor-ref name="exception"/>
<interceptor-ref name="alias"/>
<interceptor-ref name="servletConfig"/>
<interceptor-ref name="prepare"/>
<interceptor-ref name="i18n"/>
<interceptor-ref name="chain"/>
<interceptor-ref name="debugging"/>
<interceptor-ref name="profiling"/>
<interceptor-ref name="scopedModelDriven"/>
<interceptor-ref name="modelDriven"/>
<interceptor-ref name="fileUpload"/>
<interceptor-ref name="checkbox"/>
<interceptor-ref name="staticParams"/>
<interceptor-ref name="actionMappingParams"/>
<interceptor-ref name="params">
<param name="excludeParams">dojo\..*</param>
</interceptor-ref>
<interceptor-ref name="conversionError"/>
<interceptor-ref name="validation">
<param name="excludeMethods">input,back,cancel,browse</param>
</interceptor-ref>
<interceptor-ref name="workflow">
<param name="excludeMethods">input,back,cancel,browse</param>
</interceptor-ref>
</interceptor-stack>
<!-- The completeStack is here for backwards compatibility for
applications that still refer to the defaultStack by the
old name -->
<interceptor-stack name="completeStack">
<interceptor-ref name="defaultStack"/>
</interceptor-stack>
<!-- Sample execute and wait stack.
Note: execAndWait should always be the *last* interceptor. -->
<interceptor-stack name="executeAndWaitStack">
<interceptor-ref name="execAndWait">
<param name="excludeMethods">input,back,cancel</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="execAndWait">
<param name="excludeMethods">input,back,cancel</param>
</interceptor-ref>
</interceptor-stack>
</interceptors>
struts-default包默认的拦截器栈为defaultStack,因为其他自定义的包全继承自该包,所以我们自己定义的package的默认拦截器栈都为defaultStack。可以在package中添加一下语句指定默认的拦截器栈
<default-interceptor-ref name="myStack"/>
注意:如果我们要使用自己定义的栈,struts2会只使用我们定义的拦截器而不会执行框架默认的拦截器。所以自定义拦截器栈时一定要记得将系统的默认栈加进去,如下所示
<package name="default" extends="struts-default">
<interceptors>
<interceptor name="myint" class=".."/>
<interceptor name="myint2" class=".."/>
<interceptor-stack name="myStack">
<interceptor-ref name="timer"/>
<interceptor-ref name="logger"/>
<!--记住一定要加上下面这句-->
<interceptor-ref name="defaultStack"/>
</interceptor-stack>
</interceptors>
<action name="login"class="tutuorial.Login">
<interceptor-ref name="myStack"/>
<result>success.jsp</result>
</action>
</package>
注意:定义拦截器栈时要注意拦截器的顺序,因为某些拦截器会中断stack/chain/flow
关于如何自定义拦截器以及自定义拦截器的一个应用将会另开一篇文章
发表评论
-
ognl表达式
2011-07-07 00:36 1284OGNL是Object Graphic Navigation ... -
在Struts 2_0中实现表单数据校验
2011-07-07 00:02 1124转换与校验(Conversion & Validati ... -
简单的struts2输入校验框架
2011-05-13 23:43 10781.输入页面login.jsp: <%@ page ... -
struts2在学习(十二)--表单验证的两种方式
2011-05-13 23:13 950第四个示例:注解方式校验器---用户注册页面user2_reg ... -
struts2在学习(十一)--表单验证的两种方式
2011-05-13 23:09 895第二个示例:XML配置式校验器---登录和注册页面user_l ... -
struts2在学习(十)--表单验证的两种方式
2011-05-13 22:56 11521. Struts2中的输入校验2. 编码方式校验 1) A ... -
struts2采用convention-plugin实现零配置
2011-05-13 21:58 1103最近开始关注struts2的新特性,从这个版本开始,Strut ... -
基于SSH2框架Struts2拦截器的登录验证实现
2011-04-01 22:00 2281通过之前的Struts2.1.6+Spring2.5.6+H ... -
通过ActionContext类访问Servlet对象
2011-04-01 21:40 1907ActionContext类位于com.opensympho ... -
webwork 之销毁session
2011-04-01 17:35 1753销毁的意思?不是清空 ... -
Struts2 Convention Plugin(三)
2011-03-18 01:26 1190Annotation 参考Convention使用某些注解语句 ... -
Struts2 Convention Plugin(二)
2011-03-18 01:25 1140Results and result codesStruts ... -
Struts2 Convention Plugin(一)
2011-03-18 01:25 1087Introduction从struts2.1版本开始,Conv ... -
struts2页面中的标签调用类的方法
2011-03-15 16:33 1605<s:set name="str" ... -
Apache Struts 2.2.1 GA版发布
2011-03-14 17:14 1331昨日,Apache软件基金会发布了Struts 2.2.1 G ... -
spring2 +hibernate 3 + struts 配置
2011-03-14 15:15 11971. web.xml 1. <?xml versi ... -
Struts2 中action之间的跳转
2011-03-14 12:32 1245转载于http://zhou568xiao.iteye.com ... -
Struts2 的Result Type
2011-03-13 16:35 1034http://www.blogjava.net/duanzhi ... -
struts2 跳转类型 result type=chain、dispatcher、redirect(redirect-action)
2011-03-13 16:32 1614dispatcher 为默认跳转类型,用于返回一个视图资源(如 ... -
struts2防止重复提交
2011-03-10 23:07 1280struts2的防止重复提交 也使用到了 token (令牌机 ...
相关推荐
10. **Struts2 Interceptors**:拦截器是Struts2的核心特性之一,它们在Action执行前后的链式调用中发挥作用,如`struts2-convention-result-plugin.jar`和`struts2-plugin.xml`中的配置,定义了日志、权限验证、...
4. **Struts2 Interceptors(拦截器)** 拦截器是Struts2中实现AOP(面向切面编程)的重要机制。它们可以用来处理通用任务,如日志记录、权限检查、事务管理等。在访问Web元素时,拦截器可以用来验证表单数据,进行...
6. 使用Struts2 Interceptors进行权限控制 这个实例对初学者来说是非常有价值的,它提供了实际操作的经验,帮助理解这两个框架如何协同工作,以及如何在Web应用中实现用户登录功能。通过实践这个案例,你可以深入...
3. **拦截器(Interceptors)**:Struts2的拦截器是其强大功能的一部分,它们可以像过滤器一样在Action调用前后执行额外的任务,如日志记录、权限检查、性能监控等。开发者可以通过自定义拦截器来扩展框架的功能。 ...
2. **拦截器(Interceptors)**:Struts2的核心功能之一,拦截器可以插在Action调用之前和之后,实现如日志、事务管理、验证等通用功能,增强了代码的可复用性。 3. **动态方法调用(Dynamic Method Invocation,DMI...
Struts2是一个强大的Java web应用程序框架,用于构建MVC(模型-视图-控制器)架构的应用。这个API帮助文档是开发者在使用Struts2框架时的重要参考资料,它详细阐述了框架的各种组件、类库和方法,有助于理解并有效...
3. **拦截器(Interceptors)**:拦截器是Struts2的一大特色,它们按照预定义的顺序在Action调用前后执行,可以实现如日志记录、权限验证、性能监控等功能。常见的拦截器有`params`(处理请求参数)、`validation`...
Struts2是一个强大的MVC(Model-View-Controller)框架,它在Java Web开发中扮演着重要的角色。这个“struts2全部的jar包”压缩文件包含了运行Struts2应用程序所需的所有核心库和依赖组件。这里我们将深入探讨Struts...
6. **拦截器(Interceptors)**:拦截器是Struts2中的一个强大特性,它可以拦截Action执行前后的流程,实现日志记录、权限验证、事务管理等功能。常见的拦截器有Params拦截器(处理请求参数),Validation拦截器...
这个“struts2,struts2 demo”很显然是一个包含Struts2框架示例代码的压缩包,旨在帮助开发者理解和学习如何在实际项目中运用Struts2。 **1. Struts2简介** Struts2是Apache软件基金会下的一个开源项目,它继承了...
Struts2是一个非常流行的Java Web框架,用于构建和维护可扩展、模块化且易于管理的企业级应用程序。在当今网络安全日益重要的环境下,使用HTTPS协议来确保数据传输的安全性变得至关重要。Struts2支持HTTPS配置,可以...
3. **拦截器(Interceptors)**:拦截器是Struts2的一大特色,它们在Action调用前后执行,提供如日志、事务管理、性能监控等功能。常见的拦截器有`params`(处理请求参数)、`validation`(表单验证)、`exception`...
3. **拦截器(Interceptors)**:拦截器是Struts2的一大特色,它们可以在Action调用前后执行额外的任务,如权限验证、日志记录等。源码中可能包含一些自定义拦截器类,通过`struts.xml`进行配置。 4. **结果类型...
5. **拦截器(Interceptors)**:Struts2的拦截器机制允许在Action执行前后插入自定义逻辑,如日志、权限验证、事务管理等,极大地增强了框架的灵活性和可扩展性。 6. **配置文件**:Struts2使用struts.xml或者其他...
4. **拦截器(Interceptors)**:Struts2提供了一种机制,允许在Action执行前后执行一些通用任务,比如登录检查、日志记录等。在struts.xml配置文件中,可以指定Action应该使用的拦截器链。 5. **Action的注解**:...
1. **拦截器(Interceptors)**:Struts2的核心特性之一,拦截器负责在Action调用前后执行额外的逻辑,如日志记录、权限验证等。在`org.apache.struts2.interceptor`包下,你可以找到各种预定义的拦截器类。 2. **...
Struts2是一个强大的Java web开发框架,它基于MVC(Model-View-Controller)设计模式,为构建可维护性高、结构清晰的Web应用程序提供了一种解决方案。这个框架旨在简化开发过程,提高代码的可测试性和可重用性。下面...
2. Interceptors(拦截器):提供了一种机制,可以在Action执行前后进行额外的操作,如日志、权限检查等。 3. Result类型:除了JSP,还可以使用其他结果类型,如FreeMarker、 Velocity或直接返回JSON。 4. OGNL...
Struts2 和 Struts1 是两个著名的 Java Web 开发框架,它们都出自 Apache Software Foundation,但有着显著的区别。Struts1 是早期的 MVC 框架,而 Struts2 则是在 WebWork 框架的基础上发展起来的,它吸收了 Struts...
在Struts2中,`struts.xml`是核心配置文件,它是整个应用的入口点,负责定义动作(Actions)、结果(Results)、拦截器(Interceptors)等关键元素。让我们深入探讨一下`struts.xml`的基本配置: 1. **Action配置**...