JavaWeb过滤器(Filter)详解

简介: Filter:过滤器1.概念:web中的过滤器:当访问服务器的资源时,过滤器可以将请求拦截下来,完成一些特殊的功能过滤器的作用:一般用于完成通用的操作,如登录验证、统一编码处理、敏感字符过滤等等。

JavaWeb过滤器(Filter)详解



Filter:过滤器


1.概念:


web中的过滤器:当访问服务器的资源时,过滤器可以将请求拦截下来,完成一些特殊的功能


过滤器的作用:一般用于完成通用的操作,如登录验证、统一编码处理、敏感字符过滤等等。


2.Filter接口源码


public interface Filter {
    default void init(FilterConfig filterConfig) throws ServletException {
     }
    void doFilter(ServletRequest var1, ServletResponse var2, FilterChain var3) throws IOException, ServletException;
    default void destroy() {
    }
  }  


注意:通过查看源码我们发现,只有doFilter方法没有实现,我们可以只重写doFilter方法,其他两个方法可以不重写


过滤器的生命周期方法:


(1)init:在服务器启动后,会创建Filter对象,然后调用init方法。只执行一次,用于加载资源


(2)doFilter:每一次请求被拦截资源时,会执行。执行多次


(3)destroy:在服务器关闭后,Filter对象被销毁。如果服务器是正常关闭,则会执行destroy方法,只执行一次。用于释放资源


3.Filter的快速入门


@WebFilter("/*")//注解配置
public class FilterDemo implements Filter {    
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("对request进行过滤");
        filterChain.doFilter(servletRequest,servletResponse); //放行
        System.out.println("对response进行过滤");
    }
}


4.Filter配置拦截路径


(1)web.xml配置


<filter>
    <filter-name>写filter的名字</filter-name>
    <filter-class>写filter的全类名路径</filter-class>
</filter>
<filter-mapping>
    <filter-name>写filter的名字</filter-name>
    <url-pattern>写拦截路径</url-pattern>
</filter-mapping>


(2)注解配置:查看源码得以下配置项


filterName:该filter的名字

initParams:初始化参数

displayName:filter显示名称

servletNames:指定对哪些servlet进行过滤

asyncSupported:是否支持异步模式

urlPatterns:指定拦截路径

value:指定拦截路径


注意:urlPatterns和value是一样的。urlPatterns和value只能配置一个,不能两个都配置,两个都配置就会报错。


实例:


@WebFilter(filterName = "loginCheckFilter",urlPatterns = "/*")



相关文章
|
3天前
|
Web App开发 SQL Java
javaweb实现分页(二)
javaweb实现分页(二)
22 1
|
3天前
|
SQL 关系型数据库 MySQL
javaweb实现分页查询(一)
javaweb实现分页查询(一)
20 0
|
3天前
|
JSON Java 应用服务中间件
JavaWeb项目之乱码问题及如何解决
JavaWeb项目之乱码问题及如何解决
|
3天前
|
Java 程序员 应用服务中间件
JavaWeb之过滤器(Filter)与监听器(Listener)
本文介绍了JavaWeb中的过滤器(Filter)和监听器(Listener)概念及其使用。过滤器主要用于拦截和处理Web资源请求,如进行编码设置、权限验证等,它在Servlet之前和之后执行。监听器则监听域对象(如ServletRequest、HttpSession、ServletContext)状态变化,分为创建/销毁监听和属性变化监听。监听器在Web.xml中注册后会在相应事件发生时自动执行,例如用于统计网站访问人数或初始化配置。
|
3天前
|
Java
springboot项目出现Exception in thread “main“ java.lang.NoClassDefFoundError: javax/servlet/Filter
springboot项目出现Exception in thread “main“ java.lang.NoClassDefFoundError: javax/servlet/Filter
16 0
|
3天前
|
JavaScript 前端开发
javaweb文件上传和下载
javaweb文件上传和下载
|
3天前
|
前端开发 NoSQL 应用服务中间件
javaweb单点登录的三种实现方式
javaweb单点登录的三种实现方式
43 0
|
3天前
|
SQL 前端开发 Java
Java后端进阶之路: JavaWeb(四)
Java后端进阶之路: JavaWeb
35 1
|
3天前
|
XML SQL Java
Java后端进阶之路: JavaWeb(三)
Java后端进阶之路: JavaWeb
35 1
|
3天前
|
安全 Java 调度
深入理解Java并发编程:线程安全与性能优化
【5月更文挑战第12天】 在现代软件开发中,多线程编程是提升应用程序性能和响应能力的关键手段之一。特别是在Java语言中,由于其内置的跨平台线程支持,开发者可以轻松地创建和管理线程。然而,随之而来的并发问题也不容小觑。本文将探讨Java并发编程的核心概念,包括线程安全策略、锁机制以及性能优化技巧。通过实例分析与性能比较,我们旨在为读者提供一套既确保线程安全又兼顾性能的编程指导。