`
cucaracha
  • 浏览: 141865 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
博客专栏
A8f3fa2f-18ce-3862-897a-5d2209197c90
Java NIO.2
浏览量:88166
7a076ba7-8ec8-3241-aa3c-67bb2f7856a2
Java EE 7 简明教...
浏览量:36835
社区版块
存档分类
最新评论

[Java EE 7] Servlet Filter 简介

阅读更多
Filter 可以用来更改请求和响应的数据。有一点非常重要的就是,Filter 自己不会产生响应,它只能更改和调整请求和响应数据。Filter 最普遍的用途是用户鉴权、日志、数据压缩、数据转码等。Filter 和 Servlet 一起打包部署,并作用于动态或静态的内容。

可以使用 URL pattern 来将 filter 关联到一个 servlet、或者关联到一组 servlet,或者关联到静态内容。
通过 @WebFilter 来定义 filter:

@WebFilter("/*")
public class LoggingFilter implements javax.servlet.Filter {
  public void doFilter(HttpServletRequest request, 
                       HttpServletResponse response) {
    //. . .
  }
}


上面的例子演示了将 LoggingFilter 关联到 web 应用程序的所有 servlet 和所有静态资源上。

同样,也可以使用 @WebInitParam 来定义初始化参数。

Filter 和它的目标 servlet 总是在同一个线程中调用。多个 filter 可以被组织成一条 filter 链。

可以在部署描述符(web.xml)中使用 <filter> 和 <filter-mapping> 节点来定义 filter:

<filter>
  <filter-name>LoggingFilter</filter-name>
  <filter-class>org.sample.LoggingFilter</filter-class>
</filter>
    . . .
<filter-mapping>
  <filter-name>LoggingFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>


除了使用 @WebFilter 和 web.xml 来定义 filter 之外,还可以调用 ServletContext.addFilter 通过编码的方式来定义 filter。可以在 ServletContainerInitializer.onStartup 方法或者ServletContextListener.contextInitialized 方法中进行这个操作。addFilter 方法将会返回 ServletRegistration.Dynamic 对象,这个对象可以用来进行 URL 映射、设置初始化数据或处理其它的配置项:

public class MyInitializer implements ServletContainerInitializer {
  public void onStartup (Set<Class<?>> clazz, ServletContext context) {
    FilterRegistration.Dynamic reg = 
        context.addFilter("LoggingFilter", 
                   "org.example.LoggingFilter");
    reg.addMappingForUrlPatterns(null, false, "/");  
  }
}


文章来源:http://www.aptusource.org/2014/03/java-ee-7-servlet-filters/
0
0
分享到:
评论

相关推荐

    javaEE servlet-api

    Java EE(以前称为Java 2 Platform, Enterprise Edition)是用于构建企业级分布式应用程序的平台,它定义了一...在实际项目中,Servlet API与其他Java EE技术结合使用,可以构建出高效、可扩展且跨平台的Web解决方案。

    java ee servlet

    7. **过滤器**:Servlet Filter是Java EE提供的一种机制,可以在请求到达Servlet之前或之后进行拦截处理,例如实现登录检查、字符编码转换等功能。 8. **监听器**:Servlet监听器可以监听特定事件,如会话创建、...

    精通Java EE:精通Java EE 整合应用案例\源代码第五章

    9. **Filter与Listener**:这两者是Java EE中的重要概念,Filter用于在请求到达目标之前或之后执行预处理或后处理,Listener则监听特定的事件。学习者将理解它们如何增强应用程序的功能和性能。 10. **容器管理的...

    Java EE Web编程(Eclipse平台)源文件

    13. **WebSocket**:Java EE 7引入的新特性,支持双向通信的网络协议,用于实时Web应用。 14. **Filter和Listener**:在Servlet规范中定义,Filter用于拦截请求和响应,实现预处理和后处理;Listener则监听特定的...

    java ee教程(电子教案)

    10. **Filter与Listener**:在Java EE中,Filter用于拦截请求并处理,而Listener则监听特定事件,如会话的创建和销毁。 这份Java EE教程将深入讲解这些技术,从基础概念到实际应用,通过实例演示如何使用它们来构建...

    JAVA EE 开发手册.CHM

    JAVA EE 开发手册 JavaEE是一个开放的、 基于标准的平台,用以开发、部署和管理N层结构、面向Web的,以服务器为中心的企业级应用。 JavaEE的具有可扩展性、性能和可靠性。 手册结构目录如下: 1、HTP协议 2、...

    JAVA servlet 编程指南

    Servlet是Java EE(企业版)的一部分,它允许开发者创建动态、交互式的Web服务。Servlet容器,如Tomcat,负责管理和运行Servlet。本指南将深入讲解如何使用Java Servlet进行编程,以帮助开发者构建高效、灵活的Web...

    Java EE基础实用教程 代码

    10. **Filter和Listener**:在Java EE中,Filter用于拦截和修改请求或响应,而Listener监听特定事件。`web.xml`配置文件中会有对它们的声明。 通过这些代码示例,你可以学习到如何在实际项目中使用上述Java EE技术...

    Java EE 6 规范手册中英文 chm

    9. **Filter 和 Listener**:在Java EE 6中,Filter和Listener是两个重要的工具,它们可以拦截请求、响应,或监听应用程序的事件,实现诸如日志记录、权限控制等功能。 10. **Annotations**:Java EE 6大力推广使用...

    java servlet jar包

    1. **servlet-api.jar**:这是Java Servlet API的核心库,包含了Servlet接口和Filter接口的定义,以及与之相关的类和接口。它定义了服务器如何与Servlet通信的标准,使得开发者可以编写与服务器无关的Servlet代码。 ...

    Java EE中Filter技术的研究与应用.zip

    Filter与Servlet、Listener等组件协同工作,共同构建了Java EE应用程序的完整架构。它们各有分工,Filter专注于处理请求和响应,Servlet负责具体业务逻辑,Listener则监听特定的事件。 总之,Java EE中的Filter...

    java ee api 帮助文档

    Servlet API包括了Servlet、Filter和Listener等接口,用于处理请求、响应以及监听应用程序的生命周期事件。 2. **JSP(JavaServer Pages)**:JSP是用于创建动态网页的视图技术。它将HTML代码与Java代码分离,使...

    深入 Java Servlet 网络编程

    4.2 @WebServlet 注解:Java EE 6及以上版本,可以用注解简化Servlet的配置,直接在Servlet类上使用@WebServlet声明。 五、Servlet 进阶 5.1 Filter 过滤器:可以拦截请求,实现预处理和后处理,比如登录验证、字符...

    servlet-api.rar_java servlet_servlet api_servlet api hmtl_servle

    web.xml文件是Servlet API配置的主要方式,但随着Java EE的演进,现在已经可以通过Java-based配置和注解进行更灵活的配置。 在提供的“servlet-api.chm”文件中,很可能包含了完整的Servlet API文档,其中包括详细...

    Java EE练习题200902

    Java EE,全称为Java Platform, Enterprise Edition,是Java平台针对企业级应用开发的一个标准和框架。这个标题"Java EE练习题200902"表明这是一个关于Java EE的练习集,可能包含了各种类型的试题,旨在帮助学习者...

    Java EE编程 源代码

    在Java EE中,核心概念包括Servlet、JSP(JavaServer Pages)、EJB(Enterprise JavaBeans)、JMS(Java Message Service)、JPA(Java Persistence API)、JSF(JavaServer Faces)等。这些技术为开发人员提供了...

    中信JAVA课件之servlet

    1. **Servlet的作用**:Servlet是Java EE中用于处理HTTP请求的Java类,它可以接收并响应来自Web客户端的请求,实现动态网页功能。 2. **Servlet与JSP的区别**:Servlet侧重于逻辑控制,而JSP侧重于视图展示。Servlet...

    Java Servlet

    总之,Java Servlet作为Web开发中的基石,提供了强大的服务器端功能,结合Servlet容器和其他Java EE组件,能够构建复杂的企业级Web应用程序。通过深入学习和实践,开发者可以掌握高效、可扩展的服务器端编程技巧。

    JAVA SERVLET帮助文档(API)

    随着Java EE的发展,现在还可以使用Java-based配置或注解来简化部署过程。 学习Servlet API文档对于理解如何创建动态Web应用至关重要。它涵盖了从基本的HTTP交互到高级的会话管理、安全控制和异步处理等方面的知识...

    Spring 管理filter 和servlet

    特别是在Java EE环境中,如何有效地整合Spring与Servlet、Filter等核心组件,对于构建高性能、高灵活性的应用系统至关重要。本文将深入探讨Spring管理Filter和Servlet的机制与实践步骤,帮助开发者更好地理解和运用...

Global site tag (gtag.js) - Google Analytics