JavaEE:过滤器

简介: JavaEE:过滤器

🔖过滤器的概念


过滤器是JavaEE中对请求和响应进行拦截的技术,通过定义一个类并实现Filter接口,可以让某些请求地址在到达servlet之前进入到指定的过滤器中,从而实现统一的处理,例如编码过滤、权限验证等进行统一过滤。

过滤器的作用:

⦁  将前端发送的请求先进入指定过滤器进行“筛选”,或者设置公共的属性、配置、进行公共处理.

   ➱  提高代码复用性,提高可维护性    

⦁  可进行逻辑判断,若不满足条件,直接响应前端无需进入Servlet处理程序 " 请求拦截 "

⦁  一个过滤器可以配置给多个资源使用

⦁  一个资源也可以配置多个过滤器,按照配置顺序调用

🔖过滤器的实现方式


Servlet 的API中提供了一个Filter接口,开发web应用时,如果编写的Java类实现了这个接口,则把这个java类称之为过滤器Filter。通过Filter技术,开发人员可以实现用户在访问某个目标资源之前,对访问的请求和响应进行拦截.


具体实现步骤:

第一步:新建一个包,结合类名,让这个类实现 Filter接口.


由于过滤器是一个独立的功能,所以我们需要新建一个包(Filter),这里我们以创建一个编码过滤器为例,注意命名规范,以Filter结尾。


< 注意是 java.servlet .* 这个包里的 Filter接口 >



第二步:重写 Filter接口中的抽象方法.

import javax.servlet.*;
import java.io.IOException;
 
public class EncodingFilter implements Filter {
 
    /*
    初始化过滤器
     */
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
 
    }
 
    /*
     执行过滤器操作的方法
     */
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
 
    }
    /*
    过滤器销毁时执行
     */
    @Override
    public void destroy() {
 
    }
 
}

补充:

这里其实只重写 doFilter方法就可以了,init 和destory是默认方法且我们日常学习阶段很少用到

< init 和 destory会默认调用父类的方法 >


第三步:在 doFilter方法中设置字符集,并让过滤器继续向后执行.

将下图代码写在 doFilter方法中

        //设置请求编码集
        servletRequest.setCharacterEncoding("utf-8");
        //设置响应编码集
        servletResponse.setContentType("text/html;charset=utf-8");
        //让请求离开过滤器继续向下执行,下一个可能是过滤器或目标访问的servlet
        filterChain.doFilter(servletRequest,servletResponse);

参考下图:


第四步:在web.xml文件中配置过滤器.

把 servlet标签换成 filter标签即可,可参考下图代码

<!--    注册编码过滤器-->
    <filter>
        <filter-name>encoding</filter-name>
        <filter-class>webserver.filter.EncodingFilter</filter-class>
    </filter>
<!--    配置哪些地址可以进入到编码过滤器-->
    <filter-mapping>
        <filter-name>encoding</filter-name>
        <url-pattern>/*</url-pattern>  <!-- /* 表示所有向后端发送的请求,都进入到编码过滤器中-->
    </filter-mapping>

参考下图:

通过编码过滤器的设置,我们就不需要在每个Servlet接收post请求时都设置解码字符编码了,前端发送的请求会先进入到我们的编码过滤器,提高代码复用性




本次的分享就到此为止了,希望我的分享能给您带来帮助,创作不易也欢迎大家三连支持,你们的点赞就是博主更新最大的动力! 如有不同意见,欢迎评论区积极讨论交流,让我们一起学习进步! 有 相关问题也可以私信博主,评论区和私信都会认真查看的,我们下次再见



海漫浩浩,我亦苦作舟!大家一起学习,一起进步!  

相关文章
|
10月前
|
监控 安全 Java
【JavaWeb】 三大组件之过滤器 Filter
过滤器(Filter)是Java Web应用中的一种组件,它在请求到达Servlet或JSP之前或者响应送回客户端之前,对请求和响应进行预处理和后处理操作。通过使用过滤器,可以对请求进行过滤,拦截请求,修改请求参数,在请求被处理之前进行一些预处理操作;同时也可以对响应进行过滤,对响应内容进行修改,添加一些额外的处理。
|
29天前
|
安全 Java Spring
SpringSecurity6从入门到实战之Filter过滤器回顾
该文主要介绍了SpringSecurity框架中的过滤器Filter,探讨了在没有SpringSecurity时如何检查用户登录状态以保护资源。文中通过流程图展示了过滤器在HTTP请求处理中的位置,并提供了官方和中文文档链接。过滤器需实现Filter接口,用于拦截请求并进行预处理和后处理,例如强制登录检查。过滤器链FilterChain则是一系列Filter和资源的组合,通过doFilter方法逐个调用下一个过滤器或传递到目标资源。
|
11月前
|
Java 应用服务中间件 数据安全/隐私保护
JavaWeb 三大组件之 过滤器 Filter
JavaWeb 三大组件之 过滤器 Filter
66 0
|
2月前
javaWeb过滤器Filter(二)
javaWeb过滤器Filter(二)
|
2月前
javaWeb过滤器Filter(一)
javaWeb过滤器Filter(一)
|
11月前
|
XML 缓存 Java
JavaWeb-Filter过滤器
Filter过滤器 1. Filter的生命周期 2.Filter的配置 3.拦截路径 4.拦截具体的使用 5.拦截方式配置(资源被访问方式) 6.FilterChain拦截链
57 0
|
设计模式 监控 前端开发
【JavaWeb】Filter过滤器到底是什么
【JavaWeb】Filter过滤器到底是什么
【JavaWeb】Filter过滤器到底是什么
|
Java
【JavaWeb】【学习】【过滤器】Filter 的简单应用
【JavaWeb】【学习】【过滤器】Filter 的简单应用
112 0
【JavaWeb】【学习】【过滤器】Filter 的简单应用
|
数据处理
javaweb Filter过滤器
javaweb Filter过滤器
javaweb Filter过滤器