正在回答 回答被采纳积分+1
3回答
电磁护盾
2020-04-28 11:23:58
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | 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等路径放行,代码如下:
1 2 3 4 5 6 | 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积分~
来为老师/同学的回答评分吧