过滤器
过滤器的作用:
在客户端的请求访问后端资源之前,拦截这些请求。
在服务器的响应发送回客户端之前,处理这些响应。
创建Filter必须实现Filter接口,该接口有三个需要实现的方法:
package cn.edu.mju.project24.filters;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebFilter("/*")
public class AuthFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("init");
}
//过滤器、、
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest)servletRequest;
String path = request.getRequestURI();
request.setAttribute("path",path);
System.out.println(path);
if("/login".equals(path) || "/captche".equals(path) || path.startsWith("/dist") || path.startsWith("/plugins")){
chain.doFilter(servletRequest,servletResponse);
}else {
Object obj = request.getSession().getAttribute("user");
if (obj != null){
chain.doFilter(servletRequest,servletResponse);
}else {
((HttpServletResponse)servletResponse).sendRedirect("/login");
}
}
}
@Override
public void destroy() {
System.out.println("destroy");
}
}