遇到问题:在JavaWeb学习阶段,通过表单提交对数据库数据进行修改,发现原本为中文字段的数据,表单提交之后都变成了乱码。
解决措施:针对form表单的请求方式修改编码格式
get和post请求的区别
get请求的请求参数会附在URL之后(将数据放置在HTTP协议头中),以?分割URL和传输数据,参数之间以&相连。而post请求是将表单的内容放在Html header里面发送到所请求的action中,通过request body传递参数;get请求提交的URL数据有限制(浏览器或者服务器的限制,HTTP协议对URL长度并无限制),但是post请求无限制;post请求相对于get请求更为安全。get请求传递的参数会显示在URL中,容易被人通过地址获取私人信息,但是post请求的数据不会被用户看到,安全性更高。更多细节参考:史上最容易理解————GET和POST两种基本请求方法的区别
乱码问题解决
参考:jsp如何解决Form表单乱码问题; form表单提交中文乱码的详细解析
get请求
服务器是由Tomcat默认的编码格式,或者自定义的编码格式进行编码,这个编码过程是通过Tomcat服务器完成的。因此,如果是对于form表单的get请求,存入数据库出现中文乱码,基本就是Tomcat服务器本身的编码配置问题:
对于Tomcat 7
及以前的版本,默认编码格式为:ISO- 8859-1
。在配置文件./conf/server.xml
修改以下代码行,添加URIEncoding="UTF-8"
即可。
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/>
对于Tomcat 8
版本及之后的版本,默认编码格式为UTF-8
。
post请求
由于请求的数据是作为请求体的一部分传递给服务器的,所以只要修改请求体内的编码即可。只要在服务器端的最开始处将请求的数据编码格式修改为UTF-8
即可,插入以下语句。
request. setCharacterEncoding(“UTF-8”);