一、什么是过滤器,为什么需要
在应用中,比如登录、浏览商品、加入购物车等等,有一些通用处理,比如存储用户的请求日志,对用户的权限进行拦截,等等,
如果在每个请求都重写一遍,非常费时,而且代码不可维护,此时我们就需要一个统一的处理,当进行上面的请求时,都会先经过一组处理,在进行特定的请求。这就是过滤器。
二、Servlet规范定义
javax.servlet.Filter 接口,不是在http包下,是一个不跟协议有关的组件
过滤器本身不生成任何ServletRequest对象和ServletResponse对象,它为组件提供如下的方法
(1)、过滤器在web组件被调用之前,检查ServetRequest对象,修改请求头和请求body,或者做一些预处理
(2)、过滤器在wbe组件被调用之后,检查ServletResponse对象,修改相应头和响应正文
如图所示:
(3)、多个过滤器串联在一起,可以协同过滤
(3)、多个过滤器串联在一起,可以协同过滤
如图所示:
(4)、使用的时候,要定义好过滤的规则,如下(基于注解形式)
import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.annotation.WebFilter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebFilter(urlPatterns="/api/order/*") public class MyFilter implements Filter { public void doFilter(ServletRequest req, ServletResponse res,FilterChain filter) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req;//一般发布为http应用,可以直接转换为HttpServletRequest HttpServletResponse response = (HttpServletResponse) res;//一般发布为http应用,可以直接转换为HttpServletResponse //TODO 前置预处理1 filter.doFilter(request, response); //TODO 后置处理 } @Override public void init(FilterConfig config) throws ServletException { //做一些启动配置 } @Override public void destroy() { //做一些容器销毁时垃圾回收 } }如果是/api/order/开头的请求,都会经过这个拦截。
三、小结
其实拦截器就是责任链模式,就是为了对公共的组件就行抽象化,统一处理。
相关推荐
赠送jar包:javax.servlet-api-4.0.0.jar; 赠送原API文档:javax.servlet-api-4.0.0-javadoc.jar; 赠送源代码:javax.servlet-api-4.0.0-sources.jar; 赠送Maven依赖信息文件:javax.servlet-api-4.0.0.pom; ...
`javax.servlet-api-4.0.1.jar`包含了这些接口和类,使得开发者能够在自己的应用中实现HTTP服务、会话管理、过滤器、监听器等功能。 在JSP中,自定义标签提供了一种扩展HTML标签的能力,使得开发者可以创建具有特定...
在Java Web开发中,`javax.servlet-api-3.1.0.jar`是一个至关重要的组件,它代表了Servlet API的3.1.0版本,是实现服务器端动态网页处理的核心库。Servlet API是Java EE规范的一部分,由Java Community Process (JCP...
过滤器是Java Servlet API的一部分,它允许开发者在请求到达目标Servlet或JSP之前对其进行预处理,以及在响应返回给客户端之前进行后处理。通过实现Filter接口并配置在web.xml中,我们可以对所有请求或特定请求进行...
在IT行业中,尤其是在Java Web开发领域,`javax.servlet-api`和`javax.el`库是至关重要的组件。这些库主要用于实现Servlet规范和表达式语言(EL)功能,它们为开发人员提供了与服务器交互以及处理HTTP请求的能力。...
thrift 生成的java包servlet-api-2.5.jar
Servlet-api-3.0.jar是Java Servlet API的第三版实现,它是开发Web应用程序的重要组成部分,特别是在基于Java的服务器端编程中。这个库包含了用于创建和管理HTTP服务端点的接口和类,允许开发者构建动态、交互式的...
jakarta.servlet-api-4.0.4.jar jakarta.servlet-api-4.0.4-javadoc.jar jakarta.servlet-api-4.0.4-sources.jar
- `Filter`和`FilterChain`: 用于实现请求过滤器,可以在请求到达Servlet之前进行预处理,或在响应发送回客户端之后进行后处理。 - `DispatcherType`: 定义了不同的请求调度类型,如REQUEST、FORWARD、INCLUDE等。...
<servlet-class>test1.HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>Hello</servlet-name> <url-pattern>/test1/*</url-pattern> </servlet-mapping> </web-app> ``` - **...
【javax-servlet-api-3.0.1.jar】是一个重要的Java库,主要用于开发Servlet应用程序。Servlet是Java平台上的一个标准接口,它允许程序员创建能够处理HTTP请求的服务器端程序。这个JAR文件包含了Servlet API 3.0.1...
在"java-servlet物流管理-成功.zip"这个压缩包中,我们可以推测它包含了实现一个物流管理系统的相关代码和资源。下面将详细探讨Java Servlet在物流管理中的应用及其相关知识点。 1. **Java Servlet基础** Java ...
《基于Java-JSP-Servlet-Tomcat-SQLServer的社区医疗管理系统详解》 社区医疗管理系统是一种信息化解决方案,它旨在提高医疗服务的效率和质量,优化资源配置,满足城市社区居民的医疗需求。本文将深入探讨该系统的...
Java Servlet-API最新SDK。下载之前,找了好久才找到,需要的人拿走
javaweb/javaEE常用jar包,亲测可用,导入到java工程中使用
5. **版本升级与兼容性**: 随着Java EE版本的升级,Servlet和JSP API也有相应的更新,如Servlet 2.x, 3.x, 4.x等,每个新版本通常会引入新的特性和性能优化,并保持向后兼容。开发者需要根据项目需求选择合适的API...
Java Servlet过滤器是Java Web应用程序中的重要组件,它在请求被Servlet处理之前和响应返回给客户端之后进行拦截,可以用于实现各种功能,如字符编码转换、URL重写、权限控制等。本篇将深入讲解Java Servlet过滤器的...
总的来说,理解和研究`servlet-api-src`中的`javax.servlet.Servlet`源码对于任何Java Web开发者来说都是一个重要的学习步骤。它不仅可以帮助我们深入理解Servlet的工作原理,还可以提升我们在实际项目中的开发效率...
servlet-api-2.3.jar servlet-api-2.3.jar