正在回答 回答被采纳积分+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 星