Request对象
在Servlet中用来处理客户端请求所需要的doGet方法
和 doPost方法
Get请求和Post请求的区别
- Get请求
- 提交的数据会放在url之后,以
?
分割url和传输数据,参数之间以&
相连 - get方式明文传递,数据量小,不安全
- 效率高,浏览器默认请求方式为GET请求
- 对应的Servlet的方法是doGet
- 提交的数据会放在url之后,以
- Post请求
- post方法是把提交的数据放在HTTP包的Body中
- 密文传递数据,数据量大,安全
- 效率相对没有GET高
- 对应的Servlet的方法是doPost
request主要方法
返回值 | 方法名 | 说明 |
---|---|---|
String | getParameter(String name) | 获取提交的数据 |
void | setCharacterEncoding(String env) | 设置每个请求编码格式 |
void | setAttribute( String name, Object o ) | 用于转发,设置一个属性对应的属性值 |
Object | getAttribute( String name) | 接受一个属性对应的属性值 |
Response对象
用于响应客户请求并向客户端输出信息
response主要方法
返回值 | 方法名 | 说明 |
---|---|---|
void | setCharacterEncoding(String charset) | 设置服务端响应内容编码格式 |
void | setHeader(String name, String value) | 设置响应信息头 |
void | setContentType( String type) | 设置响应头文件类型 响应式的编码格式 |
PrintWriter | getWriter() | 获取字符输出流 |
常见问题:解决中文乱码问题
- 方法一:不建议使用
setCharacterEncoding(String charset)
和setHeader(String name, String value)
同时使用- 第一个用于设置服务端响应内容的编码;第二个用于客户端响应编码格式
resp.setCharacterEncoding("utf-8");
resp.setHeader("Content-type","text/html;charset=utf-8");
- 方法二:建议使用
setContentType(String type)
- 一行代码解决的问题,为什么要两行代码呢
resp.setContentType("text/html;charset=utf-8");
向客户端输出数据样例
package servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
public class Servlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
PrintWriter writer = resp.getWriter();
writer.println("你好啊");
writer.println(2);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}