1.中文乱码过滤器。get和set中文字体的设置
public class AllCharacterEncodingFilter implements Filter {
	private FilterConfig filterConfig;
	
	public void init(FilterConfig filterConfig) throws ServletException {
		this.filterConfig = filterConfig;
	}
	public void doFilter(ServletRequest req, ServletResponse resp,
			FilterChain chain) throws IOException, ServletException {
		HttpServletRequest request = (HttpServletRequest)req;
		HttpServletResponse response = (HttpServletResponse)resp;
		//获取配置的过滤器参数encoding的值:如果没有,给定一个默认值
		String encoding = filterConfig.getInitParameter("encoding");
		if(encoding==null)
			encoding = "UTF-8";
		//设置POST请求方式的中文请求参数的编码
		request.setCharacterEncoding(encoding);
		//设置响应输出时的编码:字符流和字节流
		response.setCharacterEncoding(encoding);//字节流输出时通知客户端的解码码表
		response.setContentType("text/html;charset="+encoding);//字节流输出时通知客户端的解码码表;字符流:字符流输出时使用的码表及通知客户端解码用的码表
		
		MyHttpServletRequest mrequest = new MyHttpServletRequest(request);
		//放行
		chain.doFilter(mrequest, response);
	}
	public void destroy() {
	}
}
//使用包装类设计模式
//HttpServletRequestWrapper内部的代码与连接池原理中那个默认适配器一样
class MyHttpServletRequest extends HttpServletRequestWrapper{
	public MyHttpServletRequest(HttpServletRequest request){
		super(request);
	}
	//只对get请求方式进行改写
	public String getParameter(String name) {
		String value = super.getParameter(name);
		if(value==null)
			return value;
		//得到请求方式
		String method = super.getMethod();
		if("get".equalsIgnoreCase(method)){
			try {
				value = new String(value.getBytes("ISO-8859-1"),super.getCharacterEncoding());
			} catch (UnsupportedEncodingException e) {
				e.printStackTrace();
			}
		}
		return value;
	}	
}public class DirtyWordsFilter implements Filter {
	public void destroy() {
	}
	public void doFilter(ServletRequest req, ServletResponse resp,
			FilterChain chain) throws IOException, ServletException {
		HttpServletRequest request = (HttpServletRequest)req;
		HttpServletResponse response = (HttpServletResponse)resp;
		DirtyWordsHttpServletRequest drequest = new DirtyWordsHttpServletRequest(request);
		chain.doFilter(drequest, response);
		
	}
	public void init(FilterConfig filterConfig) throws ServletException {
	}
}
class DirtyWordsHttpServletRequest extends HttpServletRequestWrapper{
	private String words[] = {"傻B","畜生","禽兽"};
	public DirtyWordsHttpServletRequest(HttpServletRequest request){
		super(request);
	}
	@Override
	public String getParameter(String name) {
		String value = super.getParameter(name);
		if(value==null)
			return "木有";
		for(String dword:words){
			if(value.contains(dword)){//判断用户输入的内容中包含脏话
				value = value.replace(dword, "**");
			}
		}
		return value;
	}	
}3. HTML特殊标记过滤器
//HTML标记过滤器:<   <
public class HtmlFilter implements Filter {
	public void destroy() {
	}
	public void doFilter(ServletRequest req, ServletResponse resp,
			FilterChain chain) throws IOException, ServletException {
		HttpServletRequest request = (HttpServletRequest)req;
		HttpServletResponse response = (HttpServletResponse)resp;
		HtmlHttpServletRequest hrequest = new HtmlHttpServletRequest(request);
		chain.doFilter(hrequest, response);
	}
	public void init(FilterConfig filterConfig) throws ServletException {
	}
}
class HtmlHttpServletRequest extends HttpServletRequestWrapper{
	public HtmlHttpServletRequest(HttpServletRequest request){
		super(request);
	}
	@Override
	public String getParameter(String name) {
		String value = super.getParameter(name);
		if(value==null)
			return value;
		value = htmlFilter(value);//完成标记过滤
		return value;
	}
	private String htmlFilter(String message) {
		if (message == null)
            return (null);
        char content[] = new char[message.length()];
        message.getChars(0, message.length(), content, 0);
        StringBuffer result = new StringBuffer(content.length + 50);
        for (int i = 0; i < content.length; i++) {
            switch (content[i]) {
            case '<':
                result.append("<");
                break;
            case '>':
                result.append(">");
                break;
            case '&':
                result.append("&");
                break;
            case '"':
                result.append(""");
                break;
            default:
                result.append(content[i]);
            }
        }
        return (result.toString());
	}
	
}
web.xml中配置
<filter> <filter-name>AllCharacterEncodingFilter</filter-name> <filter-class>cn.itcast.filter.AllCharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>GBK</param-value> </init-param> </filter> <filter-mapping> <filter-name>AllCharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter> <filter-name>DirtyWordsFilter</filter-name> <filter-class>cn.itcast.filter.DirtyWordsFilter</filter-class> </filter> <filter-mapping> <filter-name>DirtyWordsFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter> <filter-name>HtmlFilter</filter-name> <filter-class>cn.itcast.filter.HtmlFilter</filter-class> </filter> <filter-mapping> <filter-name>HtmlFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter>
原文:http://blog.csdn.net/ankeyuan/article/details/34980233