spring boot 的简单过滤filter

spring boot 的简单过滤 filter

过滤的作用

https://blog.csdn.net/weixin_40521823/article/details/80218455

spring boot 的配置filter(小白一个,有什么不对请指教)。
在项目创建filers文件夹。
在这里插入图片描述
创建过滤类

package com.example.springbook.filers;


import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;

//urlPatterns 填写要过滤的接口
@WebFilter(urlPatterns ={ "/user/*"}, filterName = "UserFilter")
public class UserFilter implements Filter {
    private  static  final Set<String> 
//不需要过滤的接口。
ALLOWED_PATHS=Collections.unmodifiableSet(new HashSet<>(
            Arrays.asList("/","/user/register.do","/book/")));


    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }


    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {

        HttpServletRequest httpServletRequest=(HttpServletRequest)servletRequest;
        HttpServletResponse response = (HttpServletResponse) servletResponse;


        HttpSession session = httpServletRequest.getSession();
        Object obj = session.getAttribute("username");
        String path = httpServletRequest.getRequestURI().substring(httpServletRequest.getContextPath().length()).replaceAll("[/]+$", "");

        boolean allowedPath = ALLOWED_PATHS.contains(path);

        if(obj==null&&!allowedPath)
        {
            //返回String字符
            //未登录
            response.getWriter().write("403");
            //返回jsp的页面
            //httpServletRequest.getRequestDispatcher("/login.jsp").forward(request,response);
        }
        else
        {
            filterChain.doFilter(httpServletRequest,response);
        }
    }

    @Override
    public void destroy() {

    }
}

spring 需要扫描到file的过滤类,需要在启动类添加@ServletComponentScan的注解

@SpringBootApplication
@MapperScan("com.example.springbook.mapper")
@ServletComponentScan("com.example.springbook.filers")
public class SpringbookApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbookApplication.class, args);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值