请求中文乱码解决
- 原因
浏览器默认编码格式:iso8859-1,而Tomcat用utf-8格式解析; - 解决办法
方式一:
使用String进行数据重新编码(万能方式,也是最保险的方式):
//获取请求参数
String uname = request.getParameter("uname");
//使用String进行数据重新编码
String uname2 = new String(uname.getBytes(‘iso8859-1’),’utf-8’)
- 方式二:
设置请求编码格式
(一)GET方式的请求:
第一步:在service、doGet或doPost方法中使用:
request.setCharacterEncoding(“utf-8”);
第二步:在tomcat服务器目录下的conf文件下找到service.xml文件,打开进行如下配置:
<Connector port=”8080” protocol=”HTTP/1.1”
connectionTimeout=”20000”
redirectPort=”8443” useBodyEncodingForURI=”true” />
添加的是:useBodyEncodingForURI=”true”这句话;
(二)POST方式的请求
在service、doGet或doPost方法中使用:
request.setCharacterEncoding("utf-8");
- 注意:
post有单独的请求数据实体,一步到位;
Get的请求数据在URL中,所以需要两步配置;
设置响应编码格式
response.setContentType("text/html;charset=UTF-8")
Servlet流程总结
- 浏览器发起请求到服务器(请求)
- 服务器接收浏览器的请求,进行解析,创建request对象存储请求数据
- 服务器调用对应的servlet进行请求处理,并将request对象作为实参传递给servlet的方法
- Servlet的方法执行进行请求处理;
- Servlet的使用流程:
//设置请求编码格式
//设置响应编码格式
//获取请求信息
//处理请求
//创建业务层对象
//调用业务层对象的方法
//响应处理结果
- 数据流转流程:
浏览器→服务器→数据库
浏览器←服务器←数据库