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);
}
}