通过重写request.getParameter方法来解决中文乱码问题。

在原生servlet的商城项目中,BeanUtils.populate方法封装不上注册的参数。

已知BeanUtils.populate方法是封装不上date对象的,于是自定义了一个转换器用来封装Data对象。

 

封装成功后发现出现中文乱码问题。

本来以为是数据库的问题。把数据库的表结构看了一下,发现就是utf-8;

然后在将数据存入数据库之前,将数据进行输出,发现确实在之前就乱码了。

试试比较常见的两个方法。

以上设置没有什么卵用 = =,网上说上面两个方法只对post请求生效。然而我的就是post请求。可是没有效果。

输出的结果仍旧乱码。

在网上查找说,由于tomcat默认编码是iso-8859-1,设置tomcat配置文件中的server.xml,给配置文件中添加一个编码,为utf-8。

由于我用的是myEcplise,虽然也不影响。于是兴冲冲的跑去看了看配置文件。

emmm第一行就让我愣住了。本来就是utf-8啊= =,为什么还是会乱码。

由于一直不清楚乱码的原因。

于是采取了最破罐子破摔的办法 = = ,手动编码。

然后它正常了。

可是这样一个一个手动转换还是比较麻烦的。

如果有一个转换器就好多了。

有一个办法就是,重写request..getParameter方法。

由于request的实现类是它的实现类的HttpServletRequestWrapper,所以我们的转换器需要继承这个类。

测试代码如下:

在这里重写的这个方法相当于一个包装类,将request包装起来,并对它的getParameter方法进行增强。

输出结果没有乱码。

 

posted @ 2018-05-27 16:40  tonbby  阅读(2248)  评论(0编辑  收藏  举报