strusts2的拦截器底层采用的是动态代理机制实现的。而我们只是需要在struts.xml配置文件中配置拦截器就可以实现了。自定义拦截器会和struts.xml文件一起随着服务器的启动而加载。
对于strust2的拦截器它是针对的是表单提交数据的一种过滤机制,一个自己定义的过滤器可以针对一个action,也可以针对多个action。
1. 自定义拦截器的定义的第一种写法:自定义拦截器是要继承Interceptor这个struts给的拦截器接口。我们只需要实现的它的里面的三个方法。
比如说:import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;
public class MyInterceptor implements Interceptor {
//这个定义的成员变量,可以从strust.xml文件中传递值过来
private String message;
public MyInterceptor() {}
/**销毁方法**/public void destroy() {
System.out.println("destory");
System.out.println(this.message);}
public void init() /**初始化方**/
{ System.out.println("init");}
/**这个方法就是你拦截时候执行的方法,具体内容要根据业务来定**/
public String intercept(ActionInvocation invocation) throws Exception {
String result = invocation.invoke();
return result;}
public String getMessage() {
return message; }
public void setMessage(String message) {
this.message = message; }}
在struts.xml文件中:
<package name="login" extends="struts-default">
<!-- 自己定义的拦截器 -->
<interceptors>
<interceptor name="myInterceptor" class="org.interceptor.MyInterceptor">
<param name="message"> hello </param> </interceptor>
<!—自定义拦截器栈-à
<interceptor-stack name="myinterceptor">
<interceptor-ref name="myInterceptor"></interceptor-ref>
</interceptor-stack> </interceptors>
<!-- 在action中,加了自定义的拦截器,还要加默认的"defaultStack"拦截器栈,因为你引入其他的拦截器的时候,就不默认引入"defaultStack" -->
<action name="login" class="org.www.RegistertAction">
<interceptor-ref name="myInterceptor">
<param name="message">china</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
<result name="input">/login.jsp</result>
<result>/success.jsp</result>
</action></package>
注意的事项: 1、在声明的时候加入了给该自定义的拦截器类的成员变量赋值,在action中执行的时候,也赋值了。最后得到的是值action中执行的时候赋值的那个值。
2、每个包体下默认的action都有一个拦截器是
<default-interceptor-ref name="defaultStack"/>,而当如果你在action中引入了自定义的拦截器,那么在这个action中还要手动配置” defaultStack”。
3、拦截器栈里可以套多个拦截器。也可以套多个拦截器栈。
2、自定义拦截器的第二种写法:
package org.interceptor;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
/** * 该类继承了AbstractInterceptor。而AbstractInterceptor继承的是Interceptor接口,它精简了方法.只是叫你实现一个方法就可以自己定义拦截器*/
public class MyInterceptor1 extends AbstractInterceptor {
public MyInterceptor1() { }
public String intercept(ActionInvocation invocation) throws Exception {
String result = invocation.invoke();
return result; }}
在struts.xml文件中的配置和第一种的是一致的
3、对action中方法的拦截 import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;
public class MyInterceptor2 extends MethodFilterInterceptor {
/*** 该自定义拦截器类针对的是对方法的action中方法的拦截
* MethodFilterInterceptor类中:该类继承AbstractInterceptor
* 成员变量 excludeMethods :表示不拦截那些方法 成员变量 includeMethods: 表示拦截那些方法
* 这个对action中动态调用方法,很有效 */
public MyInterceptor2() { }
protected String doIntercept(ActionInvocation invocation) throws Exception {
String result = invocation.invoke(); return result; }}
在struts.xml文件的配置<package name="login" extends="struts-default">
<interceptors>
<interceptor name="myInterceptor2" class="org.interceptor.MyInterceptor2">
</interceptor>
<action name="login!*" class="org.www.RegistertAction" method="{1}">
<interceptor-ref name="myInterceptor2">
<!-- 不拦截的方法 --> <param name</
分享到:
相关推荐
Struts2 拦截器是基于AOP(面向切面编程)的一种实现,它允许在Action调用前后插入特定的操作,提供了灵活的控制流程,增强了框架的功能和可扩展性。拦截器的主要作用包括:增强代码复用性、提供事务管理、日志记录、...
在Struts2中,拦截器(Interceptor)扮演着非常重要的角色,它是实现业务逻辑控制和数据处理的核心组件。这篇文章将深入探讨Struts2中的拦截器机制,以及其在实际开发中的应用。 首先,我们要了解什么是拦截器。在...
2. **拦截器(Interceptors)**:Struts2的核心功能之一,拦截器可以插在Action调用之前和之后,实现如日志、事务管理、验证等通用功能,增强了代码的可复用性。 3. **动态方法调用(Dynamic Method Invocation,DMI...
struts2-2拦截器与SiteMeshstruts
4. **拦截器**:Struts2的拦截器机制允许在Action调用前后执行特定逻辑。JSON插件可能包含用于处理JSON请求和响应的拦截器,比如处理JSON参数的解析和验证。 5. **Action与模型驱动**:如果Action使用模型驱动模式...
Struts2的配置主要在struts.xml文件中进行,这里定义了Action的映射、结果类型、拦截器栈等。开发者可以通过XML或注解方式来配置Action,使应用更加灵活。 **4. 拦截器(Interceptors)** 拦截器是Struts2的一大...
Struts2作为一款流行的MVC框架,它的核心特性之一就是拦截器(Interceptor)。拦截器允许在Action执行前后的特定时刻执行额外的功能,从而实现了AOP(面向切面编程)的逻辑。 **1. 拦截器的作用和意义** - **解耦**...
3. **Interceptor(拦截器)**: 拦截器是Struts2的核心特性,它们按照预设的顺序执行,可以在Action执行前后进行额外的操作,如日志记录、权限检查等。 4. **Value Stack**: 用于存储Action实例和其他Action上下文...
2. **Interceptor**:拦截器是Struts2的一个重要特性,它们是插件式的,可以插入到Action调用流程中,实现如日志、权限检查、事务管理等通用功能。 3. **Result**:结果是Action执行后返回的对象,通常用于渲染视图...
- **拦截器**:拦截器是Struts2的核心机制之一,通过定义拦截器链,可以实现如权限验证、日志记录、性能监控等功能。 - **配置方式**:可以选择传统的XML配置,也可以使用更加灵活的注解和Conventions配置。 - **...
"struts2.chm"可能是Struts2的基础教程,涵盖了框架的基本概念、配置、动作、拦截器等核心组件。在这个文档中,你可以了解到如何设置Struts2的配置文件,如何创建Action类,以及如何使用拦截器进行业务逻辑处理。...
Struts2作为一款流行的Java Web框架,其核心机制之一就是拦截器(Interceptor)。拦截器是AOP(面向切面编程)思想在Struts2中的具体实现,它允许开发者在动作执行前后插入自定义的处理逻辑,提升了代码的可复用性和...
自定义拦截器是Struts2中的一个重要特性,允许我们扩展框架的功能,以实现诸如日志记录、权限检查、性能监控等通用任务。在本文中,我们将深入探讨如何创建和使用自定义拦截器。 首先,了解拦截器的基本概念。在...
2. **拦截器(Interceptor)**:这是Struts2的一个强大特性,它可以拦截Action调用前后,实现事务管理、日志记录、权限验证等功能。通过配置拦截器栈,开发者可以灵活控制请求处理流程。 3. **OGNL(Object-Graph ...
Struts2的核心组件是`struts2-core.jar`,这个文件是整个框架的基础,包含了处理请求、调度、拦截器等核心功能。`struts2-core-2.2.1`版本是Struts2的一个特定发行版,可能包含了一些特定的改进和修复。 在Java Web...
在Struts2中,拦截器(Interceptors)扮演着核心角色,增强了框架的功能和灵活性。这篇文章将深入探讨Struts2拦截器的概念、工作原理以及如何在实际应用中使用它们。 **一、什么是Struts2拦截器** 拦截器是基于AOP...
2. **拦截器**:Struts 2的拦截器是AOP(面向切面编程)概念的应用,允许在Action执行前后插入自定义逻辑,如日志、权限验证、性能统计等。这些拦截器通过在struts.xml中配置并组合成拦截器栈。 3. **Action**:...
本文将深入探讨如何使用Struts2实现拦截器,以及如何配置拦截器来实现用户权限拦截。 首先,我们需要了解拦截器的工作原理。在Struts2中,拦截器是基于Java的动态代理机制实现的,它们按照预定义的顺序形成一个拦截...
在Struts2中,拦截器扮演着核心角色,极大地增强了框架的功能和灵活性。本文将深入探讨Struts2中的拦截器,以及如何使用它们来优化应用的性能和功能。 ### 1. 拦截器的概念 拦截器是Struts2框架的一个关键特性,它...