如何在Response到达浏览器之前拦截404错误,并修改其值为200
1. 项目中采用了dojo框架, dojo.requre 加载时会加载一些不存在的资源文件
2. 在firebug中可以看到很多404错误
3. 这个404错误对其它组件有影响,必须修改它
现在要做的就是在Response到达浏览器之前拦截404,如果404,就修改其值为200,
但我发现我添加的代码不生效, 在firebug中任然能看到404
下面是我的代码,请大家看一下哪里有问题
package com.cisco.My.server.admin.filter;import java.io.IOException;import java.util.regex.Matcher;import java.util.regex.Pattern;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletOutputStream;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.log4j.Logger;public class My404Filter implements Filter { public static Logger log=Logger.getLogger("My404Filter.class"); @Override public void destroy() { // TODO Auto-generated method stub } @Override public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException { HttpServletRequest request=(HttpServletRequest) req; String urlStr=request.getRequestURI().toString(); log.info("urlStr="+urlStr); MyHttpServletResponseWrapper response = new MyHttpServletResponseWrapper( (HttpServletResponse) resp); chain.doFilter(request, response); int status=response.getStatus(); log.info("status="+status); if(status==404 ){ log.info("find 404"); response.setStatus(HttpServletResponse.SC_OK); response.getWriter().println("<html><body><p></p></body></html>"); } } @Override public void init(FilterConfig arg0) throws ServletException { } }