Geeks_Z の Blog Geeks_Z の Blog
首页
  • 学习笔记

    • 《HTML》
    • 《CSS》
    • 《JavaWeb》
    • 《Vue》
  • 后端文章

    • Linux
    • Maven
    • 汇编语言
    • 软件工程
    • 计算机网络概述
    • Conda
    • Pip
    • Shell
    • SSH
    • Mac快捷键
    • Zotero
  • 学习笔记

    • 《数据结构与算法》
    • 《算法设计与分析》
    • 《Spring》
    • 《SpringMVC》
    • 《SpringBoot》
    • 《SpringCloud》
    • 《Nginx》
  • 深度学习文章
  • 学习笔记

    • 《PyTorch》
    • 《ReinforementLearning》
    • 《MetaLearning》
  • 学习笔记

    • 《高等数学》
    • 《线性代数》
    • 《概率论与数理统计》
  • 增量学习
  • 哈希学习
GitHub (opens new window)

Geeks_Z

AI小学生
首页
  • 学习笔记

    • 《HTML》
    • 《CSS》
    • 《JavaWeb》
    • 《Vue》
  • 后端文章

    • Linux
    • Maven
    • 汇编语言
    • 软件工程
    • 计算机网络概述
    • Conda
    • Pip
    • Shell
    • SSH
    • Mac快捷键
    • Zotero
  • 学习笔记

    • 《数据结构与算法》
    • 《算法设计与分析》
    • 《Spring》
    • 《SpringMVC》
    • 《SpringBoot》
    • 《SpringCloud》
    • 《Nginx》
  • 深度学习文章
  • 学习笔记

    • 《PyTorch》
    • 《ReinforementLearning》
    • 《MetaLearning》
  • 学习笔记

    • 《高等数学》
    • 《线性代数》
    • 《概率论与数理统计》
  • 增量学习
  • 哈希学习
GitHub (opens new window)
  • Linux

  • Java

  • 微服务笔记

  • MySQL

  • Nginx

  • HTML

  • CSS

  • JavaWeb

    • JavaWeb目录结构
    • HTTP
    • JSP
    • JavaScript
    • Ajax
    • JSON
    • Cookie
    • Session
    • Request
      • 1. request 对象和 response 对象的原理
      • 2. request 对象继承体系结构
      • 3. request 功能
        • 获取请求行数据
        • 获取请求头数据
        • 获取请求体数据
        • 获取请求参数通用方式
      • 4. 请求转发
    • Response
    • Servlet
    • Tomcat
    • EL表达式
  • Vue

  • Git

  • 开发规范

  • SpringCloud微服务权限系统

  • bug

  • Software

  • ProgramNotes
  • JavaWeb
Geeks_Z
2021-12-27
目录

Request

1. request 对象和 response 对象的原理

  1. request 和 response 对象是由服务器创建的,我们来使用它们。

  2. request 对象是来获取请求消息,response 对象是来设置响应消息。

    image-20211227155340670

2. request 对象继承体系结构

ServletRequest -- 接口 | 继承 HttpServletRequest -- 接口 | 实现 org.apache.catalina.connector.RequestFacade 类(tomcat)

3. request 功能

获取请求行数据

eg:GET /day14/demo1?name=zhangsan HTTP/1.1

  • 获取请求方式 : String getMethod() GET
  • 获取虚拟目录: String getContextPath() /day14
  • 获取 Servlet 路径: String getServletPath() /demo1
  • 获取 get 方式请求参数: String getQueryString() name=zhangsan
  • 获取请求 URI: String getRequestURI() /day14/demo1
  • StringBuffer getRequestURL() :http://localhost/day14/demo1
  • URL:统一资源定位符 : http://localhost/day14/demo1 中华人民共和国
  • URI:统一资源标识符 : /day14/demo1 共和国
  • 获取协议及版本: String getProtocol() HTTP/1.1
  • 获取客户机的 IP 地址: String getRemoteAddr()

获取请求头数据

  • String getHeader(String name)通过请求头的名称获取请求头的值
  • Enumeration<String> getHeaderNames()获取所有的请求头名称

获取请求体数据

  • 请求体:只有 POST 请求方式,才有请求体,在请求体中封装了 POST 请求的请求参数
  • 步骤:
    1. 获取流对象
      • BufferedReader getReader():获取字符输入流,只能操作字符数据
      • ServletInputStream getInputStream():获取字节输入流,可以操作所有类型数据
    2. 再从流对象中拿数据

获取请求参数通用方式

不论 get 还是 post 请求方式都可以使用下列方法来获取请求参数

1. String getParameter(String name):根据参数名称获取参数值    username=zs&password=123
2. String[] getParameterValues(String name):根据参数名称获取参数值的数组  hobby=xx&hobby=game
3. Enumeration<String> getParameterNames():获取所有请求的参数名称
4. Map<String,String[]> getParameterMap():获取所有参数的map集合

* 中文乱码问题:
	* get方式:tomcat 8 已经将get方式乱码问题解决了
	* post方式:会乱码
		* 解决:在获取参数前,设置request的编码request.setCharacterEncoding("utf-8");
1
2
3
4
5
6
7
8
9

4. 请求转发

一种在服务器内部的资源跳转方式

image-20211230210839436

步骤:

  1. 通过 request 对象获取请求转发器对象:RequestDispatcher getRequestDispatcher(String path) 2. 使用 RequestDispatcher 对象来进行转发:forward(ServletRequest request, ServletResponse response)

    1. 特点:
    2. 浏览器地址栏路径不发生变化
    3. 只能转发到当前服务器内部资源中。
    4. 转发是一次请求
  2. 共享数据

    • 域对象:一个有作用范围的对象,可以在范围内共享数据
      • request 域:代表一次请求的范围,一般用于请求转发的多个资源中共享数据
        • 方法:
          1. void setAttribute(String name,Object obj):存储数据
          2. Object getAttributede(String name):通过键获取值
          3. void removeAttribute(String name):通过键移除键值对
上次更新: 2025/02/26, 08:57:57
Session
Response

← Session Response→

最近更新
01
RAIL
02-26
02
IOCTF
02-25
03
DGM
02-25
更多文章>
Theme by Vdoing | Copyright © 2022-2025 Geeks_Z | MIT License
京公网安备 11010802040735号 | 京ICP备2022029989号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式