版权声明:本文为博主原创文章,未经博主允许不得转载。 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 {
}
}