正在回答 回答被采纳积分+1
3回答
电磁护盾
2020-04-28 11:23:58
package com.imooc1.web.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.annotation.WebFilter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.imooc1.domain.User; @WebFilter("/AuthFilter") public class AuthFilter implements Filter { public AuthFilter() { // TODO Auto-generated constructor stub } public void destroy() { // TODO Auto-generated method stub } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // TODO Auto-generated method stub System.out.println("过滤器已生效"); String str=((HttpServletRequest) request).getRequestURI().toString(); System.out.println(str+"<————————"); if(str.indexOf(".css")>0||str.indexOf(".jpg")>0||str.indexOf(".png")>0||str.indexOf("login")>0||str.indexOf("LoginServlet")>0||str.indexOf("UserService")>0||str.indexOf("CheckImgServlet")>0) { System.out.println("过滤器已生效A"); chain.doFilter(request, response); return; }else { User user= (User) ((HttpServletRequest) request).getSession().getAttribute("existUser"); if(user==null||"".equals(user)) { System.out.println("过滤器已生效B"); // 未登录 request.setAttribute("msg1", "用户未登陆"); ((HttpServletResponse)response).sendRedirect(((HttpServletRequest) request).getContextPath()+"/login.jsp"); return; }else { System.out.println("过滤器已生效C"); chain.doFilter(request, response); return; } } // if(str.indexOf(".css")>0||str.indexOf(".jpg")>0||str.indexOf(".png")>0||str.indexOf("login")>0||str.indexOf("LoginServlet")>0||str.indexOf("UserService")>0||str.indexOf("CheckImgServlet")>0) { // System.out.println("过滤器已生效A"); // chain.doFilter(request, response); // return; // } // User user= (User) ((HttpServletRequest) request).getSession().getAttribute("existUser"); // if(user==null||"".equals(user)) { // System.out.println("过滤器已生效B"); // // 未登录 // request.setAttribute("msg1", "用户未登陆"); // ((HttpServletResponse)response).sendRedirect(((HttpServletRequest) request).getContextPath()+"/login.jsp"); // return; // }else { // System.out.println("过滤器已生效C"); // chain.doFilter(request, response); // return; // } } public void init(FilterConfig fConfig) throws ServletException { // TODO Auto-generated method stub } }
那些都放行了,过滤器代码一直都是这么写的。 以前能正常显示css样式,代码一直没改过,现在用好几个浏览器试了一下,css样式都加载不出来。
但是把 <!DOCTYPE html> 这个表头注释掉,css样式就能显示了。可是登录页面的表单跑到浏览器窗口的靠下面的位置上了,但是其他页面还是正常的。
好帮手慕小脸
2020-04-28 10:04:55
同学你好,建议同学更换为其他浏览器后再进行访问。查看是否还出现css样式加载不出来的情况。如果依然存在上述情况,老师猜测可能是css路径被拦截了,可以在编码过滤器中增加判断,对css,js,png等路径放行,代码如下:
HttpServletRequest req =(HttpServletRequest) request; String url=req.getRequestURI(); if(url.indexOf(".css")>0||url.indexOf(".jpg")>0||url.indexOf(".png")>0) { chain.doFilter(request, response); return; }
祝学习愉快~
3. Java 数据库开发与实战应用
- 参与学习 人
- 提交作业 357 份
- 解答问题 8016 个
本阶段将带你学习MySQL数据库,JDBC接口,MyBatis框架等,带你掌握的数据的存放和管理。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星