import
java.io.IOException;
import
java.net.URLDecoder;
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;
public
class EncodingFilter implements
Filter{
String encoding= null ;
FilterConfig filterConfig= null ;
//销毁方法
public
void destroy() {
// TODO Auto-generated method stub
this .encoding= null ;
this .filterConfig= null ;
}
//过滤处理方法
public
void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws
IOException, ServletException {
// TODO Auto-generated method stub
HttpServletRequest req = (HttpServletRequest) request;
String uri = req.getRequestURI();
String ch = URLDecoder.decode(uri, encoding);
if (uri.equals(ch)) {
chain.doFilter(req, response);
return ;
}
ch = ch.substring(req.getContextPath().length());
filterConfig.getServletContext().getRequestDispatcher(ch).forward(req, response);
}
//初始化方法
public
void init(FilterConfig filterConfig) throws
ServletException {
this .filterConfig=filterConfig;
this .encoding=filterConfig.getInitParameter( "encoding" );
}
}
|