目录
一、Filter 过滤器简介
Filter 过滤器是 JavaWeb 的三大组件之一。
JavaWeb 三大组件分别是Servlet 程序、Listener 监听器、Filter 过滤器。
Filter 过滤器是 JavaEE 的规范,也就是一个接口。
Filter 过滤器作用是拦截请求和过滤响应。
拦截请求常见的应用场景有权限检查、日记操作、事务管理等等。
Filter工作流程图:
二、Filter 过滤器的使用步骤
编写一个类去实现 Filter 接口,并实现过滤方法 doFilter():
public class AdminFilter implements Filter {
@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;
HttpSession session = httpServletRequest.getSession();
Object user = session.getAttribute("user");
// 如果等于 null,说明还没有登录
if (user == null) {
servletRequest.getRequestDispatcher("/login.jsp").forward(servletRequest,servletResponse);
return;
}else {
// 让程序继续往下访问用户的目标资源
filterChain.doFilter(servletRequest,servletResponse);
}
}
@Override
public void destroy() {
}
}
到 web.xml 中去配置 Filter 的拦截路径:
<filter>
<filter-name>AdminFilter</filter-name>
<filter-class>filter.AdminFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>AdminFilter</filter-name>