最近 小弟遇到了一个问题,就是关于用户如果没有登入就返回首页,这个问题用filter已经解决,但是随之有出现了这样的问题,就是说, 当用户进入首页,也会被filter拦截,这也没问题,但是这个时候的css样式,图片都被过滤掉,小弟想了好久也没有办法解决。。请大家看看,帮帮忙,下面是filter中的部分代码。。
(怎么让那些图片,样式 能够正常使用,怎样用过滤器放行那些样式,图片????)
 public void doFilter(ServletRequest request, ServletResponse response,   
   FilterChain chain) throws IOException, ServletException {   
  HttpServletRequest req = (HttpServletRequest) request;   
  HttpServletResponse resp = (HttpServletResponse) response;   
  resp.setContentType("text/html;");   
  resp.setCharacterEncoding("utf-8");   
  HttpSession session = req.getSession();   
  PrintWriter out = resp.getWriter();   
  // 得到用户请求的URI   
  String request_uri = req.getRequestURI();  
  // 得到web应用程序的上下文路径   
  String ctxPath = req.getContextPath();   
  // 去除上下文路径,得到剩余部分的路径   
  String uri = request_uri.substring(ctxPath.length());   
  // 判断用户访问的是否是登录页面   
 if (uri.equals("/index.jsp")) {   
   chain.doFilter(request, response);   
   return;   
  } else {   
   // 如果访问的不是登录页面,则判断用户是否已经登录   
   if (null != session.getAttribute("user")   
     && "" != session.getAttribute("user")){   
   chain.doFilter(request, response);   
   return;   
   } else {   
   out.println("<script language=\"javaScript\">"  
      + "parent.location.href='" +ctxPath + logon_page + "'"  
      + "</script>");   
    return;   
   }   
  }   
 } 

解决方案 »

  1.   

    在web.xml里面定义你需要filter的path,比如
    <filter-mapping>
      <filter-name>xxx</filter-name>
      <url-pattern>*.do</url-pattern>
     </filter-mapping>
      

  2.   

    我写了, 在者我用的是struts2,我过滤的是用jsp页面,action是用拦截器来做的, 现在的问题是怎么样让样式,和图片显示, 
      

  3.   

    那个过滤器只过滤以.do结尾的请求,css 图片是不会被过滤的!
      

  4.   

    路径呢,你或者把css,图片路径放在别的地方啊。
      

  5.   

    在filter中配置只拦截jsp和*.do,对于一些静态文件不要走filter拦截了。
      

  6.   

      resp.setContentType("text/html;");   
      resp.setCharacterEncoding("utf-8"); 这个别在这写,你把response的类型全改成html了
      

  7.   

    既然是登陆的控制,应该对整个context做保护,一般url-pattern应该设成 /*
    我感觉楼主好像就是这么设置的,所以取css,image的时候也通过这个filter了
      

  8.   

    <% String base=getServletContext().getContextPath(); %><img src="<%=base %>/images/xxx.jpg" >
      

  9.   

    1.你可以让filter只拦截.do 和.jsp的请求。
    2.也可以在filter中进行判断用户请求的url地址,甚至是对某些公共的页面进行进行放行。