Request和Response总结

1. 编码问题:

请求编码:
GET请求:GET没有请求体,无法通过request.setCharacterEncoding()来设置参数的编码;
只能得到数据后变成字节,再将字节重新用utf-8编码
String name = request.getParameter(“name”);
name = new String(name.getBytes(“iso-8859-1”), “utf-8”);

POST请求:在使用request.getParameter()获取请求参数之前先通过request.setCharacterEncoding()来指定编码
request.setCharacterEncoding(“utf-8”);
String name = request.getParameter(“name”);

响应编码:
在使用response.getWriter()发送数据之前,一定要设置response.getWriter()的编码,使用response.setCharacterEncoding()方法。

response.setContentType(“text/html;charset=utf-8”)包含两部分:
1.response.setCharactorEncoding(“utf-8”) 设置字符编码为utf-8编码,输出的数据为utf-8编码;
2.设置了响应头content-type编码为utf-8,告诉浏览器用utf-8编码,浏览器就会用utf-8解析。

2. Response:

1.设置响应头信息
response.setHeader(“content-type”, “text/html;charset=utf-8”);
2.发送状态码
response.setStatus(200):设置状态码;
3.设置响应正文
PrintWriter out = response.getwriter(); // 获取响应字节流对象
ServletOutputStream out = response.getOutputStream(); // 获取响应字符流对象
4.重定向,服务器通知浏览器去访问另一个地址,即再发出另一个请求。
response.sendRedirect("/hello/BServlet"); 重定向就不要再使用response.getWriter()或response.getOutputStream()输出数据

3. Request:

1.封装了请求头数据
String getHeader(String name):获取指定名称的请求头;
String getParameter(String name):通过指定名称获取参数值;
2.封装了请求正文数据,如果是GET请求,那么就没有正文;

3.request是一个域对象,可以把它当成Map来添加获取数据
void setAttribute(String name, Object value)
Object getAttribute(String name)
4.request提供了请求转发和请求包含功能
请求转发,在AServlet中就不允许再输出响应体,即不能再使用response.getWriter()和response.getOutputStream()向客户端输出,这一工作应该由BServlet来完成。
RequestDispatcher rd = request.getRequestDispatcher("/BServlet");
rd.forward(request, response);
请求包含
RequestDispatcher rd = request.getRequestDispatcher("/BServlet");
rd.include(request, response);

4. Reques获取其他域对象:

获取HTTPSession域对象
HttpSession request.getSesssion():如果当前会话已经有了session对象那么直接返回,如果当前会话还不存在会话,那么创建session并返回;

注:参考崔希凡老师的文档

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值