web基础day9--request-response请求与响应

本文详细讲解了HTTP请求的组成部分,包括请求行、请求头、请求实体内容,以及如何处理请求参数的乱码问题。同时,介绍了response的组成、状态码、响应头,以及如何处理响应中的乱码。还探讨了请求转发、请求重定向和定时刷新的差异与应用场景,并讲解了如何控制浏览器的缓存策略。
摘要由CSDN通过智能技术生成
  1. request
    代表HTTP请求。
    a. HTTP请求由四部分组成:
    请求行 get 请求资源名称 HTTP协议版本
    多个请求头
    一个空行
    请求实体内容 请求参数
    b. 请求的继承结构
    ServletRequest
    |
    |----HttpServletRequest 在原有接口之上添加了HTTP协议相关的API,更善于HTTP协议相关开发。
    1. 请求的功能
      a. 获取请求资源
      getRequestURL方法 – 返回客户端发出请求完整URL
      getRequestURI方法 – 返回请求行中的资源名部分
      getQueryString方法 – 返回请求行中的参数部分
      getRemoteAddr方法 – 返回发出请求的客户机的IP地址
      getMethod – 得到客户机请求方式
      !!getContextPath – 获得当前web应用虚拟目录名称 – 在写路径时不要将web应用的虚拟路径的名称写死, 应该在需要写web应用的名称的地方通过getContextPath方法动态获取

      b. 获取请求头
      getHeader(name)方法 — String
      getHeaders(String name)方法 — Enumeration
      getHeaderNames方法 — Enumeration
      getIntHeader(name)方法 — int
      getDateHeader(name)方法 — long(日期对应毫秒)

      c. 获取请求实体内容
      getParameter(String name) — String 通过name获得值
      getParameterValues(String name) — String[ ] 通过name获得多值 checkbox
      getParameterMap() — Map<String,String[ ]> key :name value: 多值 将查询的参数保存在一个Map中
      getParameterNames() — Enumeration 获得所有name
      i. 在获取请求参数时,如果获取中文数据,则会出现乱码。
      ii. 乱码产生的原因:
      编码和解码字符集不统一。
      iii. 浏览器负责发送数据,在发送数据时会对数据编码,发送数据时所使用的字符集是页面加载时的字符集,为utf-8。
      iv. 接收数据的是服务器,服务器在接收数据时会采用默认字符集iso8859-1解码数据。
      v. 发送与接收字符集不同意,所以出现了乱码。由于iso8859-1中没有中文,所以应该将两者统一为utf-8。修改服务器的字符集。
      vi. 如果是post提交,可以进行如下修改:
      在所有获取请求参数的代码之前,书写:
      request.setCharacterEncoding(“utf-8”);
      这句话仅能处理请求实体内容中的请求参数乱码,所以只对post请求有效。get请求无效。
      vii. 如果是get请求,则需要在获取参数之后,先使用iso8859-1编码,在使用utf-8解码。
      1) 代码如下:
      new String(username.getBytes(“iso8859-1”),“utf-8”);
      这种形式,既可以解决get提交的乱码,也可以解决post提交的乱码。

    2. request功能–请求转发
      请求转发是一种资源跳转方式,发生的服务器内部。

      a. 代码实现:

       import java.io.IOException;
       
       import javax.servlet.RequestDispatcher;
       import javax.servlet.ServletException;
       import javax.servlet.http.HttpServlet;
       import javax.servlet.http.HttpServletReq
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值