1、生成过滤器类并实现 Filtor借口
2、定义方形请求
@WebFilter(urlPatterns = "/*")//注解——过滤所有请求
public class MyFilter implements Filter {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
//设置放行请求——以用户登陆为例,放行登陆验证以及静态资源
final String[] notFilterUrl = {"tolog", "login", "js", "css", "images", "fonts"};
3、启动类开启扫面注解
@ServletComponentScan//扫描注解
@SpringBootApplication
@MapperScan("com.example.super_manager.dao")
public class SuperManagerApplication {
public static void main(String[] args) {
SpringApplication.run(SuperManagerApplication.class, args);
}
3、过滤器对请求的验证处理
//过滤器过滤判断
if (!(servletRequest instanceof HttpServletRequest)&& !(servletResponse instanceof HttpServletResponse)){
throw new ServletException("仅支持HTTP请求");
}
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
//获得请求路径uri
/*
request.getRequestURL() 返回全路径 http://localhost:8080/bzbs/system/login.jsp
request.getRequestURI() 返回除去host(域名或者ip)部分的路径 /bzbs/system/login.jsp
request.getContextPath() 返回工程名部分,如果工程映射为/,此处返回则为空 /bzbs
request.getServletPath() 返回除去host和工程名部分的路径 /system/login.jsp
* */
String uri = request.getRequestURI();
//乱码处理
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
response.setCharacterEncoding("utf-8");
boolean notFilter = false;
//遍历不拦截列表并查找是否存在指定值
for (String str : notFilterUrl) {
if (uri.contains(str)) {//验证是否有指定值
notFilter = true;
break;
}
}
//System.out.println("过滤器工作");
HttpSession session = request.getSession();
Object user = session.getAttribute("userLog");
//System.out.println(user+"#############");
if (user==null && !notFilter){
response.sendRedirect("tolog");
return ;
}
4、调用下一个过滤器或资源
filterChain.doFilter(request,response);//调用下一个过滤器或web资源
本文介绍如何使用Java Servlet过滤器对接口请求进行过滤处理,包括过滤器类的创建及配置、请求路径的处理、乱码问题解决等,并通过具体实例展示了过滤器的工作流程。
10万+

被折叠的 条评论
为什么被折叠?



