filter 使用注意点
过滤器设置
<filter>
<filter-name>AdminFilter</filter-name>
<filter-class>AdminFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>AdminFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.io.IOException;
public class AdminFilter implements Filter {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest httpServletRequest= (HttpServletRequest) servletRequest;
String requestURI=httpServletRequest.getRequestURI();
HttpSession session=httpServletRequest.getSession();
Object user=session.getAttribute("user");
Object userword1=session.getAttribute("userword");
servletRequest.setCharacterEncoding("utf-8");
if (requestURI.endsWith("/")||user!=null||requestURI.endsWith("/index.jsp")||requestURI.endsWith("/login")){
System.out.println("11111111");
if(userword1!=null&&"日".equals(userword1.toString())) {
System.out.println("脏话辨别启动");
servletRequest.getRequestDispatcher("/wordfail.jsp").forward(servletRequest,servletResponse);
}
filterChain.doFilter(servletRequest,servletResponse);
} else{
servletRequest.getRequestDispatcher("/index.jsp").forward(servletRequest,servletResponse);
}
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void destroy() {
}
}
如果过滤器配置时候偷懒用/*
那么在设置过滤器时就要将登陆界面放到过滤器之外
if (requestURI.endsWith("/")||user!=null||requestURI.endsWith("/index.jsp")||requestURI.endsWith("/login")){
System.out.println("11111111");
if(userword1!=null&&"日".equals(userword1.toString())) {
System.out.println("脏话辨别启动");
servletRequest.getRequestDispatcher("/wordfail.jsp").forward(servletRequest,servletResponse);
}
filterChain.doFilter(servletRequest,servletResponse);
} else{
servletRequest.getRequestDispatcher("/index.jsp").forward(servletRequest,servletResponse);
}
否则
当你登录的时候,session创建过程是在loginservlet之中建立出来的,然而我们的拦截器会出现在session创建之前,所以无论我们怎么努力的输入密码登录,我们始终会在第一个界面反复的跳转刷新,无果。