Java Web应用开发案例|用过滤器解决HTTP请求导致的乱码问题 | 您所在的位置:网站首页 › javaweb过滤器 › Java Web应用开发案例|用过滤器解决HTTP请求导致的乱码问题 |
原标题:Java Web应用开发案例|用过滤器解决HTTP请求导致的乱码问题 在Web应用开发中经常会遇到乱码问题,使用过滤器解决HTTP 请求导致的乱码问题,是十分有效的解决方案。 01 案例:编码转换 (1) 自定义过滤器,实现Filter接口。 @ WebFilter( urlPatterns="/*", initParams={@ WebInitParam( name=" encoding", value=" utf- 8")}) public class CharacterEncodingFilter implements Filter {● urlPatterns="/*"表示对所有的HTTP请求进行过滤。 ● 设置了初始化参数,名字为encoding,参数值可以按需要配置。 (2) 在初始化方法中读取参数。 publicclassCharacterEncodingFilterimplementsFilter{ privateString encoding; publicvoidinit(FilterConfig filterCondig) throwsServletException { this.encoding = filterConfig.getInitParameter( "encoding"); } }(3) 在doFilter中过滤请求。 先把HTTP请求的参数转换成单字节码ISO-8859-1,然后用配置的encoding进行编码。此处只对GET请求进行了处理,POST请求一般不会乱码。 publicvoiddoFilter(ServletRequest request, ServletResponse response, FilterChain chain)throwsIOException, ServletException { if(encoding != null) request.setCharacterEncoding(encoding); HttpServletRequest r = (HttpServletRequest)request; if(r.getMethod.equalsIgnoreCase( "get")){ Enumeration names = request.getParameterNames; while(names.hasMoreElements){ String[] values = request.getParameterValues(names.nextElement.toString); for( inti = 0; i < values.length; ++i){ values[i] = newString(values[i].getBytes( "ISO-8859-1"), encoding ); } } } chain.doFilter(request, response); }02 参考书籍 扫码京东优惠购书返回搜狐,查看更多 责任编辑: |
CopyRight 2018-2019 实验室设备网 版权所有 |