`
haoran_10
  • 浏览: 443227 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java servlet拾遗(5)-过滤器

阅读更多
一、什么是过滤器,为什么需要
    在应用中,比如登录、浏览商品、加入购物车等等,有一些通用处理,比如存储用户的请求日志,对用户的权限进行拦截,等等,
如果在每个请求都重写一遍,非常费时,而且代码不可维护,此时我们就需要一个统一的处理,当进行上面的请求时,都会先经过一组处理,在进行特定的请求。这就是过滤器。
 
二、Servlet规范定义
    javax.servlet.Filter 接口,不是在http包下,是一个不跟协议有关的组件

过滤器本身不生成任何ServletRequest对象和ServletResponse对象,它为组件提供如下的方法    

(1)、过滤器在web组件被调用之前,检查ServetRequest对象,修改请求头和请求body,或者做一些预处理
(2)、过滤器在wbe组件被调用之后,检查ServletResponse对象,修改相应头和响应正文
如图所示:

 (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/开头的请求,都会经过这个拦截。
 
三、小结
其实拦截器就是责任链模式,就是为了对公共的组件就行抽象化,统一处理。
  • 大小: 21.5 KB
  • 大小: 28.8 KB
0
1
分享到:
评论

相关推荐

    javax.servlet-api-4.0.0-API文档-中文版.zip

    赠送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

    `javax.servlet-api-4.0.1.jar`包含了这些接口和类,使得开发者能够在自己的应用中实现HTTP服务、会话管理、过滤器、监听器等功能。 在JSP中,自定义标签提供了一种扩展HTML标签的能力,使得开发者可以创建具有特定...

    javax.servlet-api-3.1.0.jar

    javax.servlet-api-3.1.0.jar,处理找不到servlet JAR的问题

    java-web -- servlet 拦截器 过滤器使用

    过滤器是Java Servlet API的一部分,它允许开发者在请求到达目标Servlet或JSP之前对其进行预处理,以及在响应返回给客户端之前进行后处理。通过实现Filter接口并配置在web.xml中,我们可以对所有请求或特定请求进行...

    thrift 生成的java包servlet-api-2.5.jar

    thrift 生成的java包servlet-api-2.5.jar

    servlet-api-3.0.jar包

    Servlet-api-3.0.jar是Java Servlet API的第三版实现,它是开发Web应用程序的重要组成部分,特别是在基于Java的服务器端编程中。这个库包含了用于创建和管理HTTP服务端点的接口和类,允许开发者构建动态、交互式的...

    jakarta.servlet-api-4.0.4.zip

    jakarta.servlet-api-4.0.4.jar jakarta.servlet-api-4.0.4-javadoc.jar jakarta.servlet-api-4.0.4-sources.jar

    javax.servlet jar包---解决找不到javax.servlet.*等问题

    - `Filter`和`FilterChain`: 用于实现请求过滤器,可以在请求到达Servlet之前进行预处理,或在响应发送回客户端之后进行后处理。 - `DispatcherType`: 定义了不同的请求调度类型,如REQUEST、FORWARD、INCLUDE等。...

    javax.servlet-api-3.1.0.jar javax.el-api-2.2.4.jar javax.el-2.2.4.jar

    在IT行业中,尤其是在Java Web开发领域,`javax.servlet-api`和`javax.el`库是至关重要的组件。这些库主要用于实现Servlet规范和表达式语言(EL)功能,它们为开发人员提供了与服务器交互以及处理HTTP请求的能力。...

    java\Servlet技术--小例子.pdf

    <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

    【javax-servlet-api-3.0.1.jar】是一个重要的Java库,主要用于开发Servlet应用程序。Servlet是Java平台上的一个标准接口,它允许程序员创建能够处理HTTP请求的服务器端程序。这个JAR文件包含了Servlet API 3.0.1...

    java-servlet物流管理-成功.zip

    在"java-servlet物流管理-成功.zip"这个压缩包中,我们可以推测它包含了实现一个物流管理系统的相关代码和资源。下面将详细探讨Java Servlet在物流管理中的应用及其相关知识点。 1. **Java Servlet基础** Java ...

    基于java--jsp--servlet--tomcat--sqlserver的社区医疗管理系统

    《基于Java-JSP-Servlet-Tomcat-SQLServer的社区医疗管理系统详解》 社区医疗管理系统是一种信息化解决方案,它旨在提高医疗服务的效率和质量,优化资源配置,满足城市社区居民的医疗需求。本文将深入探讨该系统的...

    servlet-api-3.0-alpha-1.jar

    javaweb/javaEE常用jar包,亲测可用,导入到java工程中使用

    Java servlet过滤器配置详解

    Java Servlet过滤器是Java Web应用程序中的重要组件,它在请求被Servlet处理之前和响应返回给客户端之后进行拦截,可以用于实现各种功能,如字符编码转换、URL重写、权限控制等。本篇将深入讲解Java Servlet过滤器的...

    servlet源码 servlet-api-src javax.servlet.Servlet源码

    总的来说,理解和研究`servlet-api-src`中的`javax.servlet.Servlet`源码对于任何Java Web开发者来说都是一个重要的学习步骤。它不仅可以帮助我们深入理解Servlet的工作原理,还可以提升我们在实际项目中的开发效率...

    servlet-api-2.3.jar

    servlet-api-2.3.jar servlet-api-2.3.jar

    servlet-api-3.0-7.0.0pre1-sources.jar

    servlet-api-3.0-7.0.0pre1-sources.jar

    servlet-api-src.jar

    Servlet-api-src.jar是一个重要的Java开发库,主要用于处理服务器端的HTTP请求,它是Servlet技术的核心组成部分。Servlet是Java EE(企业版)平台中的一个关键组件,它允许开发者编写可扩展的服务器端应用程序,这些...

Global site tag (gtag.js) - Google Analytics