问题描述
最近小弟遇到了一个问题,就是关于用户如果没有登入就返回首页,这个问题用filter已经解决,但是随之有出现了这样的问题,就是说,当用户进入首页,也会被filter拦截,这也没问题,但是这个时候的css样式,图片都被过滤掉,小弟想了好久也没有办法解决。。请大家看看,帮帮忙,下面是filter中的部分代码。。(怎么让那些图片,样式能够正常使用,怎样用过滤器放行那些样式,图片????)publicvoiddoFilter(ServletRequestrequest,ServletResponseresponse,FilterChainchain)throwsIOException,ServletException{HttpServletRequestreq=(HttpServletRequest)request;HttpServletResponseresp=(HttpServletResponse)response;resp.setContentType("text/html;");resp.setCharacterEncoding("utf-8");HttpSessionsession=req.getSession();PrintWriterout=resp.getWriter();//得到用户请求的URIStringrequest_uri=req.getRequestURI();//得到web应用程序的上下文路径StringctxPath=req.getContextPath();//去除上下文路径,得到剩余部分的路径Stringuri=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("<scriptlanguage="javaScript">"+"parent.location.href='"+ctxPath+logon_page+"'"+"</script>");return;}}}
解决方案
解决方案二:
在web.xml里面定义你需要filter的path,比如<filter-mapping><filter-name>xxx</filter-name><url-pattern>*.do</url-pattern></filter-mapping>
解决方案三:
我写了,在者我用的是struts2,我过滤的是用jsp页面,action是用拦截器来做的,现在的问题是怎么样让样式,和图片显示,
解决方案四:
那个过滤器只过滤以.do结尾的请求,css图片是不会被过滤的!
解决方案五:
路径呢,你或者把css,图片路径放在别的地方啊。
解决方案六:
在filter中配置只拦截jsp和*.do,对于一些静态文件不要走filter拦截了。
解决方案七:
resp.setContentType("text/html;");resp.setCharacterEncoding("utf-8");这个别在这写,你把response的类型全改成html了
解决方案八:
既然是登陆的控制,应该对整个context做保护,一般url-pattern应该设成/*我感觉楼主好像就是这么设置的,所以取css,image的时候也通过这个filter了
解决方案:
<%Stringbase=getServletContext().getContextPath();%><imgsrc="<%=base%>/images/xxx.jpg">
解决方案:
1.你可以让filter只拦截.do和.jsp的请求。2.也可以在filter中进行判断用户请求的url地址,甚至是对某些公共的页面进行进行放行。