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 开发手册 JavaEE是一个开放的、 基于标准的平台,用以开发、部署和管理N层结构、面向Web的,以服务器为中心的企业级应用。 JavaEE的具有可扩展性、性能和可靠性。 手册结构目录如下: 1、HTP协议 2、...
FJ21议程网络议程草案从Caelum的fj21课程手册中学习使用Servlet,JSP,Java EE,Taglib,Filter和JDBC的Java EE。 讲义链接: :
java知识点汇总。包含HTML、java基础、java高级、数据库入门基础知识、过滤器filter、hibernate入门文档、mybatis入门文档、servlet基础知识、spring框架基础知识、struts2入门基础知识。
ava的Web框架虽然各不相同,但基本也都是遵循特定的路数的:使用Servlet或者Filter拦截请求,使用MVC的思想设计架构,使用约定,XML或 Annotation实现配置,运用Java面向对象的特点,面向对象实现请求和响应的流程,...
Ehcache is a widely used java distributed cache for general purpose caching, Java EE and light-weight containers. It features memory and disk stores, replicate by copy and invalidate, listeners, cache...
在课程讲授过程中,除了让学生学习HTML, CSS, JavaScript, JSP, Servlet, Filter, JavaBean, JDBC等知识外,还要求学生能灵活运用以上知识和技术并结合开发工具Eclipse进行动态 网站的开发,包括网站前台页面的设计...
本质上,HRRS捆绑了用于记录的servlet过滤器( hrrs-servlet-filter )和用于转换( hrrs-distiller )和重放( hrrs-replayer )请求的独立命令行Java应用程序。目录(设置Spring Web应用程序,运行蒸馏器和重播器...
对电影院购票系统进行功能分析与概要设计, 设计实现一个javaweb的电影院购票系统, 可采用主流开发框架比如ssm或者...依赖框架:javascript, css, jsp, servlet, filter layui bootstrap jquery spring hibernate mybatis
在课程讲授过程中,除了让学生学习HTML, CSS, JavaScript, JSP, Servlet, Filter, JavaBean, JDBC等知识外,还要求学生能灵活运用以上知识和技术并结合开发工具Eclipse进行动态 网站的开发,包括网站前台页面的设计...
Java 的 Web框架虽然各不相同,但基本也都是遵循特定的路数的:使用Servlet或者Filter拦截请求,使用MVC的思想设计架构,使用约定,XML或 Annotation实现配置,运用Java面向对象的特点,面向抽象实现请求和响应的...
该Webfilter对Java EE(或其他实现Servlet 3.1 API的Web容器)执行相同的操作。 特征 该Webfilter支持两种响应服务方法(行为)。 响应服务方法 解释 重新定向 对webjars/foo/bar.js将通过返回重定向标头来解决。 ...
Servlet 3.0 作为 Java EE 6 规范体系中一员,随着 Java EE 6 规范一起发布。该版本在前一版本(Servlet 2.5) 的基础上提供了若干新特性用于简化 Web 应用的开发和部署。其中有几项特性的引入让开发者感到非常兴奋...
第1章 Java Web应用开发简介 1 1.1 Java EE应用概述 1 1.2 Java EE概念 1 1.2.1 Java EE多层模型 1 1.2.2 Java EE体系结构 2 1.3 Java EE的核心API与组件 4 1.4 Web服务器和应用服务器 13 1.5 小结 16 第2章 建立...
6.5.1 Java EE 项目的发布类型 100 6.5.1.1 散包发布 100 6.5.1.2 打包发布 100 6.5.2向服务器发布应用 100 6.5.2.1打开发布对话框 100 6.5.2.2点击Add按钮启动新建发布对话框并完成发布 102 6.6应用服务器的管理和...
Java的W eb框架虽然各不相同,但基本也都是遵循特定的路数的:使用Servlet或者Filter拦截请 求,使用MVC的思想设计架构,使用约定,XML或 Annotation实现配置,运用Java面向对象的特点,面向抽象实现请求和响应的...
Undertow-cors-filter 一个过滤器,用于在基于Underwow的服务器(Wildfly,JBOSS EAP)中正确处理CORS标头Java EE的过滤器处理似乎有所疏忽,因为当容器配置了容器管理的授权并且尚未(尚未)通过身份验证的用户尝试...
│ │ ├─filter │ │ └─servlet │ │ CheckCodeServlet.java │ │ │ ├─resources │ │ druid.properties │ │ jedis.properties │ │ travel.sql │ │ │ └─webapp │ │ favoriterank...
在当今Java EE 开发中,Spring 框架是当之无愧的王者。而Spring Boot 是Spring 主推的基于“习惯优于配置”的原则,让你能够快速搭建应用的框架,从而使得Java EE 开发变得异常简单。 《JavaEE开发的颠覆者: Spring ...