请求乱码问题
浏览器默认的编码格式——iso8859-1
Tomcat服务器接收——UTF-8
过程:在调用service时,会传入req对象
解决:先用iso8859-1解析,再用UTF-8
对代码进行具体操作是:
/获取请求信息
String uname=req.getParameter("uname");
uname=new String(uname.getBytes("iso8859-1"),"utf-8");
//使用String进行数据重新编码
不分请求方式
使用String进行重新编码:
uname=new String(uname.getBytes(“iso8859-1”),“utf-8”);
缺点:每一个用户名都需要进行转码
使用公共配置
Get方式请求
因为get的请求数据在url中,而post有单独的请求实体
在service方法中使用: req.setCharacterEncoding(“utf-8”);
在tomcat服务器目录下的conf文件下找到server.xml文件,打开进行如下配置:
(大约在第70行左右)
<Connector port="8088" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
加入:
<Connector port="8088" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" useBodyEncodingForURI="true" />
Post方式请求
在service方法中使用: req.setCharacterEncoding(“utf-8”);
对代码进行具体操作是:
//设置请求编码格式:
req.setCharacterEncoding("utf-8");
//设置响应编码格式
resp.setContentType("text/html;charset=utf-8");
//获取请求信息
String uname=req.getParameter("uname");
Servlet流程总结
- 浏览器发起请求到服务器(请求)
- 服务器接受浏览器的请求,进行解析,创建request对象存储请求数据
- 服务器调用对应的servlet进行请求处理,并将request对象作为实参传递给servlet的方法
servlet的方法执行进行请求处理
设置请求编码格式
设置响应编码格式
获取请求信息
处理请求信息
创建业务层对象
调用业务层对象的方法
响应处理结果