`
满月不满
  • 浏览: 3034 次
  • 性别: Icon_minigender_1
  • 来自: 南京
最近访客 更多访客>>
社区版块
存档分类
最新评论

Java Web中的Filter

阅读更多

Filter:Java web项目中的过滤器,可以过滤用户的请求,对请求进行预处理和后置处理。

       打个比方来说,过滤器类似于门卫大爷。如果没有门卫,邮件会直接交到收件人的手里。现在,邮件必须要先经过大爷的手,如果大爷觉得楼里有这个收件人,就先给收件人打个电话,等于预先处理一下,然后把邮件给他,如果大爷觉得没有这个人(不符合规则),或者觉得这个人平时很讨厌,就直接说,没这个收件人,赶紧拿走。收件人拿走邮件之后,大爷可能要登记一下,这就是后续操作。

 

那么,如何在项目中配置一个门卫大爷呢?一共需要两步:

1.创建过滤器执行类

       过滤器必须实现Filter接口,接口中有三个方法:

init() :初始化过滤器,容器初始化时执行,只执行一次

doFilter() :执行过滤器,过滤器中最重要的方法,所有的逻辑都在这里体现,这里面最重要的一行代码是chain.doFilter();表示请求向下进行

destroy():销毁过滤器,同init()一样,只会执行一次

实例:

 

public class TestFliter implements Filter {
	
	private FilterConfig config;
	
	@Override
	public void init(FilterConfig config) throws ServletException {
		this.config = config;
		System.out.println("初始化过滤器  ");
	}
	
	@Override
	public void doFilter(ServletRequest req, ServletResponse resp,
			FilterChain chain) throws IOException, ServletException {
                //执行前置处理
		System.out.println("执行前置处理");  
                //执行目标请求  
		chain.doFilter(req, resp);     
                System.out.println("执行后置处理"); 
	}

	@Override
	public void destroy() {
		System.out.println("销毁过滤器  ");
	}
	
}

 输出顺序为:

 

初始化过滤器
执行前置方法
执行后置方法
销毁过滤器

    如果请求资源为doServlet,那么执行顺序为 “执行前置方法”->请求doSerlvet->“请求后置方法”

 

2.在web.xml中注册过滤器

    必须在容器中注册过滤器,才能使过滤器生效

<filter>
	<description>测试</description>
	<display-name>测试</display-name>
	<filter-name>test</filter-name>
	<filter-class>framework.web.filter.TestFilter</filter-class>
</filter>
<filter-mapping>
        <filter-name>test</filter-name>
	<url-pattern>*</url-pattern>
        <dispacther>REQUEST</dispacther>
        <dispacther>FORWARD</dispacther>
        <dispacther>INCLUDE</dispacther>
        <dispacther>ERROR</dispacther>
</filter-mapping>

 解释:

filter:定义过滤器

<description>:过滤器描述

<display-name>:显示名称

<filter-name>:过滤器名称(过滤器的唯一标志)

<filter-class>:过滤器类完整类名

 

filter-mapping:映射过滤器到指定资源上

<filter-name>:对应filter中的filter-name

<url-pattern>:资源路径,*表示全部

<dispatcher>:过滤请求类型,共有四种,一个映射中可以有多种

    REQUEST:直接来自浏览器的请求(默认类型)

    FORWARD:转发过来的请求,如在servlet中调用request.getDispatcher("路径").forward();

    INCLIUDE:在页面中使用include标签或在Servlet中调用request.getDispatcher("路径").include();

     ERROR:使用error-page标签发出的请求

 

多个Filter可以形成过滤器链,在web.xml中若配置了三个过滤器,顺序为a、b、c,当某个请求符合三个filter的url-pattern时,执行顺序为:

a前 -> b前 -> c前 -> 请求资源 -> c后 -> b后 -> a后

 

分享到:
评论

相关推荐

    Java Web整合开发王者归来:Java Web.part3

    《Java Web整合开发王者归来(JSP+Servlet+Struts+Hibernate+Spring)》全面介绍了Java Web开发中的各种相关技术及知识。全书分为9篇,内容层次清晰,难度循序渐进。第1篇为入门篇,内容包括Java Web开发概述等;第2篇...

    Java Web 整合开发 完全自学手册 源代码

    8. **Filter与Listener**:在Java Web中,Filter用于拦截请求和响应,实现数据过滤、登录检查等功能;Listener则监听Web应用的特定事件,如session的创建、销毁等。掌握这两者的配置和实现。 9. **Web Services**:...

    java中filter的用法(过滤器)

    在Java Web开发中,`Filter`是一种非常实用的技术,它可以在请求到达目标资源(如Servlet或JSP页面)之前进行预处理,或者在响应返回客户端之前进行后处理。这种机制允许开发者在不修改目标资源代码的情况下增加额外...

    Java Web从入门到精通_PPT

    Java Web技术是软件开发领域中的一个重要分支,它涵盖了构建基于Web的应用程序所需的各种技术和框架。这份"Java Web从入门到精通_PPT"很可能是提供了一个系统化的学习路径,旨在帮助初学者逐步掌握这一领域的核心...

    java filter打印请求返回参数

    通过以上步骤,我们可以实现在Java Web应用中通过Filter来打印请求和响应的数据。这种方法不仅能够帮助我们更好地理解和调试程序逻辑,还能为后续的日志记录和性能分析提供有用的信息。此外,通过对请求和响应的封装...

    孙卫琴Java Web全套源码

    5. **ch09**: 可能涉及到Java Web中的过滤器(Filter)和监听器(Listener),这两者都是增强应用程序功能的重要工具,过滤器可以对HTTP请求和响应进行预处理或后处理,监听器可以监听Web应用中的特定事件。...

    java Web课件完整版

    8. **Filter和Listener**:在Java Web中,过滤器(Filter)可以拦截请求和响应,监听器(Listener)可以监听特定的事件,如session的创建和销毁。 9. **Ajax**:异步JavaScript和XML,允许部分页面更新,提高用户...

    java web workspace 02

    5. **过滤器(Filter)**:过滤器在Java Web中用于拦截请求和响应,实现预处理或后处理功能,如登录检查、字符编码转换、日志记录等。开发者可以通过实现`javax.servlet.Filter`接口并配置在`web.xml`中来创建过滤器...

    MLDN Java Web 开发实战经典源码李兴华源代码

    5. **过滤器与监听器**:Filter和Listener是Java Web中的两大组件,过滤器用于拦截和处理请求,实现如权限控制、GZIP压缩等功能;监听器则监控Web应用中的特定事件,如session创建、销毁等。 6. **Ajax与JavaScript...

    tomcat和java web源码

    JavaBeans是一种符合特定规范的Java类,可以作为可重用的组件在Java Web应用中使用。 Tomcat作为Servlet和JSP容器,负责接收来自Web客户端的HTTP请求,解析请求,调用相应的Servlet或JSP页面进行处理,并将结果以...

    《Java Web开发速学宝典》李宁

    随书光盘中的"javaweb_src.rar"可能包含了整个Java Web项目的源代码,这些代码通常包括Servlet、JSP、JavaBean等核心组件,以及相关的配置文件如web.xml。读者可以深入研究这些代码,了解如何将Java后端逻辑与Web...

    《Java Web开发速学宝典》各章节例子源码

    5. **过滤器(Filter)**:过滤器在Java Web中用于拦截请求和响应,实现预处理或后处理功能,如登录验证、字符编码转换等。读者可以学习如何配置和实现自定义过滤器。 6. **监听器(Listener)**:监听器是用于监听...

    Java Web整合开发王者归来

    3. 高级篇:此部分可能涉及MVC设计模式,讲解如何利用Java Web组件进行更复杂的业务逻辑处理,例如过滤器(Filter)和监听器(Listener)的使用,以及JSP自定义标签的开发。 4. Struts框架篇:Struts是经典的MVC...

    轻松学Java Web 开发

    在Java Web的学习过程中,理解复杂的概念如Servlet、JSP、过滤器(Filter)、监听器(Listener)等,可以通过丰富的插图和生动的实例来辅助理解,使得原本可能枯燥的理论变得更为生动。 【标签】"轻松学 Java Web ...

    java中的filter

    在Java Web开发中,`Filter`(过滤器)是一个至关重要的概念,它允许开发者在请求到达Servlet之前或从Servlet响应返回客户端之前进行拦截处理。`Filter`是Java Servlet API的一部分,定义在`javax.servlet.Filter`...

    java web1200 第一卷源代码

    5. **Filter和Listener**:在Java Web中,Filter用于拦截和处理请求,而Listener监听特定事件。这些可能在源代码中作为增强应用功能的部分。 6. **JNDI(Java Naming and Directory Interface)**:用于查找和管理...

    跟我学Java Web代码

    Filter和Listener是Java Web中两个关键的组件。Filter可以拦截HTTP请求和响应,进行预处理或后处理,例如登录验证、GZIP压缩等。Listener则监听特定的事件,比如session的创建、销毁,或者ServletContext的初始化、...

    Java Web开发实践教程 课件

    6. **过滤器(Filter)**: 过滤器在Java Web应用中用于拦截请求和响应,实现预处理或后处理功能,比如登录验证、字符编码转换等。学习过滤器涉及理解Filter接口和过滤链。 7. **监听器(Listener)**: 监听器是用来...

    java web学习课件

    Servlet是Java中用于处理HTTP请求的核心组件,它是Java Web应用服务器中的一个Java程序,可以接收并响应来自客户端(如浏览器)的请求。Servlet生命周期包括加载、实例化、初始化、服务和销毁等阶段,开发者可以通过...

Global site tag (gtag.js) - Google Analytics