Java Web应用开发案例|用过滤器解决HTTP请求导致的乱码问题 您所在的位置:网站首页 javaweb过滤器 Java Web应用开发案例|用过滤器解决HTTP请求导致的乱码问题

Java Web应用开发案例|用过滤器解决HTTP请求导致的乱码问题

2023-07-19 19:14| 来源: 网络整理| 查看: 265

原标题: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 实验室设备网 版权所有