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