具体情况如下:
    通过浏览器访问项目,如果没有session或者session失效,那么会提示,页面过期,请重新登录,但是如果是在没有登录的情况下,直接访问非登录url,则返回的中文乱码,如果在页面中session失效导致的重新登录,则返回的中文正常;经过百度,发现加上response.setContentType("text/html;charset=UTF-8");则不会乱码,但是问题出现了,在登录成功之后的css样式全部失效;有没有大佬知道是什么原因;如果解决一下

解决方案 »

  1.   

    @Override
    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);
            }
            
    }
    这里附上过滤器相关代码
      

  2.   

    css样式全部失效,估计404了,大概率是contextPath的问题,看你css的路径是相对路径还是绝对的了,这个还是你自己检查下,并不复杂