文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

java过滤器(Filter)

2023-09-07 21:24

关注

原文链接:java过滤器(Filter – 编程屋

目录

1 过滤器简介

2 Filter详细介绍

3 Filter的用法

3.1 用法1

 3.2 用法2


filter也称之为过滤器,它是javaWeb三大组件之一(Servlet程序、Listener监听器、Filter过滤器)

作用:既可以对请求进行拦截,也可以对响应进行处理。

常见场景:权限检查,日记操作、拦截请求、过滤操作、对请求字符设置编码。

要想介绍filter,就必须介绍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() {    }

3.1 用法1

1)自定义一个过滤器实现Filter接口、配置@WebFilter注解,配置拦截路径(也可通过web.xml配置)

@WebFilter(urlPatterns = "    @Override    public void init(FilterConfig filterConfig) throws ServletException {    }        @Override    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {        System.out.println("我是过滤器,我进来了");    }        @Override    public void destroy() {    }}

2)在启动类上加上@ServletComponentScan注解

@SpringBootApplication@ServletComponentScanpublic class SpringbootInterceptorApplication {    public static void main(String[] args) {        SpringApplication.run(SpringbootInterceptorApplication.class, args);    }}

3)controller:

@RestControllerpublic class LoginController {    @GetMapping("/test/filter")    public String testFilter(){        return "该请求被拦截了,但是在过滤器中已经放行了";    }}

直接浏览器访问:

 控制台输出:发现该请求已经被过滤去拦截

 3.2 用法2

1)自定义一个过滤器实现Filter接口、配置拦截路径(也可通过web.xml配置)

public class MyFilterOne implements Filter {        @Override    public void init(FilterConfig filterConfig) throws ServletException {    }        @Override    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {        System.out.println("我是过滤器,我进来了");        filterChain.doFilter(servletRequest, servletResponse);    }        @Override    public void destroy() {    }}

2)在启动类上注册

@SpringBootApplicationpublic class SpringbootInterceptorApplication {    public static void main(String[] args) {        SpringApplication.run(SpringbootInterceptorApplication.class, args);    }        @Bean    public FilterRegistrationBean getFilterRegistrationBean(){        FilterRegistrationBean bean = new FilterRegistrationBean(new MyFilterOne());        //bean.addUrlPatterns(new String[]{"*.do","*.jsp"});        bean.addUrlPatterns("/*");        return bean;    }}

测试结果与3.1相同。

总结:

要想调用配置一个过滤器:

1)启动类上增加注解@ServletComponentScan

2)新建一个类使其实现Filter接口,并实现里面的三个方法

3)在新建类上加上@WebFilter()注解,配置需要拦截的规则

4)在doFilter方法中控制filterChain.doFilter(servletRequest, servletResponse)调用

同样,如果前后端交互有遇到跨域问题的,也可以通过Filter解决(亲测有效),如:

以上只是部分内容,为了维护方便,本文已迁移到新地址:java过滤器(Filter – 编程屋

来源地址:https://blog.csdn.net/qq_50652600/article/details/127308348

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯