具体情况如下:
通过浏览器访问项目,如果没有session或者session失效,那么会提示,页面过期,请重新登录,但是如果是在没有登录的情况下,直接访问非登录url,则返回的中文乱码,如果在页面中session失效导致的重新登录,则返回的中文正常;经过百度,发现加上response.setContentType("text/html;charset=UTF-8");则不会乱码,但是问题出现了,在登录成功之后的css样式全部失效;有没有大佬知道是什么原因;如果解决一下
通过浏览器访问项目,如果没有session或者session失效,那么会提示,页面过期,请重新登录,但是如果是在没有登录的情况下,直接访问非登录url,则返回的中文乱码,如果在页面中session失效导致的重新登录,则返回的中文正常;经过百度,发现加上response.setContentType("text/html;charset=UTF-8");则不会乱码,但是问题出现了,在登录成功之后的css样式全部失效;有没有大佬知道是什么原因;如果解决一下
public void doFilter(ServletRequest servletrequest, ServletResponse servletresponse, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest)servletrequest;
HttpServletResponse response = (HttpServletResponse)servletresponse;
request.setCharacterEncoding(this.encoding);
response.setCharacterEncoding(this.encoding);
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Pragma", "no-cache");
response.setDateHeader("Expires", 0L);
response.addHeader("Cache-Control", "must-revalidate");
//response.setContentType("text/html;charset=UTF-8");
HttpSession session = request.getSession();
/* 非过滤路径 */
boolean beFilter = true;
String reqPath = StringUtils.isEmpty(request.getServletPath()) ? request.getPathInfo() : request.getServletPath();
for (String s : getIgnoreUrls()) {
if (reqPath.equals(s.trim()) || reqPath.indexOf(s)!=-1 || reqPath.isEmpty()) {
beFilter = false;
break;
}
}
// System.out.println(session.getId()+"------"+beFilter+"------"+reqPath);
if (beFilter) {
CacheRbacUser cacheUser = (CacheRbacUser)session.getAttribute(SessionConstants.JSDP_USER_BEAN);
if(session == null || cacheUser == null || CollectionUtils.isEmpty(cacheUser)){
log.info("session失效,跳转到登陆页面......");
session.invalidate();
String loginurl="http://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPath();
StringBuilder builder = new StringBuilder();
builder.append("<script type=\"text/javascript\" charset=\"UTF-8\">");
//builder.append("alert(\"页面过期,请重新登录111!\");");
builder.append("window.top.location.href=\"");
builder.append(loginurl);
builder.append("\";</script>");
PrintWriter out = response.getWriter();
out.print(builder.toString());
out.close();
}else {
chain.doFilter(request,response);
}
}else {
chain.doFilter(request, response);
}
}
这里附上过滤器相关代码