系列文章目录
JavaWeb中拦截器的学习
前言
一、Filter快速入门
二、Filter执行流程
三、Filter使用细节
1.拦截器配置
2.过滤器链
四、案例
package org.example.web;
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 LoginFilter implements Filter {
public void destroy() {
}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
HttpServletRequest request= (HttpServletRequest) req;
//判断是否为登录注册相关的资源
String[] urls={"/loginServlet","/registerServlet","/css/","/imgs/","/login.jsp","/register.jsp","/checkImageServlet"};
StringBuffer url = request.getRequestURL();
String url1 = url.toString();
for (String u : urls) {
if (url1.contains(u)){
chain.doFilter(req, resp);
return;
}
}
//判断Session中是否有User
HttpSession session = request.getSession();
Object user = session.getAttribute("user");
if (user==null){
//不放行
session.setAttribute("login_msg","您还未登录!");
request.getRequestDispatcher("/login.jsp").forward(req,resp);
}else {
//放行
chain.doFilter(req,resp);
}
}
public void init(FilterConfig config) throws ServletException {
}
}
五、Listener
不常用,作为了解即可
总结
拦截器主要用于权限方面的管理,注意拦截器的使用方法即可