1. 项目中采用了dojo框架, dojo.requre 加载时会加载一些不存在的资源文件
2. 在firebug中可以看到很多404错误
3. 这个404错误对其它组件有影响,必须修改它
现在要做的就是在Response到达浏览器之前拦截404,如果404,就修改其值为200,
但我发现我添加的代码不生效, 在firebug中任然能看到404
下面是我的代码,请大家看一下哪里有问题
- Java code
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 { } }
------解决方案--------------------------------------------------------
跟你是什么框架无关,404是http协议,在web服务器或者web容器中返回,要拦截404可以去web服务器或容器里面配置。
------解决方案--------------------------------------------------------
自己配置404错误页面就行
<error-page>
<error-code>400</error-code>
<location>/error.jsp</location>
</error-page>
如果是静态文件404,那就不是项目的问题了
看下服务器配置相关的
------解决方案--------------------------------------------------------
楼上这种方法可以采用,先设个<%@ page language="java" import="java.util.*" pageEncoding="gbk" errorPage="errors.jsp"%>页面,然后再写个errors.jsp页面用于跳转的,开头这么写<%@page pageEncoding="gbk" isErrorPage="true" %>
最后在body里面随便你写,想写200就写200