- 浏览: 125357 次
- 性别:
- 来自: 深圳
文章分类
最新评论
要开发自己的Struts2拦截器类,需要实现Interceptor接口,并实现相应的三个方法 。或继承AbstractInterceptor类,只实现doIntercept方法。这两个类都在xwork.jar包中,路径为com.opensymphony.xwork2.interceptor。
拦截器类MyInterceptor
public class MyInterceptor implements Interceptor { public void destroy() { System.out.println("destroy..."); } public void init() { System.out.println("init..."); } public String intercept(ActionInvocation invocation) throws Exception { System.out.println("my interceptor..."); String result = invocation.invoke(); return result; } }
init()方法会在服务器启动时自动执行,只会执行一次。
写好自己的拦截器类后,在struts2的配置文件struts.xml文件中也要做相应的配置,在package那层下,与其它action同级
<interceptors> <interceptor name="myInterceptor" class="com.interceptor.MyInterceptor"></interceptor> </interceptors>
在action中使用刚配置好的自定义拦截器类
<action name="register" class="com.test.action.RegisterAction"> <result name="success">/success.jsp</result> <result name="input">/register.jsp</result> <interceptor-ref name="myInterceptor"></interceptor-ref> </action>
当程序在调用register action时,会执行MyInterceptor的intercept方法。
注意:在action中使用自定义的拦截器后,Struts2中自带的默认拦截器都将失效,需手工将默认的拦截器也加入进来。如下,
<interceptor-ref name="defaultStack"></interceptor-ref>
默认的拦截器在struts2-core.jar包的根目录下,名称为struts-default.xml
我们在定义一个struts.xml文件时,都会声明此配置文件继承struts-default,如下,只有在使用了自定义的拦截器后,action才不会再调用默认的拦截器,所以需要手工将其再配置一次。
<package name="struts2" extends="struts-default">
2,在拦截器中定义变量hello,在配置文件中可定义此变更的值,可以声明拦截器处赋值,也可在使用的action处赋值,如
在声明处
<interceptor name="myInterceptor" class="com.interceptor.MyInterceptor"> <param name="hello">world</param> </interceptor>
在action使用处,此处的赋值会覆盖上面的赋值
<action name="register" class="com.test.action.RegisterAction"> <result name="success">/success.jsp</result> <result name="input">/register.jsp</result> <interceptor-ref name="myInterceptor"> <param name="hello">world2</param> </interceptor-ref> </action>
3,拦截器栈:它和拦截器类似,在一个拦截器栈中可以引用多个拦截器或多个拦截器栈。
<interceptor-stack name="myStack"> <interceptor-ref name="myInterceptor"></interceptor-ref> <interceptor-ref name="defaultStack"></interceptor-ref> </interceptor-stack>
拦截器栈采用的是先进后出的操作顺序,即在执行目标对象方法前,先按栈中拦截器的顺序执行拦截器中的方法,再执行目标对象的方法,执行完再按逆序执行栈中的方法。
interceptor1
interceptor2
execute(目标对象的方法)
interceptor2
interceptor1
4,改变默认拦截器,如下配置,如下可以声明一个默认拦截器,它与action平级
<default-interceptor-ref name="myStack"></default-interceptor-ref>
如果一个action中没有配置一个自定义地拦截器,则它会默认使用默认拦截器。注意:只能有一个默认的拦截器
5,方法过滤拦截器:需要继承MethodFilterInterceptor并实现doIntercept方法
自定义的拦截器会拦截action中的所有方法(除了javabean方法,即get,set方法)
public class MyMethodInterceptor extends MethodFilterInterceptor { protected String doIntercept(ActionInvocation invocation) throws Exception { System.out.println("myMethodFilterInterceptor...."); return invocation.invoke(); }
在配置文件中声明此拦截器。
<interceptor name="myMethodInterceptor" class="com.interceptor.MyMethodInterceptor">
在action中配置,注意必须定义在其它拦截器前
<action name="register" class="com.test.action.RegisterAction"> <result name="success">/success.jsp</result> <result name="input">/register.jsp</result> <interceptor-ref name="myMethodInterceptor"> <param name="includeMethods">test1,execute</param> <!-- 包含,--> <param name="excludeMethods">test2,execute</param> <!-- 不包含,当一个方法在includeMethods和excludeMethods都有声明时,则includeMethods优先--> </interceptor-ref> <interceptor-ref name="myStack"></interceptor-ref> </action>
发表评论
-
Struts2(18):Struts2深入探索续2
2011-06-06 03:15 636Struts2与Servlet是低耦合的,这可使项目不依赖于具 ... -
Struts2(17):Struts2深入探索续
2011-06-06 00:26 11701,struts2有属性驱动方式与模型驱动两种方式:之前的例子 ... -
Struts2(16): Struts2深入探索
2011-06-05 12:56 970先来看看struts2包中的一些配置文件: 1,strut ... -
Struts2(15):Struts2的国际化续
2011-06-04 23:38 952Struts2中action错误的国际化 在action类的 ... -
Struts2(14):Struts2的国际化
2011-06-04 02:44 927先看看JAVA的国际化实现:JAVA国际化是使用java.ut ... -
Struts2(13):Struts2的上传下载续2
2011-06-04 00:07 968本节主要介绍上传任意数据的文件、指定文件类型上传与Struts ... -
Struts2(12):Struts2的上传下载续
2011-05-29 12:40 958使用Struts2结束common的fileupload和io ... -
Struts2(11):Struts2的上传下载
2011-05-29 01:00 899首先来看看在JSP中上传是如何做的: 从upload.jsp ... -
Struts2(10):Struts2的监听器与验权小例
2011-05-28 18:27 3089Struts2的监听器: 在xwork-2.0.7.jar包 ... -
Struts2(7):Struts2的输入校验框架(xml配置文件校验)
2011-05-22 22:00 3011上一节使用了Action类中的validate方法进行校验,此 ... -
Struts2(6):Struts2的输入校验2
2011-05-22 18:13 1124遇到类型转换错误的时候(也就是说不能进行类型转换),strut ... -
Struts2(5):Struts2的输入校验
2011-05-22 16:23 11621,Register.jsp,一个注册页面,包括用户名,密码, ... -
Struts2(4):Struts2类型转换2
2011-05-22 12:35 11071,修改上一节的input.jsp文件 <s:form ... -
Strtus2(3):struts2的类型转换
2011-05-21 23:34 10511,新建一个Point类,包含两个变量x,y。只有set,ge ... -
Struts2(2):Struts2的输入检验
2011-05-21 12:44 9851:新建一个login2.jsp,使用Struts2的标签编写 ... -
Struts2(1):入门与配置
2011-05-21 11:51 5931,在MyEclipse中新建一个WEB工程:struts2d ... -
Struts2(8):拦截器的简单实现原理
2011-05-15 18:29 908什么是拦截器: 拦截器,在AOP(Aspect-Oriente ...
相关推荐
解决Struts2中的中文乱码。该代码是用作Struts2的拦截器中
综上所述,拦截器和过滤器在Web开发中各自扮演着重要角色,而文件上传作为常见的业务需求,可以通过Struts2框架中的拦截器机制进行高效且安全的实现。理解它们的工作原理和区别,有助于提高开发效率和代码质量。
在本文中,我们将深入探讨如何实现Struts2与Spring的集成,以及利用拦截器来增强应用的功能。 首先,Struts2 是一个基于MVC设计模式的开源Web框架,它提供了强大的控制器层,使得开发者可以更方便地处理HTTP请求和...
3. 配置拦截器栈:Struts2使用拦截器栈的概念,即将多个拦截器组织成一个栈,按照栈的顺序依次执行。在`struts.xml`中,可以创建一个或多个拦截器栈,并将权限拦截器包含在内。 4. 应用拦截器:在Action配置中,...
在Struts2中,拦截器的配置主要在struts.xml或struts-plugin.xml配置文件中完成,通过`<interceptor>`和`<interceptor-stack>`标签来定义和组织拦截器。 1. **解决乱码问题**:在处理HTTP请求时,尤其是涉及用户...
### Struts2核心配置文件详解 #### 一、概述 Struts2框架是Java Web开发领域内一个重要的轻量级框架,它简化了基于MVC(Model-View-Controller)设计模式的应用程序开发过程。在Struts2框架中,有两个核心配置文件...
在配置文件中,我们可以定义Action类、对应的URL路径、结果视图以及与之关联的拦截器。例如: ```xml <result name="success">/success.jsp ``` 这段配置表示当用户请求`saveUser`时,将调用`...
- **应用配置**:在`struts.xml`中定义Action、结果类型、拦截器栈等,这是应用的核心配置文件。 3. **Action配置** - **Action类**:通常继承自`ActionSupport`,实现业务逻辑。每个Action对应一个特定的用户...
在Struts2中,拦截器扮演着核心角色,它们允许开发者实现一些通用的行为,如日志记录、权限检查、事务管理等,而无需将这些逻辑硬编码到每个动作类中。本实例主要关注的是如何使用Struts2拦截器进行权限判断。 首先...
- **Struts2**:与Spring、Hibernate等框架集成更加方便,内置了对这些框架的支持。 9. 性能: - **Struts1**:由于其设计模式,可能存在性能瓶颈,特别是在高并发场景下。 - **Struts2**:通过拦截器和更优化的...
在传统的Struts 2应用中,我们通常会通过XML配置文件(struts.xml)来定义Action,包括Action类、结果页面、拦截器等信息。然而,随着Java注解的广泛应用,Struts 2也引入了注解配置的方式来简化开发过程,避免了XML...
在Struts2中,过滤器(Filter)虽然与拦截器有相似的作用,但它们是基于Servlet API的,通常用于处理HTTP请求的预处理和后处理,如登录检查、字符编码转换等。过滤器通过实现`javax.servlet.Filter`接口并在`web.xml...
2. **动态代理**:Struts2使用动态代理技术实现了AOP(面向切面编程),使得开发者可以通过配置而非编码的方式实现拦截器的调用。 3. **类型转换**:Struts2内置了一套类型转换机制,能够自动将请求参数转换为Action类...
2. **Struts2拦截器(Interceptors)** - 拦截器是Struts2的重要特性,它可以插入到Action调用的链路中,执行预处理和后处理任务,如登录验证、日志记录、性能统计等。 - 默认的拦截器栈包括了异常处理、参数校验和...
配置文件在Struts2中起着至关重要的作用,它定义了框架的行为、动作映射、拦截器和其他关键设置。以下是Struts2配置文件的一些核心元素和属性的详细说明: 1. **配置文件结构**: Struts2的配置通常存储在一个名为...
拦截器是Struts2的一大特色,它们可以插入到Action调用链中,实现如日志、事务管理、性能监控等功能。默认提供了一些内置拦截器,如Validation、ExceptionMapping等。 5. **插件体系**: Struts2支持丰富的插件,...
4. **配置文件**: Struts2的配置文件通常为struts.xml,用于定义Action、结果类型、拦截器等。这里会配置Action类的路径、处理方法以及视图的跳转。 5. **JSP和Servlet**: 视图部分通常由JSP(JavaServer Pages)...
Struts2通过拦截器(Interceptor)和配置文件实现了灵活的功能扩展,其中配置文件用于定义控制器、拦截器、结果类型等组件,是框架运行的核心。 ### 问题背景:中文乱码成因分析 在Struts2框架中,中文乱码问题...
Struts2 拦截器是JavaWeb开发中Struts2框架的核心组件之一,它基于AOP(面向切面编程)理念,允许开发者在Action方法执行前后插入自定义逻辑。拦截器与Servlet中的过滤器虽然在功能上有相似之处,但它们在设计和使用...