zoukankan      html  css  js  c++  java
  • Springboot对filter的使用

    Filter是Servlet技术中最实用的技术,Web开发人员通过Filter技术,最常见的字符集编码的过滤,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。它主要用于对用户请求进行预处理,也可以对HttpServletResponse进行后处理。使用Filter的完整流程:Filter对用户请求进行预处理,接着将请求交给Servlet进行处理并生成响应,最后Filter再对服务器响应进行后处理

    方法1: 使用自带的FilterRegistrationBean 完成过滤器的设置

    一:先准备过滤器:

    package com.example.spingbootdemo1.listener;
    
    
    import javax.servlet.*;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpServletResponseWrapper;
    import java.io.IOException;
    
    public class MyFilter implements Filter {
        @Override
        public void init(FilterConfig filterConfig) throws ServletException {
    
        }
    
        @Override
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
            HttpServletRequest httpServletRequest= (HttpServletRequest) request;
            HttpServletResponseWrapper httpServletResponseWrapper=new HttpServletResponseWrapper((HttpServletResponse) response);
            if (httpServletRequest.getRequestURI().indexOf("/login") !=-1||httpServletRequest.getRequestURI().indexOf("/onlineCount") !=-1||httpServletRequest.getRequestURI().indexOf("/index") !=-1) {
                chain.doFilter(request, response);
            }else{
                httpServletResponseWrapper.sendRedirect("/login");
            }
        }
    
        @Override
        public void destroy() {
    
        }
    }

    二.创建的配置类MyMvcConfig中添加如下代码

    @Bean
        public FilterRegistrationBean filterRegist() {
            FilterRegistrationBeanfrBean=newFilterRegistrationBean();
            frBean.setFilter(newMyFilter());
            frBean.addUrlPatterns("/*");
            returnfrBean;    
        }

    方法2: 使用@WebFilter注解完成过滤器的设置

    同监听器

  • 相关阅读:
    js 多媒体文件(图片,表格 等) 下载方法
    CentOS7 + asp.net core 3.1 + mysql 8 配置备忘
    项目管理平台参考设计
    golang 使用rate实现redis qps令牌桶限流
    golang执行命令实时输出(协程通过channel更新数据到主进程)
    go-chart go后端生成图表base64
    go-chart go后端生成图表base64
    golang OOM分析
    Golang xorm time自定义解析
    python 多线程
  • 原文地址:https://www.cnblogs.com/nyhhd/p/12684287.html
Copyright © 2011-2022 走看看