过滤器学习
过滤器学习
1.什么是过滤器
- Filter 表示过滤器,是JavaWeb三大组件(Servlet、Filter、Listener)之一。
- 过滤器可以把对资源的请求拦截下来,从而实现一些特殊的功能。
- 过滤器一般完成一些通用的操作,如权限控制、统一编码处理、敏感字符处理等。
2.执行流程
执行放行前逻辑->放行->访问资源->执行放行后逻辑
放行前:对 request 数据进行处理
放行后:对 response 数据进行处理
3.拦截路径配置
拦截具体资源:/index.jsp
目录拦截:/user/*:访问/user下的所有资源都会被拦截
后缀名拦截: .jsp:访问后缀名为jsp的资源都会被拦截
拦截所有:/*:访问所有资源都会被拦截
4.过滤器链
配置在前面的过滤器/字母在前的先执行(放行前逻辑),放行后的逻辑顺序相反
package com.xxxx.filter; import javax.servlet.*; import javax.servlet.annotation.WebFilter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import java.io.IOException; @WebFilter("/*") public class Filter01 implements Filter { @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { HttpServletRequest request=(HttpServletRequest)servletRequest; //判断访问资源是否和登录注册相关 String[] urls={"/login.jsp","/imgs","/css","/loginServlet","/register.jsp","/registerServlet","/checkCodeServlet"}; //获取当前的访问路径 String url = request.getRequestURL().toString(); //循环判断 for (String u:urls) { if(url.contains(u)){ //找到了->放行 filterChain.doFilter(servletRequest,servletResponse); return; } } HttpSession session = request.getSession(); Object user = session.getAttribute("user"); if(user!=null){ filterChain.doFilter(servletRequest,servletResponse); }else{ request.setAttribute("name","您尚未登录"); request.getRequestDispatcher("/login.jsp").forward(request,servletResponse); } } @Override public void init(FilterConfig filterConfig) throws ServletException { Filter.super.init(filterConfig); } @Override public void destroy() { Filter.super.destroy(); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)