自定义一个拦截器需要三步:
1、自定义一个实现Interceptor接口(或者继承自AbstractInterceptor)的类。
2、在strutx.xml中注册上一步中定义的拦截器。
33、在需要使用的Action中引用上述定义的拦截器,为了方便也可将拦截器定义为默认的拦截器,这样在不加特殊声明的情况下所有的Action都被这个拦截器拦截。
定义拦截器:
其实在Struts2里面,要实现自定义的拦截器是非常简单的,只要写一个实现Interceptor接口的类就可以了。
也就是说,所有的拦截器都要实现com.opensymphony.xwork2.interceptor.Interceptor接口,这个接口中定义如下:
package cn.wjq.study.Interceptor; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.Interceptor; /** * 自定义拦截器 * @author Administrator * */ public class MyInterceptor implements Interceptor{ private String dbOrFile; //为属性dbOrFile提供set方法 public void setDbOrFile(String dbOrFile) { this.dbOrFile = dbOrFile; } /** * 销毁 */ public void destroy() { // TODO Auto-generated method stub System.out.println("自定义拦截器MyInterceptor 销毁"); } /** * 初始化 * 当服务启动时执行此方法,以后不再执行 */ public void init() { // TODO Auto-generated method stub System.out.println("自定义拦截器MyInterceptor 初始化"); System.out.println("接到dbOrFile的参数=="+this.dbOrFile); if("db".equals(dbOrFile)){ System.out.println("将日志记录到数据库"); }else{ System.out.println("将日志记录到文件"); } } public String intercept(ActionInvocation invocation) throws Exception { // TODO Auto-generated method stub System.out.println("在action执行之前执行"); String result=invocation.invoke(); System.out.println("在Result运行之后执行"); return result; } }
拦截器注册、引用、传参:
<package name="login" namespace="/login" extends="default" > <interceptors> <!-- 自定义拦截器 --> <interceptor name="myInterceptor" class="cn.wjq.study.Interceptor.MyInterceptor"></interceptor> </interceptors> <action name="loginAction" class="cn.wjq.study.login.action.LoginAction" method="login"> <!-- 登陆成功,跳转到welcome.jsp页面 --> <result name="toWelcome">/login/welcome.jsp</result> <!--如果验证没有通过,跳转到下面的页面 --> <result name="input">/login/login.jsp</result> <!-- 引用自定义拦截器,同时引用公共拦截器栈 --> <interceptor-ref name="myInterceptor"> <!-- 向自定义拦截器中传入参数 --> <param name="dbOrFile">db</param> </interceptor-ref> <interceptor-ref name="pubStack"></interceptor-ref> </action> </package>
方法的基本说明如下:
- init方法就类似于构造方法,用于初始化一些相关资源
- destory方法类似于析构方法,用于释放资源
- intercept方法,就是拦截器执行的处理方法,我们要实现的功能主要就写在这个方法里面。
对于intercept方法,再说明几点:
(1)在intercept方法中写“invocation.invoke();”,这句话的意思是继续运行拦截器后续的处理,如果这个拦截器后面还有拦截器,那么会继续运行,一直到运行Action,然后执行Result。
如果intercept方法中没有写“invocation.invoke();”这句话,那就意味着对请求的运行处理到此为止,不再继续向后运行了,换句话说,后续的拦截器和Action就不再执行了。而是在这里返回Result字符串,直接去进行Result处理了。
(2)在“invocation.invoke();”这句话之前写的功能,会在Action运行之前执行
(3)在“invocation.invoke();”这句话之后写的功能,会在Result运行之后执行
(4)intercept方法的返回值就是最终要返回的Result字符串,这个只是在前面没有执行Result的时候才有效,也就是前面没有“invocation.invoke();”这句话的时候,这个返回值就相当于是最终要返回的Result字符串,然后才执行相应的Result处理。
相关推荐
简单的struts2自定义拦截器 很适合web初学者
Struts2自定义拦截器的配置是Struts2框架中一个非常重要的功能,它允许开发者在Action执行前后插入自定义的逻辑,以实现如权限验证、日志记录、性能监控等多种需求。以下是对标题和描述中涉及的知识点的详细说明: ...
自定义拦截器是Struts2框架中一个非常重要的特性,允许开发者扩展和定制框架的行为,以满足特定的业务需求。这篇博客文章可能是关于如何在Struts2中创建和使用自定义拦截器的教程。 在Struts2中,拦截器是基于责任...
Struts2自定义拦截器实现防止重复提交
自定义拦截器是Struts2框架中扩展功能的重要手段,让我们深入探讨如何在Struts2中实现自定义拦截器。 首先,创建一个Web项目是基础步骤,这可以通过IDE如Eclipse或IntelliJ IDEA来完成。确保你的项目包含了Struts2...
Struts2默认提供了一些拦截器来帮助处理这个问题,但如题目所述,由于性能考虑,项目组决定不使用Struts2的标签,因此需要自定义拦截器来实现防止重复提交的功能。 自定义拦截器的实现主要分为以下几个步骤: 1. *...
本文将深入探讨Struts2的内建自定义拦截器及其配置。 首先,让我们理解什么是拦截器。拦截器是基于AOP(面向切面编程)思想的,它们在Action调用前后执行,形成一个拦截器链。每个拦截器都可以执行特定的任务,并且...
在Struts2中,拦截器(Interceptor)扮演着至关重要的角色,它允许开发者在动作执行前后插入自定义逻辑,如日志记录、权限验证等。在本案例中,我们将深入探讨如何使用Struts2拦截器实现登录权限验证,同时结合...
"struts2自定义拦截器的示例代码" 以下是 Struts2 自定义拦截器的示例代码的知识点总结: Struts2 拦截器 소개 Struts2框架提供了拦截器机制,以便在Action执行前后进行拦截和处理。拦截器可以实现各种功能,如...
在这个实例中,我们将探讨如何创建一个自定义拦截器来处理未登录用户的非法请求。 首先,我们需要理解Struts2拦截器的工作原理。拦截器是基于Java的动态AOP(面向切面编程)实现的,它们按照配置的顺序组成一个链,...
自定义拦截器是Struts2中的一个重要特性,允许我们扩展框架的功能,以实现诸如日志记录、权限检查、性能监控等通用任务。在本文中,我们将深入探讨如何创建和使用自定义拦截器。 首先,了解拦截器的基本概念。在...
Struts2学习教程之拦截器机制与自定义拦截器 Struts2框架中,拦截器机制是其重要组成部分,不夸张的说,没有拦截器体系,也就没有这么好用的Struts2框架了。在Struts2框架中,大量的拦截器完成了很多基础的功能,...
本示例将聚焦于如何在Struts2中实现一个自定义拦截器。 首先,我们需要了解拦截器在Struts2中的作用。拦截器是AOP(面向切面编程)的一个核心概念,它允许开发者在动作执行前后插入额外的逻辑,如日志记录、权限...
本项目“Struts2_自定义拦截器_用户权限验证”将深入探讨如何在Eclipse开发环境中,利用Struts2框架自定义拦截器进行用户权限的验证,并处理各个Action之间的跳转。 首先,我们来看自定义拦截器的创建。在Struts2中...
在这个"struts2的自定义拦截器例子"中,我们将深入探讨如何创建和使用自定义拦截器。 首先,拦截器的本质是Java的面向切面编程(AOP)思想在Struts2中的体现。它们允许开发者在动作执行前后插入自定义的逻辑,例如...
本篇将深入讲解如何在Struts2中自定义拦截器,并通过提供的源代码进行分析。 拦截器是Struts2框架的核心组件之一,它允许我们在请求到达Action之前或离开Action之后执行一些额外的操作,如日志记录、权限验证、性能...
自定义拦截器是扩展Struts2功能的重要手段,允许开发者根据项目需求实现特定的行为。 在Struts2中,拦截器是基于责任链模式实现的,它们按照注册的顺序依次执行。拦截器栈是Struts2中拦截器的集合,每个拦截器都...