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/
分享到:
相关推荐
Java EE(以前称为Java 2 Platform, Enterprise Edition)是用于构建企业级分布式应用程序的平台,它定义了一...在实际项目中,Servlet API与其他Java EE技术结合使用,可以构建出高效、可扩展且跨平台的Web解决方案。
7. **过滤器**:Servlet Filter是Java EE提供的一种机制,可以在请求到达Servlet之前或之后进行拦截处理,例如实现登录检查、字符编码转换等功能。 8. **监听器**:Servlet监听器可以监听特定事件,如会话创建、...
9. **Filter与Listener**:这两者是Java EE中的重要概念,Filter用于在请求到达目标之前或之后执行预处理或后处理,Listener则监听特定的事件。学习者将理解它们如何增强应用程序的功能和性能。 10. **容器管理的...
13. **WebSocket**:Java EE 7引入的新特性,支持双向通信的网络协议,用于实时Web应用。 14. **Filter和Listener**:在Servlet规范中定义,Filter用于拦截请求和响应,实现预处理和后处理;Listener则监听特定的...
10. **Filter与Listener**:在Java EE中,Filter用于拦截请求并处理,而Listener则监听特定事件,如会话的创建和销毁。 这份Java EE教程将深入讲解这些技术,从基础概念到实际应用,通过实例演示如何使用它们来构建...
JAVA EE 开发手册 JavaEE是一个开放的、 基于标准的平台,用以开发、部署和管理N层结构、面向Web的,以服务器为中心的企业级应用。 JavaEE的具有可扩展性、性能和可靠性。 手册结构目录如下: 1、HTP协议 2、...
Servlet是Java EE(企业版)的一部分,它允许开发者创建动态、交互式的Web服务。Servlet容器,如Tomcat,负责管理和运行Servlet。本指南将深入讲解如何使用Java Servlet进行编程,以帮助开发者构建高效、灵活的Web...
10. **Filter和Listener**:在Java EE中,Filter用于拦截和修改请求或响应,而Listener监听特定事件。`web.xml`配置文件中会有对它们的声明。 通过这些代码示例,你可以学习到如何在实际项目中使用上述Java EE技术...
9. **Filter 和 Listener**:在Java EE 6中,Filter和Listener是两个重要的工具,它们可以拦截请求、响应,或监听应用程序的事件,实现诸如日志记录、权限控制等功能。 10. **Annotations**:Java EE 6大力推广使用...
1. **servlet-api.jar**:这是Java Servlet API的核心库,包含了Servlet接口和Filter接口的定义,以及与之相关的类和接口。它定义了服务器如何与Servlet通信的标准,使得开发者可以编写与服务器无关的Servlet代码。 ...
Filter与Servlet、Listener等组件协同工作,共同构建了Java EE应用程序的完整架构。它们各有分工,Filter专注于处理请求和响应,Servlet负责具体业务逻辑,Listener则监听特定的事件。 总之,Java EE中的Filter...
Servlet API包括了Servlet、Filter和Listener等接口,用于处理请求、响应以及监听应用程序的生命周期事件。 2. **JSP(JavaServer Pages)**:JSP是用于创建动态网页的视图技术。它将HTML代码与Java代码分离,使...
4.2 @WebServlet 注解:Java EE 6及以上版本,可以用注解简化Servlet的配置,直接在Servlet类上使用@WebServlet声明。 五、Servlet 进阶 5.1 Filter 过滤器:可以拦截请求,实现预处理和后处理,比如登录验证、字符...
web.xml文件是Servlet API配置的主要方式,但随着Java EE的演进,现在已经可以通过Java-based配置和注解进行更灵活的配置。 在提供的“servlet-api.chm”文件中,很可能包含了完整的Servlet API文档,其中包括详细...
Java EE,全称为Java Platform, Enterprise Edition,是Java平台针对企业级应用开发的一个标准和框架。这个标题"Java EE练习题200902"表明这是一个关于Java EE的练习集,可能包含了各种类型的试题,旨在帮助学习者...
在Java EE中,核心概念包括Servlet、JSP(JavaServer Pages)、EJB(Enterprise JavaBeans)、JMS(Java Message Service)、JPA(Java Persistence API)、JSF(JavaServer Faces)等。这些技术为开发人员提供了...
1. **Servlet的作用**:Servlet是Java EE中用于处理HTTP请求的Java类,它可以接收并响应来自Web客户端的请求,实现动态网页功能。 2. **Servlet与JSP的区别**:Servlet侧重于逻辑控制,而JSP侧重于视图展示。Servlet...
总之,Java Servlet作为Web开发中的基石,提供了强大的服务器端功能,结合Servlet容器和其他Java EE组件,能够构建复杂的企业级Web应用程序。通过深入学习和实践,开发者可以掌握高效、可扩展的服务器端编程技巧。
随着Java EE的发展,现在还可以使用Java-based配置或注解来简化部署过程。 学习Servlet API文档对于理解如何创建动态Web应用至关重要。它涵盖了从基本的HTTP交互到高级的会话管理、安全控制和异步处理等方面的知识...
特别是在Java EE环境中,如何有效地整合Spring与Servlet、Filter等核心组件,对于构建高性能、高灵活性的应用系统至关重要。本文将深入探讨Spring管理Filter和Servlet的机制与实践步骤,帮助开发者更好地理解和运用...