filter称之为过滤器,不像Servlet,它不处理具体的业务逻辑,它是一个中间者,它能够按照具体的规则拦截我们的请求和响应,并执行响应的操作。
    筛选的是前端往后端发送的请求 加过滤器 这些请求会先到过滤器 再到后端
    进行设置的筛选image.png

    1. public class LoginFilter extends HttpFilter {
    2. @Override
    3. protected void doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException {
    4. //创建白名单
    5. List<String> witheNames = Arrays.asList(request.getContextPath() + "/login", request.getContextPath() + "/login.jsp");
    6. // 如果在白名单我就放行
    7. if (witheNames.contains(request.getRequestURI())) {
    8. chain.doFilter(request, response);
    9. } else {
    10. HttpSession session = request.getSession(false);
    11. // 有用户信息说明已经登录
    12. if (session != null && session.getAttribute("user") != null) {
    13. chain.doFilter(request, response);
    14. } else {
    15. response.sendRedirect(request.getContextPath() + "/login.jsp");
    16. }
    17. }
    18. }
    19. }
    1. <filter>
    2. <filter-name>LoginFilter</filter-name>
    3. <filter-class>com.ydlclass.LoginFilter</filter-class>
    4. </filter>
    5. <filter-mapping>
    6. <filter-name>LoginFilter</filter-name>
    7. <url-pattern>/*</url-pattern>
    8. </filter-mapping>