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整合开发王者归来(JSP+Servlet+Struts+Hibernate+Spring)》全面介绍了Java Web开发中的各种相关技术及知识。全书分为9篇,内容层次清晰,难度循序渐进。第1篇为入门篇,内容包括Java Web开发概述等;第2篇...
8. **Filter与Listener**:在Java Web中,Filter用于拦截请求和响应,实现数据过滤、登录检查等功能;Listener则监听Web应用的特定事件,如session的创建、销毁等。掌握这两者的配置和实现。 9. **Web Services**:...
通过以上步骤,我们可以实现在Java Web应用中通过Filter来打印请求和响应的数据。这种方法不仅能够帮助我们更好地理解和调试程序逻辑,还能为后续的日志记录和性能分析提供有用的信息。此外,通过对请求和响应的封装...
在Java Web开发中,`Filter`是一种非常实用的技术,它可以在请求到达目标资源(如Servlet或JSP页面)之前进行预处理,或者在响应返回客户端之前进行后处理。这种机制允许开发者在不修改目标资源代码的情况下增加额外...
Java Web技术是软件开发领域中的一个重要分支,它涵盖了构建基于Web的应用程序所需的各种技术和框架。这份"Java Web从入门到精通_PPT"很可能是提供了一个系统化的学习路径,旨在帮助初学者逐步掌握这一领域的核心...
5. **ch09**: 可能涉及到Java Web中的过滤器(Filter)和监听器(Listener),这两者都是增强应用程序功能的重要工具,过滤器可以对HTTP请求和响应进行预处理或后处理,监听器可以监听Web应用中的特定事件。...
8. **Filter和Listener**:在Java Web中,过滤器(Filter)可以拦截请求和响应,监听器(Listener)可以监听特定的事件,如session的创建和销毁。 9. **Ajax**:异步JavaScript和XML,允许部分页面更新,提高用户...
5. **过滤器(Filter)**:过滤器在Java Web中用于拦截请求和响应,实现预处理或后处理功能,如登录检查、字符编码转换、日志记录等。开发者可以通过实现`javax.servlet.Filter`接口并配置在`web.xml`中来创建过滤器...
5. **过滤器与监听器**:Filter和Listener是Java Web中的两大组件,过滤器用于拦截和处理请求,实现如权限控制、GZIP压缩等功能;监听器则监控Web应用中的特定事件,如session创建、销毁等。 6. **Ajax与JavaScript...
JavaBeans是一种符合特定规范的Java类,可以作为可重用的组件在Java Web应用中使用。 Tomcat作为Servlet和JSP容器,负责接收来自Web客户端的HTTP请求,解析请求,调用相应的Servlet或JSP页面进行处理,并将结果以...
随书光盘中的"javaweb_src.rar"可能包含了整个Java Web项目的源代码,这些代码通常包括Servlet、JSP、JavaBean等核心组件,以及相关的配置文件如web.xml。读者可以深入研究这些代码,了解如何将Java后端逻辑与Web...
5. **过滤器(Filter)**:过滤器在Java Web中用于拦截请求和响应,实现预处理或后处理功能,如登录验证、字符编码转换等。读者可以学习如何配置和实现自定义过滤器。 6. **监听器(Listener)**:监听器是用于监听...
3. 高级篇:此部分可能涉及MVC设计模式,讲解如何利用Java Web组件进行更复杂的业务逻辑处理,例如过滤器(Filter)和监听器(Listener)的使用,以及JSP自定义标签的开发。 4. Struts框架篇:Struts是经典的MVC...
在Java Web的学习过程中,理解复杂的概念如Servlet、JSP、过滤器(Filter)、监听器(Listener)等,可以通过丰富的插图和生动的实例来辅助理解,使得原本可能枯燥的理论变得更为生动。 【标签】"轻松学 Java Web ...
在Java Web开发中,`Filter`(过滤器)是一个至关重要的概念,它允许开发者在请求到达Servlet之前或从Servlet响应返回客户端之前进行拦截处理。`Filter`是Java Servlet API的一部分,定义在`javax.servlet.Filter`...
5. **Filter和Listener**:在Java Web中,Filter用于拦截和处理请求,而Listener监听特定事件。这些可能在源代码中作为增强应用功能的部分。 6. **JNDI(Java Naming and Directory Interface)**:用于查找和管理...
Filter和Listener是Java Web中两个关键的组件。Filter可以拦截HTTP请求和响应,进行预处理或后处理,例如登录验证、GZIP压缩等。Listener则监听特定的事件,比如session的创建、销毁,或者ServletContext的初始化、...
6. **过滤器(Filter)**: 过滤器在Java Web应用中用于拦截请求和响应,实现预处理或后处理功能,比如登录验证、字符编码转换等。学习过滤器涉及理解Filter接口和过滤链。 7. **监听器(Listener)**: 监听器是用来...
Servlet是Java中用于处理HTTP请求的核心组件,它是Java Web应用服务器中的一个Java程序,可以接收并响应来自客户端(如浏览器)的请求。Servlet生命周期包括加载、实例化、初始化、服务和销毁等阶段,开发者可以通过...