日期:2014-05-17  浏览次数:20782 次

一个request包装类,解决get方式提交数据的乱码 、html标签转义、关键词过滤问题
/**
*分享自己写的一个request包装类,解决get方式提交数据的乱码
*html标签转义、关键词过滤问题
*/
package com.hcy.test.filter;

import java.io.UnsupportedEncodingException;
import java.util.Enumeration;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;

public class MyHttpRequest extends HttpServletRequestWrapper {
	HttpServletRequest request;
	String[] dWords={"fuck","shit","操"};
	public MyHttpRequest(HttpServletRequest request) {
		super(request);
		this.request=request;
	}
	@Override
	public String getParameter(String name) {
		String value=request.getParameter(name);
		try {
			//对所有的参数重新编码
			value=new String(value.getBytes("ISO-8859-1"),"UTF-8");
			//对html标签进行转义
			value= filter(value);
			//对某些词汇进行过滤
			for(String dw:dWords){
				value=value.replace(dw, "**");
			}
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		return value;
	}

    public String filter(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());

    }
}