request 对象
在Servlet中用来处理客户端请求需要用doGet或doPost方法的request对象
get和post区别
get请求
- get 提交的数据放在URL之后,以?分割URL和传输数据,参数之间以& 相连
- get方式明文传递,数据量小,不安全
- 效率高,浏览器默认请求方式为GET请求
- 对应的Servlet的方法是doGet
Post请求
- post 方法时把提交的数据放在HTTP包的body中 ;
- 密文传递数据,数据量大,安全
- 效率相对没有GET高
- 对应的Servlet的方法时doPost
request主要方法
方法名 | 说明 |
---|---|
String getParameter(String name) | 根据表单组件名称获取提交数据 |
void setCharacterEncoding(String charset) | 指定每个请求的编码 |
post请求中文乱码问题
get请求在Tomcat8之后中文乱码问题进行了解决,但是post请求 ,由于客户端是以UTF-8 字符编码将表单数据传输到服务器端的,因此服务器也需要设置以UTF-8字符编码进行接收.
解决方案: 使用从ServletRequest接口继承而来的setCharacterEncoding(charset) 方法进行统一的编码设置.
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws Exception{
//对request 请求对象设置统一的编码
req.setCharacterEncoding("utf-8");
...
}
response对象
response对象用于响应客户端请求并向客户端输出信息.
response主要方法
方法名称 | 作用 |
---|---|
setHeader(name,value) | 设置响应信息头 |
setContentType(String) | 设置响应文件类型,响应式的编码格式 |
setCharacterEncoding(String) | 设置服务端响应内容编码格式 |
getWriter() | 获取字符输出流 |
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws Exception{
//对request 请求对象设置统一的编码
req.setCharacterEncoding("utf-8");
//1.获取用户请求发送的数据
String username = req.getParameter("username");
//2.响应数据给客户端
PrintWriter printWriter = resp.getWriter();
printWriter.println("success");