package org.quickbundle.project.filter;
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 org.quickbundle.config.RmConfig;
/**
* @author
* 实现编码过滤器
*/
public class RmEncodingFilter implements Filter {
private String encoding = RmConfig.getSingleton().getDefaultEncode();
private FilterConfig filterConfig;
public RmEncodingFilter() {
super();
}
public void init(FilterConfig filterConfig) throws ServletException {
this.encoding = filterConfig.getInitParameter("encoding");
this.filterConfig = filterConfig;
}
/**
* 主要处理部分
*/
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
try {
//Tomcat设置get方式采用和post方式相同的编码 Connector useBodyEncodingForURI="true"
//设置request编码
request.setCharacterEncoding(encoding);
filterChain.doFilter(request, response);
} catch (ServletException sx) {
filterConfig.getServletContext().log(sx.getMessage(),sx);
} catch (IOException iox) {
filterConfig.getServletContext().log(iox.getMessage());
}
}
public void destroy() {
this.encoding = null;
this.filterConfig = null;
}
}