CodeFilter(字符过滤)
对于jsp/html/css/js/servlet的请求都会经过过滤器
对于响应类型就不能去设置。否则会造成对于css文件的请求输出成html,导致无法显示
private String code;
/**
* @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
*/
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
//对于jsp/html/css/js/servlet的请求都会经过过滤器
//对于响应类型就不能去设置。否则会造成对于css文件的请求输出成html,导致无法显示
request.setCharacterEncoding(code);
response.setCharacterEncoding(code);
chain.doFilter(request, response);
}
/**
* @see Filter#init(FilterConfig)
*/
public void init(FilterConfig fConfig) throws ServletException {
code=fConfig.getInitParameter("code");
}
CodeFilter在web.xml要这样配置
设置了CodeFilter(字符过滤)后,去掉这两行代码,还是要保留响应成html的代码
SessionFilter(会话过滤器)
/**
* @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
*/
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest req=(HttpServletRequest)request;//向下转型,转成和HTTP协议相关的请求和响应
HttpServletResponse res=(HttpServletResponse)response;
HttpSession session=req.getSession();
User user=(User)req.getAttribute("loginUser");
String servletPath=req.getServletPath();
//判断是否是登录页,登录servlet
//indexOf是为包含
if(servletPath!=null && servletPath.indexOf("/index.jsp")!=-1
||servletPath.indexOf("/LoginServlet")!=-1
||servletPath.indexOf(".css")!=-1
||servletPath.indexOf(".jpg")!=-1
||servletPath.indexOf(".png")!=-1) {
chain.doFilter(request, response);//执行下一个过滤器,没有下一个过滤器,就直接访问到目标servlet
}else {
//比如登录界面、登录servlet请求,是不需要登录状态就可以直接访问的
if(user!=null) {
//没有经过servlet,所以还是要写
response.setContentType("text/html");
request.setCharacterEncoding("UTF-8");
PrintWriter out =response.getWriter();
out.println("<script>");
out.println("window.alert('会话失效了!');");
out.println("window.top.location.href='"+req.getContextPath()+"/index.jsp';");
out.println("</script>");
}else {
chain.doFilter(request, response);//执行下一个过滤器,没有下一个过滤器,就直接访问到目标servlet
}
}
}
来源:CSDN
作者:走到天涯海角
链接:https://blog.csdn.net/weixin_42995083/article/details/104444464