在原生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方法进行增强。
输出结果没有乱码。