使用Filter进行Parameter的全半角转换和Trim
2017-05-17 17:11
169 查看
系统在使用过程中,用户输入的内容常存在全半角问题以及左右空格问题,若不进行合适的处理,对用户体验存在一定影响。若每次在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 {
}
}
第一步,建立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 {
}
}
相关文章推荐
- 转使用UrlRewrite Filter对url进行美化转换处理
- 使用UrlRewrite Filter对url进行美化转换处理
- 使用 ATL 提供的转换宏进行类型转换 LPSTR LPCSTR LPWSTR LPCWSTR
- 使用sprintf及sscanf函数进行CString与CTime之间的转换
- 使用 ATL 提供的转换宏进行类型转换 LPSTR LPCSTR LPWSTR LPCWSTR
- 使用BitConverter对int与byte[]类型进行互相转换
- 使用分析函数进行行列转换
- 使用XStream进行POJO和xml之间的转换
- 使用Mencoder进行视频转换遇到的问题和相关解决方案
- 使用Filter对Request进行统一编码
- 使用iconv库进行字符集转换
- 使用VBA对Excel中列名称与列号之间进行转换
- 水晶报表使用经验谈1--建立水晶报表第一步及编译最易出现错误的解决方法及报表转换成pdf文档进行打印方法
- 如何使用PHP和PEAR进行不同时区的转换
- 使用XStream进行POJO和xml之间的转换
- 使用Filter快速对网页资源进行缓存!
- 使用Convert命令进行显示转换
- 使用Stream进行byte[]进行转换时要注意的事
- Flex 使用ArrayCollection的FilterFunction进行数据过滤
- 使用 Java 进行图像处理 - 将彩色图像转换为灰度图