最近 小弟遇到了一个问题,就是关于用户如果没有登入就返回首页,这个问题用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;
}
}
}
(怎么让那些图片,样式 能够正常使用,怎样用过滤器放行那些样式,图片????)
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;
}
}
}
<filter-mapping>
<filter-name>xxx</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
resp.setCharacterEncoding("utf-8"); 这个别在这写,你把response的类型全改成html了
我感觉楼主好像就是这么设置的,所以取css,image的时候也通过这个filter了
2.也可以在filter中进行判断用户请求的url地址,甚至是对某些公共的页面进行进行放行。