[Java EE 7] Servlet Filter 简介
程序员文章站
2022-04-26 12:27:15
...
Filter 可以用来更改请求和响应的数据。有一点非常重要的就是,Filter 自己不会产生响应,它只能更改和调整请求和响应数据。Filter 最普遍的用途是用户鉴权、日志、数据压缩、数据转码等。Filter 和 Servlet 一起打包部署,并作用于动态或静态的内容。
可以使用 URL pattern 来将 filter 关联到一个 servlet、或者关联到一组 servlet,或者关联到静态内容。
通过 @WebFilter 来定义 filter:
上面的例子演示了将 LoggingFilter 关联到 web 应用程序的所有 servlet 和所有静态资源上。
同样,也可以使用 @WebInitParam 来定义初始化参数。
Filter 和它的目标 servlet 总是在同一个线程中调用。多个 filter 可以被组织成一条 filter 链。
可以在部署描述符(web.xml)中使用 <filter> 和 <filter-mapping> 节点来定义 filter:
除了使用 @WebFilter 和 web.xml 来定义 filter 之外,还可以调用 ServletContext.addFilter 通过编码的方式来定义 filter。可以在 ServletContainerInitializer.onStartup 方法或者ServletContextListener.contextInitialized 方法中进行这个操作。addFilter 方法将会返回 ServletRegistration.Dynamic 对象,这个对象可以用来进行 URL 映射、设置初始化数据或处理其它的配置项:
文章来源:http://www.aptusource.org/2014/03/java-ee-7-servlet-filters/
可以使用 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/
推荐阅读
-
servlet简介_动力节点Java学院整理
-
Java过滤器—Filter用法简介
-
Java Servlet Filter 详解
-
启动spring boot项目时报错:java.lang.ClassNotFoundException: javax.servlet.Filter
-
Java EE基础(21):过滤器概念 + 简单使用(Filter)
-
J2EE学习笔记(五)之Servlet中的Filter过滤器
-
[Java EE 7] JSF 资源处理
-
[Java EE 7] JSF Facelets 快速入门
-
The Java EE 6 Tutorial 第32章 JPA简介 (四) 查询实体
-
JAVA EE 5 - 7 整理