Strust2的中央处理器FilterDispatcher(StrutsPrepareAndExecuteFilter是2.13版本后推荐使用的)是一个Filter。要详细理解strust2那么首先就要先弄明白Filter是个什么东东。简而言之,Filter就是过滤器,它的作用类似于后面要说到的拦截器,而且很多情况下拦截器可以代替过滤器,不过还是需要知道Filter的基本信息,下面是摘录的一位外国大拿对Filter的认识:
Servlet 过滤器是小型的 Web 组件,它们拦截请求和响应,以便查看、提取或以某种方式操作正在客户机和服务器之间交换的数据。过滤器是通常封装了一些功能的 Web 组件,这些功能虽然很重要,但是对于处理客户机请求或发送响应来说不是决定性的。典型的例子包括记录关于请求和响应的数据、处理安全协议、管理会话属性,等等。过滤器提供一种面向对象的模块化机制,用以将公共任务封装到可插入的组件中,这些组件通过一个配置文件来声明,并动态地处理。
Servlet 过滤器中结合了许多元素,从而使得过滤器成为独特、强大和模块化的 Web 组件。也就是说,Servlet 过滤器是:
声明式的:过滤器通过 Web 部署描述符(web.xml)中的 XML 标签来声明。这样允许添加和删除过滤器,而无需改动任何应用程序代码或 JSP 页面。
动态的:过滤器在运行时由 Servlet 容器调用来拦截和处理请求和响应。
灵活的:过滤器在 Web 处理环境中的应用很广泛,涵盖诸如日志记录和安全等许多最公共的辅助任务。过滤器还是灵活的,因为它们可用于对来自客户机的直接调用执行预处理和后期处理,以及处理在防火墙之后的 Web 组件之间调度的请求。最后,可以将过滤器链接起来以提供必需的功能。
模块化的:通过把应用程序处理逻辑封装到单个类文件中,过滤器从而定义了可容易地从请求/响应链中添加或删除的模块化单元。
可移植的:与 Java 平台的其他许多方面一样,Servlet 过滤器是跨平台和跨容器可移植的,从而进一步支持了 Servler 过滤器的模块化和可重用本质。
可重用的:归功于过滤器实现类的模块化设计,以及声明式的过滤器配置方式,过滤器可以容易地跨越不同的项目和应用程序使用。
透明的:在请求/响应链中包括过滤器,这种设计是为了补充(而不是以任何方式替代)servlet 或 JSP 页面提供的核心处理。因而,过滤器可以根据需要添加或删除,而不会破坏 servlet 或 JSP 页面。这是对Filter的理论认识,不过Filter的实践认识很简单,他就是一个过滤器,将request发送的请求进行过滤,比如一个模块希望记录操作日志,就可以在过滤器里实现记录日志的逻辑,然后再继续流转到下个模块,其实和拦截器有异曲同工之妙。不再详细赘述,下面是Filter的实现。
想开发自己的Filter需要实现servlet的javax.servlet.Filter接口,然后需要实现3个方法即:public void destroy(),public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException,public void init(FilterConfig arg0) throws ServletException。这3个方法涵盖了Filter的整个生命周期,init是Filter初始化时需要做的任务,你可以在这里做一些准备工作,有个参数FilterConfig,这个对象里可以读取配置文件中设置的信息,以及Filter的基本信息和web服务器的基本信息。
doFilter是实现过滤逻辑的地方,前两个对象即时request和response,FilterChain对象可以通过doFilter方法将请求流转到下一个模块,其实就是过滤器的出口,当你的过滤逻辑实现完成之后请求就可以继续流转,不如请求不符合过滤逻辑,那么请勿调用doFilter方法。destroy方法是过滤器的销毁方法,一般情况下可以置空不实现。
Filter的配置是在web.xml中的,基本结构如下:
<filter> <filter-name>Page Request Timer</filter-name> <filter-class>TimeTrackFilter</filter-class> </filter> <filter-mapping> <filter-name>Page Request Timer</filter-name> <servlet-name>Main Servlet</servlet-name> </filter-mapping> <servlet> <servlet-name>Main Servlet</servlet-name> <servlet-class>MainServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>Main Servlet</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping>
这是对某个特定的servlet进行过滤,也可以使用通配符进行过滤,如下:
<filter> <filter-name>Page Request Timer</filter-name> <filter-class>TimeTrackFilter</filter-class> </filter> <filter-mapping> <filter-name>Page Request Timer</filter-name> <url-pattern>*.do</url-pattern> </filter-mapping>
这时只过滤以.do为结尾的资源。
strust2的过滤器配置是以*为url-pattern的,即是过滤所有请求
相关推荐
### Java WEB SSH框架整合详解 在Java Web开发领域,SSH框架(Struts、Spring、Hibernate)的整合使用是提升项目效率、代码质量和可维护性的关键。本文将详细解析SSH框架的整合过程,从环境搭建到具体操作步骤,...
SSH整合是指将Struts2、Hibernate和Spring这三个开源框架整合在一起,以实现更高效、灵活的Web应用开发。下面将详细介绍SSH整合的过程。 一、导包 SSH整合首先需要引入相应的依赖库。对于Struts2,我们需要的包包括...
SSH整合是Java开发中常见的一个技术实践,它指的是Spring、Struts和Hibernate三个开源框架的集成。这三种框架分别负责不同的职责:Spring作为应用上下文和依赖注入框架,管理对象的生命周期;Struts则处理MVC(Model...
**SSH整合Shiro源码详解** 在Web应用开发中,安全性是至关重要的。SSH(Spring、Struts2、Hibernate)和Apache Shiro都是常见的Java安全框架。SSH是用于构建MVC架构的开源框架,而Shiro则专注于身份验证、授权和...
### SSH2整合案例详解 #### 一、概述 SSH2是指Struts2、Spring和Hibernate三个框架的集成应用。本文将详细介绍如何在一个项目中整合这三个框架,并通过具体步骤展示整个过程。本案例采用的开发环境为MyEclipse 7.0...
在IT领域,特别是Java开发中,SSH(Struts、Spring、Hibernate)框架的整合是构建企业级应用的常见模式。本文将深入解析SSH框架整合的配置文件,旨在为开发者提供全面的理解与指导。 ### SSH框架整合的核心:配置...
**SSH整合模板详解** 在Java Web开发中,SSH(Struts2、Spring、Hibernate)是一个常见的框架组合,用于构建高效、灵活的企业级应用程序。本文将详细介绍如何在IntelliJ IDEA(IDEA)环境中进行SSH整合,并提供最新...
### SSH框架整合知识点详解 #### 一、框架的搭建与配置 SSH框架指的是Spring、Struts2和Hibernate三个开源框架的结合使用。本篇笔记主要介绍如何搭建基于Struts2的Web应用程序,并进行简单的配置。 ##### 1. 创建...
**SSH整合详解** SSH整合是Java开发中的一种常见实践,它指的是将Struts2、Spring和Hibernate这三大开源框架进行集成,以实现高效、灵活且松耦合的Web应用程序开发。这三个框架各自专注于不同的领域:Struts2负责...
SSH整合在IT行业中通常指的是将Struts、Spring和Hibernate这三个流行的开源Java框架集成在一起,用于构建高效、可维护的企业级Web应用。这个标题"SSH整合需要jar包"表明了我们讨论的是关于这些框架所需的库文件,即...
### SSH框架整合详解 #### 一、环境搭建与配置 SSH框架是指Struts2、Spring以及Hibernate这三种技术的组合,它们各自承担着不同的角色,共同构建了一个强大的企业级应用平台。本文将以myeclipse 8.6作为开发工具,...
### SSH整合配置详解 #### 一、概述 SSH框架整合是指将Struts、Spring与Hibernate三个框架集成在一起,实现Web应用程序开发的过程。这三个框架分别负责不同的功能:Struts作为MVC框架,处理用户请求;Spring作为...
### Struts2、Spring、Hibernate整合详解 #### 一、概述 Struts2、Spring与Hibernate是Java Web开发中的三大主流框架。它们各自的特性如下: - **Struts2**:一种用于构建企业级Java Web应用程序的开源框架,基于...
### Eclipse搭建SSH框架详解 SSH框架(Struts + Spring + Hibernate)是企业级应用开发中最常用的框架之一。本文将详细介绍如何在Eclipse环境下搭建SSH Web项目,并解决搭建过程中可能遇到的问题。 #### 第一步:...
根据提供的文件信息,我们可以深入探讨如何整合SSH框架(Struts2.0 + Hibernate + Spring),并结合具体的代码示例来理解整个项目的结构和技术要点。 ### 项目架构与目录结构 项目采用的是经典的三层架构,即表示...
【SSH2整合详解】 SSH2整合是指将Struts2、Hibernate和Spring这三大开源框架集成为一个整体,以实现更高效、灵活的企业级应用开发。在本文中,我们将深入探讨张冰老师分享的SSH2整合过程,并以用户注册为例,详细...
### SSH与JFreeChart整合详解 #### 一、概述 SSH框架是指Struts2、Spring、Hibernate这三种技术的组合,常被用于构建企业级应用系统。而JFreeChart则是一款开源的Java图表库,提供了丰富的图表绘制功能,能够帮助...
### SSH整合知识点详解 #### 一、SSH框架简介与整合意义 SSH,即Struts + Spring + Hibernate,是Java Web开发领域中一个非常流行的组合框架。这三个框架分别负责Web层、业务逻辑层和服务数据访问层,能够很好地...
### SSH框架整合知识点详解 #### 一、简介与概述 SSH框架是指Struts + Hibernate + Spring这三种技术的集成应用,旨在提供一个高效且结构化的Web应用程序开发平台。本小册子将详细介绍如何进行SSH框架的整合,并...
SSH整合详解(之一) SSH(Struts + Spring + Hibernate)是Java Web开发中常见的三大框架集成,用于构建高效、可维护的Web应用。本视频教程将深入探讨如何在MyEclipse环境中整合这三个框架,帮助开发者更好地理解...