`

struts2 拦截器

阅读更多
Struts2中的拦截器
拦截器其实是用spring的aop中通知的编程思想,在Action的执行之前,或者action的执行之后插入一些由用户自定义的有某些功能的代码。拦截器的一般经常用来验证用户,控制权限,跟踪日志,
拦截器的原理:当用户的Http请求被 FilterDispatcher 分发器截获,然后判断是否有拦截器,拦截器可以没有,可以有多个。然后再根据拦截器中的定义来判断是返回,或者执行下一个拦截器,或者执行action,我们可以自定义拦截器来实现某些功能。
Struts2中默认拦截器的调用:在struts2中已经定义了很多的拦截器,拦截器像是一个模块实现固定的某个功能,自定义拦截器放在  struts2-core.jar中的struts-default.xml文件中以标签  <interceptors></interceptors> 包裹起来的,这也是定义拦截器的方式,在
<package name=”demo” extends=”struts-default”>
           <interceptors>
<interceptor name=””   class=””></interceptor>
</interceptors>
</package>
具体定义带功能的拦截器下面再说,现在系统已经为我们定义了很多带功能的拦截器,我们要知道如何调用这些系统自带的拦截器。
调用系统自带的拦截器:我们已经知道了在struts-default.xml中自带了拦截器,现在我们定义的struts.xml中  <package name=”demo” extends=”struts-default”></package>  每个包都必须继承struts-default.xml 所以我们自定的包相当于已经定义了这些拦截器 现在只需要调用即可,我们需要明白的是 拦截器的使用是针对每一个Action  也就是说在请求某个action的过程中  调用拦截器类。拦截器调用例子见附件。
调用拦截器的方式
<package>
  <action>
          <interceptor-ref name=”要调用的拦截器的名称”></interceptor-ref>
</action>
</package>

内置拦截器简介:

拦截器 名字 说明
Alias Interceptor alias 在不同请求之间将请求参数在不同名字件转换,请求内容不变
Chaining Interceptor chain 让前一个Action的属性可以被后一个Action访问,现在和chain类型的result(<result type=”chain”>)结合使用。
Checkbox Interceptor checkbox 添加了checkbox自动处理代码,将没有选中的checkbox的内容设定为false,而html默认情况下不提交没有选中的checkbox。
Cookies Interceptor cookies 使用配置的name,value来是指cookies
Conversion Error Interceptor conversionError 将错误从ActionContext中添加到Action的属性字段中。
Create Session Interceptor createSession 自动的创建HttpSession,用来为需要使用到HttpSession的拦截器服务。
Debugging Interceptor debugging 提供不同的调试用的页面来展现内部的数据状况。
Execute and Wait Interceptor execAndWait 在后台执行Action,同时将用户带到一个中间的等待页面。
Exception Interceptor exception 将异常定位到一个画面
File Upload Interceptor fileUpload 提供文件上传功能
I18n Interceptor i18n 记录用户选择的locale
Logger Interceptor logger 输出Action的名字
Message Store Interceptor store 存储或者访问实现ValidationAware接口的Action类出现的消息,错误,字段错误等。
Model Driven Interceptor model-driven 如果一个类实现了ModelDriven,将getModel得到的结果放在Value Stack中。
Scoped Model Driven scoped-model-driven 如果一个Action实现了ScopedModelDriven,则这个拦截器会从相应的Scope中取出model调用Action的setModel方法将其放入Action内部。
Parameters Interceptor params 将请求中的参数设置到Action中去。
Prepare Interceptor prepare 如果Acton实现了Preparable,则该拦截器调用Action类的prepare方法。
Scope Interceptor scope 将Action状态存入session和application的简单方法。
Servlet Config Interceptor servletConfig 提供访问HttpServletRequest和HttpServletResponse的方法,以Map的方式访问。
Static Parameters Interceptor staticParams 从struts.xml文件中将<action>中的<param>中的内容设置到对应的Action中。
Roles Interceptor roles 确定用户是否具有JAAS指定的Role,否则不予执行。
Timer Interceptor timer 输出Action执行的时间
Token Interceptor token 通过Token来避免双击
Token Session Interceptor tokenSession 和Token Interceptor一样,不过双击的时候把请求的数据存储在Session中
Validation Interceptor validation 使用action-validation.xml文件中定义的内容校验提交的数据。
Workflow Interceptor workflow 调用Action的validate方法,一旦有错误返回,重新定位到INPUT画面
Parameter Filter Interceptor N/A 从参数列表中删除不必要的参数
Profiling Interceptor profiling 通过参数激活profile


多个拦截器连接使用:当需要多个拦截器需要同时调用时候可以 将所有的拦截器按照调用的顺序排列在action内部。<action name=”” class=””>
         <interceptor-ref name=”第一个执行的拦截器”></interceptor-ref>
<interceptor-ref name=”第二个执行的拦截器”></interceptor-ref>
<interceptor-ref name=”第三个执行的拦截器”></interceptor-ref>




</action>
也可以先将要执行的拦截器放在一个拦截器栈中。然后引用这个拦截器栈即可。定义拦截器栈可以参考struts-default.xml。
在struts.xml文件中  定义和调用拦截器栈
<struts>
<package name=”” extends=””>
        <!—定义拦截器栈-->
<interceptors >
<interceptor-stack name=”拦截器栈名称”>
<interceptor-ref name=”timer”></interceptor-ref>
</interceptor-stack>
</interceptors>

<!—调用拦截器栈
<action name=”” class=””>
<interceptor-ref name=”拦截器栈名称”></interceptor-ref>
</action>
</package>
</struts>
 
   


自定义拦截器的使用:
所有的拦截器都是直接或者间接的实现了 com.opensymphony.xwork2.interceptor.Interceptor接口。它定义了拦截器的初始方法init()。
销毁方法destroy().   拦截处理方法intercept(ActionInvocation action)这个方法的参数是当前调用的这拦截器的Action对象。  类 AbstractInterceptor 实现了这个接口,自定义拦截器的时候我们可以去继承这个类。  这个类中提供了我们需要重写的 方法 Intercept()。这也是最主要的方法,我们可以在这个里面 判断,执行……等操作,这个方法返回的是一个String类型的数据,我们可以直接返回 <result name=””></result>中name的值,也可以放回action.invoke(); 意思是根据配置文件中的配置 判断是要执行下一个拦截器,还是要执行Action。下面的附件中简单的用户登陆判断的拦截器。

0
0
分享到:
评论

相关推荐

    Struts2拦截器及其用法详细说明

    在Struts2中,拦截器(Interceptors)扮演着核心角色,增强了框架的功能和灵活性。这篇文章将深入探讨Struts2拦截器的概念、工作原理以及如何在实际应用中使用它们。 **一、什么是Struts2拦截器** 拦截器是基于AOP...

    struts2拦截器

    标题“struts2拦截器”指的是Struts2框架中的拦截器机制,这是一个关键的组件,可以让我们在不修改实际业务代码的情况下,实现对请求处理流程的扩展和定制。 描述中提到的“基于struts2的拦截器测试,实现了页面的...

    Struts2拦截器(Interceptor)

    Struts2拦截器(Interceptor) Struts2拦截器(Interceptor)

    Struts2 拦截器

    拦截器是Struts2框架的核心特性之一,它们扮演着处理请求、增强功能和实现业务逻辑的角色。在Struts2中,拦截器就像过滤器一样工作,通过链式调用在动作执行前后进行预处理和后处理。 首先,我们来理解一下拦截器的...

    详解Struts2拦截器

    ### Struts2拦截器详解 #### 一、Struts2拦截器概述 Struts2框架作为Java Web开发中的一种流行框架,其核心组件之一便是**拦截器**。拦截器不仅在Struts2中扮演着重要角色,更是整个框架灵活性与扩展性的基石。...

    struts2 拦截器实例

    在Struts2中,拦截器(Interceptor)扮演着核心角色,它们允许开发者在Action执行前后插入自定义的逻辑,如日志、权限检查、事务管理等。现在我们将深入探讨Struts2的拦截器机制及其实例应用。 ### 一、Struts2拦截...

    Struts2拦截器实现权限控制demo

    在这个“Struts2拦截器实现权限控制demo”中,我们将深入探讨如何利用拦截器来实现细粒度的用户权限管理。 首先,我们需要了解Struts2中的拦截器工作原理。拦截器是基于Java的动态代理模式实现的,它们按照配置的...

    struts2拦截器的使用方法

    ### Struts2拦截器的使用方法 #### 一、Struts2拦截器概述 Struts2框架中的拦截器(Interceptor)是一种重要的机制,用于在Action执行前后进行一系列处理,比如参数验证、数据预处理等。它能够帮助开发者更加灵活...

    struts2拦截器应用小例子

    当请求到达控制器时,Struts2会依次调用这个栈中的拦截器,每个拦截器都有机会处理请求,然后决定是否将请求传递给下一个拦截器或直接返回响应。 创建一个简单的Struts2拦截器,你需要遵循以下步骤: 1. 创建拦截...

    Struts2拦截器.ppt

    Struts2拦截器.ppt Struts2拦截器.ppt Struts2拦截器.ppt

    Struts2拦截器原理分析

    拦截器是Struts2框架的核心组成部分,它们在请求处理流程中起到了关键的作用。在本文中,我们将深入探讨Struts2拦截器的工作原理。 ### 一、拦截器概念 拦截器是基于Java的动态代理机制实现的,它允许我们在Action...

    struts2拦截器实现拦截不文明字迹

    拦截器是Struts2框架的一个重要组成部分,能够帮助开发者实现一些在请求处理前后执行的通用逻辑,如日志记录、权限验证、数据校验等。在本场景中,我们将探讨如何使用Struts2拦截器来实现对不文明字迹或者敏感词汇的...

    Struts2 拦截器注解(二十七)

    拦截器是Struts2框架的核心组件之一,它允许开发者在动作执行前后插入自定义逻辑,实现如权限验证、日志记录、性能优化等多种功能。在"Struts2 拦截器注解"这个主题中,我们将深入探讨如何利用注解来简化拦截器的...

    Struts2 拦截器的执行顺序(二十九)

    这篇博客“Struts2 拦截器的执行顺序(二十九)”可能探讨了Struts2拦截器链的工作原理和它们的执行顺序,这对于理解Struts2的内部机制至关重要。 首先,让我们深入理解Struts2的拦截器。拦截器是在Action调用前后...

    struts2 拦截器实现登录控制

    这篇博客“struts2 拦截器实现登录控制”显然会探讨如何利用拦截器来实现用户登录验证,从而保护应用程序的受保护资源。 首先,我们了解下Struts2拦截器的工作原理。拦截器是基于AOP(面向切面编程)的概念,它位于...

    struts2拦截器和验证框架(适合初学者-经藏版)

    ### Struts2 拦截器与验证框架详解 #### 一、Struts2概述 Struts2是一个基于Java的企业级Web应用开发框架,它继承了Struts1的优点,并在此基础上进行了很多改进,使得开发更加灵活高效。Struts2的核心是拦截器...

    Struts2拦截器源程序

    在Struts2中,拦截器扮演着至关重要的角色,它们是实现MVC(Model-View-Controller)架构的关键组件之一。拦截器允许开发者在动作执行前后插入自定义逻辑,比如日志记录、权限检查、数据验证等,而无需修改核心业务...

Global site tag (gtag.js) - Google Analytics