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

[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
分享到:
评论

相关推荐

    JAVA EE 开发手册.CHM

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

    FJ21-Agenda:从Caelum的fj21课程手册中学习使用Servlet,JSP,Java EE,Taglib,Filters和JDBC的Java EE

    FJ21议程网络议程草案从Caelum的fj21课程手册中学习使用Servlet,JSP,Java EE,Taglib,Filter和JDBC的Java EE。 讲义链接: :

    Java、JavaEE学习文档.zip

    java知识点汇总。包含HTML、java基础、java高级、数据库入门基础知识、过滤器filter、hibernate入门文档、mybatis入门文档、servlet基础知识、spring框架基础知识、struts2入门基础知识。

    appch_java.zip

    ava的Web框架虽然各不相同,但基本也都是遵循特定的路数的:使用Servlet或者Filter拦截请求,使用MVC的思想设计架构,使用约定,XML或 Annotation实现配置,运用Java面向对象的特点,面向对象实现请求和响应的流程,...

    EHCache 配置说明

    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...

    《Java-Web程序设计》整体设计.doc

    在课程讲授过程中,除了让学生学习HTML, CSS, JavaScript, JSP, Servlet, Filter, JavaBean, JDBC等知识外,还要求学生能灵活运用以上知识和技术并结合开发工具Eclipse进行动态 网站的开发,包括网站前台页面的设计...

    hrrs:在Java EE和Spring应用程序中记录,转换和重播HTTP请求

    本质上,HRRS捆绑了用于记录的servlet过滤器( hrrs-servlet-filter )和用于转换( hrrs-distiller )和重放( hrrs-replayer )请求的独立命令行Java应用程序。目录(设置Spring Web应用程序,运行蒸馏器和重播器...

    基于java的电影院购票系统(源码+数据库sql).rar

    对电影院购票系统进行功能分析与概要设计, 设计实现一个javaweb的电影院购票系统, 可采用主流开发框架比如ssm或者...依赖框架:javascript, css, jsp, servlet, filter layui bootstrap jquery spring hibernate mybatis

    《JavaWeb程序设计》整体设计.doc

    在课程讲授过程中,除了让学生学习HTML, CSS, JavaScript, JSP, Servlet, Filter, JavaBean, JDBC等知识外,还要求学生能灵活运用以上知识和技术并结合开发工具Eclipse进行动态 网站的开发,包括网站前台页面的设计...

    java web 开发详解

    Java 的 Web框架虽然各不相同,但基本也都是遵循特定的路数的:使用Servlet或者Filter拦截请求,使用MVC的思想设计架构,使用约定,XML或 Annotation实现配置,运用Java面向对象的特点,面向抽象实现请求和响应的...

    webjars-webfilter-resolver:Webfilter可以自动解决webjar的问题,而无需使用类似于Spring Boot的版本

    该Webfilter对Java EE(或其他实现Servlet 3.1 API的Web容器)执行相同的操作。 特征 该Webfilter支持两种响应服务方法(行为)。 响应服务方法 解释 重新定向 对webjars/foo/bar.js将通过返回重定向标头来解决。 ...

    annotaction

    Servlet 3.0 作为 Java EE 6 规范体系中一员,随着 Java EE 6 规范一起发布。该版本在前一版本(Servlet 2.5) 的基础上提供了若干新特性用于简化 Web 应用的开发和部署。其中有几项特性的引入让开发者感到非常兴奋...

    J2EE应用开发详解

    第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章 建立...

    《MyEclipse 6 Java 开发中文教程》前10章

    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应用服务器的管理和...

    电子商城系统设计实习报告.doc

    Java的W eb框架虽然各不相同,但基本也都是遵循特定的路数的:使用Servlet或者Filter拦截请 求,使用MVC的思想设计架构,使用约定,XML或 Annotation实现配置,运用Java面向对象的特点,面向抽象实现请求和响应的...

    undertow-cors-filter:一个过滤器,用于在基于Underwow的服务器(Wildfly,JBOSS EAP)中正确处理CORS标头

    Undertow-cors-filter 一个过滤器,用于在基于Underwow的服务器(Wildfly,JBOSS EAP)中正确处理CORS标头Java EE的过滤器处理似乎有所疏忽,因为当容器配置了容器管理的授权并且尚未(尚未)通过身份验证的用户尝试...

    travel.zip

    │ │ ├─filter │ │ └─servlet │ │ CheckCodeServlet.java │ │ │ ├─resources │ │ druid.properties │ │ jedis.properties │ │ travel.sql │ │ │ └─webapp │ │ favoriterank...

    JavaEE开发的颠覆者SpringBoot实战[完整版].part2

    在当今Java EE 开发中,Spring 框架是当之无愧的王者。而Spring Boot 是Spring 主推的基于“习惯优于配置”的原则,让你能够快速搭建应用的框架,从而使得Java EE 开发变得异常简单。 《JavaEE开发的颠覆者: Spring ...

Global site tag (gtag.js) - Google Analytics