Request继承体系、Request 获取请求数据、Request通过方式获取请求参数、请求参数中文乱码处理、Request 请求转发

Request(请求)

在这里插入图片描述

  • Request:获取请求数据
  • Response:设置响应数据

Request 继承体系

在这里插入图片描述
1.Tomcat 需要解析请求数据,封装为 request 对象,并且创建 request 对象传递到 service 方法中。
2.使用 request 对象,查阅 javaEE API 文档的 HttpServletRequest 接口。
在这里插入图片描述

Request 获取请求数据

  • 请求数据分为3部分:
    • 1.请求行:
      在这里插入图片描述

      • String getMethod(): 获取请求方式:GET
      • String getContextPath(): 获取虚拟目录(项目访问路径):/request-demo
      • StringBuffer getRequestURL(): 获取 URL(统一资源定位符): http://localhost:8080/request-demo/req1
      • String getRequestURI(): 获取 URI(统一资源标识符):/request-demo/req1
      • String getQueryString(): 获取请求参数(GET方式):username = zhangsan&password = 123
    • 2.请求头:
      在这里插入图片描述

      • String getHeader(String name): 根据请求头名称获取值。
    • 请求体:
      在这里插入图片描述

      • ServletInputStream getInputStream(): 获取字节输入流
      • BufferedReader getReader(): 获取字符输入流

通过方式获取请求参数

  • 请求参数获取方式:

    • GET 方式:
      在这里插入图片描述

    • POST 方式
      在这里插入图片描述
      思考:GET 请求方式 和 POST 请求方式区别主要在于获取请求参数的方式不一样是否可以提供一种统一获取请求参数的方式,从而统一 doGet和 doPost 方法内的代码?

    Request 通过方式获取请求参数

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • Map< String,String[] > getParameterMap(): 获取所有参数 Map 集合

  • String[] getParameterValues(String name): 根据名称获取参数值(数组)

  • String getParameter(String name): 根据名称获取参数值(单个值)

  • 使用通用方式获取请求参数后,屏蔽了 GET 和 POST 的请求方式代码的不同,则代码可以定义为如下格式:
    在这里插入图片描述

  • 可以使用 Servlet 模板创建 Servlet 更高效
    在这里插入图片描述

请求参数中文乱码处理

  • 请求参数如果存在中文数据,则会乱码

  • 乱码原因:
    在这里插入图片描述

  • 解决方案:

    • POST : 设置输入流的编码
      在这里插入图片描述

    • 通用方式(GET/POST): 先编码,再解码
      在这里插入图片描述

  • URL编码

    • 1.将字符串按照编码的方式转为二进制
    • 2.每个字节转为2个16进制数并在前边加上 %
      在这里插入图片描述

    总结

    1.中文乱码解决方案:

  • POST : 设置输入流的编码
    在这里插入图片描述

  • 通用方式:(GET/POST) : 先解码,再编码
    在这里插入图片描述
    2.URL 编码实现方式:

  • 编码:
    在这里插入图片描述

  • 解码:
    在这里插入图片描述

Request请求转发

  • 请求转发(forword):一种在服务器内部的资源跳转方式
    在这里插入图片描述
    实现方式:
    在这里插入图片描述

  • 请求转发资源间共享数据:使用 Request 对象

    • void setAttribute(String name,Object o): 存储数据到 request域中
    • Object getAttribute (String name): 根据 key,获取值
    • void removeAttribute(String name): 根据key,删除该键值对
  • 请求转发特点:

    • 浏览器地址栏路径不发生变化
    • 只能转发到当前服务器的内部资源
    • 一次请求,可以在转发的资源间使用 request 共享数据
  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

续写青春.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值