使用Filter进行Parameter的全半角转换和Trim

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Yubu_/article/details/72414565


系统在使用过程中,用户输入的内容常存在全半角问题以及左右空格问题,若不进行合适的处理,对用户体验存在一定影响。若每次在getParameter()之后在进行处理,比较麻烦,而且存在遗漏的可能。此处采用Filter,进行统一控制。


第一步,建立TrimHttpRequset,继承HttpServletRequestWrapper,重写getParameter()方法

public class TrimHttpRequest extends HttpServletRequestWrapper{

	public TrimHttpRequest(HttpServletRequest request) {
		super(request);
	}

	@Override
	public String getParameter(String name) {
		String value=super.getParameter(name);
		if (value==null) {
			return value;
		}
		return ToDBC(value.trim());
	}

	/**
	 * 全角转半角
	 * @param value
	 * @return
	 */
	public static String ToDBC(String value) {
		char chars[] = value.toCharArray();
		for (int i = 0; i < chars.length; i++)
		{
			if (chars[i] == '\u3000')
			{
				chars[i] = ' ';
			} else if (chars[i] > '\uFF00' && chars[i] < '\uFF5F')
			{
				chars[i] = (char) (chars[i] - 65248);
			}
		}
		return new String(chars);
	}
}

第二步,建立EncodingTrimFilter,标记为@WebFilter("/*")

@WebFilter("/*")
public class EncodingTrimFilter implements Filter {

	@Override
	public void destroy() {
		
	}

	@Override
	public void doFilter(ServletRequest req, ServletResponse resp,
			FilterChain chain) throws IOException, ServletException {
		req.setCharacterEncoding("UTF-8");
		resp.setCharacterEncoding("UTF-8");
		
		HttpServletRequest request=(HttpServletRequest)req;
		TrimHttpRequest trimReq=new TrimHttpRequest(request);
		chain.doFilter(trimReq, resp);
	}

	@Override
	public void init(FilterConfig arg0) throws ServletException {
		
	}
}


猜你喜欢

转载自blog.csdn.net/Yubu_/article/details/72414565