struts2编码问题

  ps: 在使用struts2框架的时候,涉及到许多中文字符参数,在传送到服务器端进行使用就会产生乱码问题,这使我很困惑,所以花费时间专门去了解编码的问题,以下是所得的一些感悟和总结,进行记录。

 

  在表单中进行提交数据有两种方式,一种是get方法,另外一种是post方法,分别来说明不同方式带来的不同的编码问题(以下前提是在整个web项目都统一编码格式为uft-8)。

  (一)、get方式提交表单数据

       在使用get方式提交表单数据的时候,在浏览器端页面中以utf-8格式编码的,然后会再以iso-8859-1编码然后传输到服务器端,在到达服务器端后,服务器端会以默认的iso-8859-1解码,但是iso-8859-1不支持中文的显示,所以就产生了乱码。

             1、对于使用JavaWeb的可以采用两种方式解决这个乱码。

                          (1)在Tomcat的配置文件server.xml中添加URIEncoding="UTF-8",Tomcat自动解决乱码问题

                                             

                          (2)在Servlet中获取中文数据时自己手动解码。如下图,其中的name为获得的中文数据,将其按照iso-8859-1的方式编码,然后再以utf-8进行解码。继而解决中文乱码问题

                                             

               2、对于使用struts2框架来说,可以采用如下方法解决乱码问题

                         (1)在Tomcat的配置文件server.xml中添加URIEncoding="UTF-8",Tomcat自动解决乱码问题

                                             

                         (2)在action类中,属性会通过setter方法被容器注入表单提交上来的对应的数据,所以可以在会产生中文乱码的属性的setter方法中,自己进行手动解码,然后将不是乱码的中文赋值给属性。当然你也可以在需要用到的时候,再进行手动解码是一样的

                                                                                          

  (二)、post方式提交表单数据

        在使用post方式提交表单数据的时候与get方式有所不同,而且在JavaWeb中的servlet中的转换又与struts2框架中的不一样,分别介绍:

               1、对于使用JavaWeb的,可以在servlet中进行如下图所示的操作,设置request中的数据编码方式为uft-8,在获取request中的数据时,会自动按照设置的编码方式解码。

                                          

               2、对于使用struts2框架来说,对于post方式提交的表单数据struts框架会将其自动转换成统一的uft-8编码方式。但是要在struts2的默认配置文件default.properties中有如下图所示的这个参数配置。

                                          

也可以在struts.xml进行配置,如下图

                                         

你可能感兴趣的:(Struts2)