- 浏览: 113003 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (59)
- Java (2)
- ExtJS (0)
- Struts1.2 (0)
- Struts2.0 (16)
- Hibernate (1)
- Spring (4)
- Ibatis (5)
- Java基础 (3)
- J2EE (1)
- J2ME (0)
- JSP (0)
- DWR (1)
- HTTP (4)
- MySQL (3)
- WEB前端 (2)
- Jquery Plugin (0)
- Jquery1.4 (0)
- JavaScript (1)
- Eclipse (2)
- web服务器—apache (2)
- web服务器—Nginx (0)
- CXF (1)
- 淘宝技术 (1)
- Oracle (1)
- Maven (0)
- 项目管理 (1)
- 二维码 (0)
最新评论
-
dream_h:
新手 学习了
java 使用jdbc调用 oracle 存储过程 -
dream_h:
[flash=200,200][url][img][list] ...
java 使用jdbc调用 oracle 存储过程 -
brucewuzhao:
请问楼主,用post方法提交要是传2个参数应该怎么写?
HttpURLConnection发起GET和POST两种方式 -
科比积木:
受教了,多谢分享
JAVA获得客户端IP两种方法 -
科比积木:
将字符串信息转换为json格式,返回前台js中
struts2如何返回String
自定义一个拦截器和使用拦截器的方法如下
如果有多个拦截器,我们可以定义一个拦截器栈将所有的拦截器放在栈里,然后引用一个栈
<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
关于如何自定义拦截器以及自定义拦截器的一个应用将会另开一篇文章
引用
<package name="default" extends="struts-default">
<interceptors>
<interceptor name="timer" class=".."/>
</interceptors>
<action name="login"class="tutuorial.Login">
<interceptor-ref name="timber"/>
<result>success.jsp</result>
</action>
</package>
<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
关于如何自定义拦截器以及自定义拦截器的一个应用将会另开一篇文章
发表评论
-
struts2的struts.properties配置文件详解
2011-12-15 10:35 953struts.action.extension 该属性 ... -
test66666666
2011-09-21 01:30 671tetttttttttttttttttttttt -
Struts2.0实现零配置..自己学习看看
2009-08-25 22:17 1197自从ror热潮席卷web开发界以来,惯例优于配置的快速开发理念 ... -
Struts2.0实现上传
2009-08-25 22:13 947前一阵子有些朋友在电子邮件中问关于Struts 2实现文件上传 ... -
struts2中如何使s:select标签只读
2009-08-25 22:01 4944在开发openjweb平台期间遇到这样一个问题,在编辑页面中, ... -
Struts2的自定义拦截器
2009-08-25 21:55 1131假设有一个web应用,就是简单的有一个简单的登陆页面和 ... -
struts2的异常处理
2009-08-25 21:54 983struts2进行异常处理首先需要添加exception拦截器 ... -
Struts2.1使用ajax的准备工作
2009-08-25 21:44 1520在使用ajax标签之前,需要做几个准备工作 1.将stru ... -
struts2 ajax标签之div
2009-08-25 21:43 2625div是struts2 ajax中最基础的标签,其他的 ... -
struts2如何返回String
2009-08-25 21:42 3384有时候ajax应用只需要服务器返回一个字符串而不是一个jsp页 ... -
Struts2系列——struts2的struts.properties(部分转载)
2009-08-25 21:41 1181struts.properties文件定义了Struts 2框 ... -
Struts2.0中的namespace
2009-08-25 21:38 3894在package里有个namespace的属性,它提供了一个 ... -
Struts2.0中的Action
2009-08-25 21:36 933action映射是struts2框架的基本工作单元,通常 ... -
Struts2.0中的result标签
2009-08-25 21:24 2955在action的指定方法执行完毕后总会返回一个字符串,stru ... -
Struts2.0标签库简介
2009-08-25 21:15 990struts2.0里的标签没有分类,只用在jsp头文件加上&l ...
相关推荐
10. **Struts2 Interceptors**:拦截器是Struts2的核心特性之一,它们在Action执行前后的链式调用中发挥作用,如`struts2-convention-result-plugin.jar`和`struts2-plugin.xml`中的配置,定义了日志、权限验证、...
4. **Struts2 Interceptors(拦截器)** 拦截器是Struts2中实现AOP(面向切面编程)的重要机制。它们可以用来处理通用任务,如日志记录、权限检查、事务管理等。在访问Web元素时,拦截器可以用来验证表单数据,进行...
6. 使用Struts2 Interceptors进行权限控制 这个实例对初学者来说是非常有价值的,它提供了实际操作的经验,帮助理解这两个框架如何协同工作,以及如何在Web应用中实现用户登录功能。通过实践这个案例,你可以深入...
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软件基金会下的一个开源项目,它继承了...
3. **拦截器(Interceptors)**:拦截器是Struts2的一大特色,它们在Action调用前后执行,提供如日志、事务管理、性能监控等功能。常见的拦截器有`params`(处理请求参数)、`validation`(表单验证)、`exception`...
Struts2是一个非常流行的Java Web框架,用于构建和维护可扩展、模块化且易于管理的企业级应用程序。在当今网络安全日益重要的环境下,使用HTTPS协议来确保数据传输的安全性变得至关重要。Struts2支持HTTPS配置,可以...
3. **拦截器(Interceptors)**:拦截器是Struts2的一大特色,它们可以在Action调用前后执行额外的任务,如权限验证、日志记录等。源码中可能包含一些自定义拦截器类,通过`struts.xml`进行配置。 4. **结果类型...
5. **拦截器(Interceptors)**:Struts2的拦截器机制允许在Action执行前后插入自定义逻辑,如日志、权限验证、事务管理等,极大地增强了框架的灵活性和可扩展性。 6. **配置文件**:Struts2使用struts.xml或者其他...
4. **拦截器(Interceptors)**:Struts2提供了一种机制,允许在Action执行前后执行一些通用任务,比如登录检查、日志记录等。在struts.xml配置文件中,可以指定Action应该使用的拦截器链。 5. **Action的注解**:...
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配置**...
4. **拦截器(Interceptors)**:拦截器是Struts2的一个强大特性,它允许在Action执行前后插入自定义逻辑。常见的拦截器有:Params拦截器(处理参数绑定),Validation拦截器(进行字段验证),Stack拦截器(包含一...
2. **拦截器(Interceptors)**: 拦截器是Struts2的一个重要概念,它们是实现业务逻辑和控制流程之间解耦的关键。开发者可以自定义拦截器,用于登录检查、日志记录、性能监控等多种用途。 3. **插件(Plugins)**: ...