使用过滤器,处理404错误

来源:互联网 发布:socket vc 编程实例 编辑:程序博客网 时间:2024/06/05 06:46

Error404Filter

package com.version3.interceptor;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class Error404Filter implements Filter {@Overridepublic void destroy() {}@Overridepublic void init(FilterConfig arg0) throws ServletException {}@Overridepublic void doFilter(ServletRequest req, ServletResponse rep,FilterChain chain) throws IOException, ServletException {HttpServletRequest request = (HttpServletRequest) req;HttpServletResponse response = (HttpServletResponse) rep;Error404ResponseWrapper responseWrapper = new Error404ResponseWrapper(this, response);chain.doFilter(request, responseWrapper);if (responseWrapper.isFound()) {return;}//String uri = request.getRequestURI();//System.out.println(uri);response.sendRedirect("/public/err404.jsp");}}

Error404ResponseWrapper

package com.version3.interceptor;import java.io.IOException;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpServletResponseWrapper;class Error404ResponseWrapper extends HttpServletResponseWrapper {private int status = SC_OK;public Error404ResponseWrapper(Error404Filter error404Filter,HttpServletResponse response) {super(response);}@Overridepublic void sendError(int sc) throws IOException {this.status = sc;if (isFound()) {super.sendError(sc);} else {super.setStatus(SC_OK);}}@Overridepublic void sendError(int sc, String msg) throws IOException {this.status = sc;if (isFound()) {super.sendError(sc, msg);} else {super.setStatus(SC_OK);}}public void setStatus(int status) {this.status = status;super.setStatus(status);}@Overridepublic void reset() {this.status = SC_OK;super.reset();}public boolean isFound() {return status != SC_NOT_FOUND;}}

web.xml配置

<filter><filter-name>404</filter-name><filter-class>com.version3.interceptor.Error404Filter</filter-class></filter><filter-mapping><filter-name>404</filter-name><url-pattern>/*</url-pattern></filter-mapping>



原文章http://www.th7.cn/Program/java/201604/797711.shtml

0 0