Java 之 Request 对象

article/2025/8/30 8:06:59

一、Request 对象和 Response 对象原理

  request和response对象是由服务器创建的,供我们使用的。

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

  原理示意图

 

二、Request 对象继承体系结构

  

 

三、Request 功能

  1、获取请求消息数据

    (1)获取请求行数据

       常用方法:

(1)String getMethod() :获取请求方式
(2)String getContextPath():获取虚拟目录[重要]
(3)String getServletPath():获取 servlet 路径
(4)String getQueryString():获取get方式请求参数
(5)String getRequestURI():获取请求URI[重要]
(6)StringBuffer getRequestURL():获取请求的URL
(7)String getProtocol():获取协议及版本
(8)String getRemoteAddr():获取客户机的IP地址

      注意

      URI:统一资源标识符;

      URL:统一资源定位符;

      Demo:

1 请求行数据 GET /servletDemo/demo1?name=zhangsan HTTP/1.1
2 String getMethod():          获取到 GET
3 String getContextPath():     获取到 /servletDemo
4 String getServletPath():     获取到 /demo1
5 String getQueryString():     获取到 name=zhangsan
6 String getRequestURI():      获取到 /servletDemo/demo1
7 StringBuffer getRequestURL():获取到 http://localhost/servletDemo/demo1
8 String getProtocol():        获取到 HTTP/1.1
9 String getRemoteAddr():      获取到 请求机器的IP地址

 

    (2)获取请求头数据

      常用方法:

String getHeader(String name):通过请求头的名称获取请求头的值[重要]
Enumeration<String> getHeaderNames():获取所有的请求头名称

 

    (3)获取请求体数据

        请求体:只有POST请求方式,才有请求体,在请求体重封装了POST请求的请求参数

        步骤:

        ① 获取流对象

BufferedReader getReader():获取字符输入流,只能操作字符数据
ServletInputStream getInputStream():获取字节输入流,可以操作所有类型数据

        ② 从流对象中拿数据

        Demo:

 1  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 2         //1.获取字符流
 3         BufferedReader br = request.getReader();
 4 
 5         //2.读取数据
 6         String line = null;
 7         while((line = br.readLine()) != null) {
 8             System.out.println(line);   // 请求参数username=zs&password=abc
 9         }
10     }

 

  2、其他功能

    (1)获取请求参数通用方式:无论是get方式还是post请求方式都可以使用下列方法来获取请求参数

        常用方法

(1)String getParameter(String name):根据参数名称获取参数值    username=zs&password=abc
(2)String[] getParameterValues(String name):根据参数名称获取参数值的数组  hobby=java&hobby=python
(3)Enumeration<String> getParameterNames():获取所有请求的参数名称(相当于Iterator)
(4)Map<String,String[]> getParameterMap():获取所有参数的map集合,可以根据键(参数名)获取值(参数值)

          注意

        ① get方式:tomcat 8 已经将 get 方式乱码问题解决了

        ② post 方式:获取中文会产生乱码

         解决方式:在获取参数前,设置 request 的编码与页面编码一致即可

request.setCharacterEncoding("utf-8");

  

    (2)请求转发:一种在服务器内部的资源跳转方式。

        实现步骤:

        ① 通过 request 对象获取请求转发器对象;

RequestDispatcher getRequestDispatcher(String path): 获取请求转发器对象,path为转发到的路径

        ② 使用 RequestDispatcher 对象来进行转发

forward(ServletRequest request, ServletResponse response):转发方法

        特点:

        ① 浏览器地址栏路径不会发生变化;

        ② 只能转发到当前服务器内部资源中;

        ③ 转发是一次请求

    (3)共享数据

        域对象:一个有作用范围的对象,可以在范围内共享数据;

        request 域:代表一次请求的范围,一般用于请求转发的多个资源中共享数据;

        常用方法

void setAttribute(String name,Object obj):存储数据到request中
Object getAttitude(String name):通过键获取值
void removeAttribute(String name):通过键移除键值对

 

    (4)获取 ServletContext 对象

ServletContext getServletContext():通过request 对象获取 servletcontext 对象

 

  

 

转载于:https://www.cnblogs.com/niujifei/p/11619202.html


http://chatgpt.dhexx.cn/article/Tj3RhemS.shtml

相关文章

【Web基础】Request对象

1&#xff0c;Request和Response的概述 Request是请求对象&#xff0c;Response是响应对象。 这两个对象在我们使用Servlet的时候有看到&#xff1a; 此时&#xff0c;我们就需要思考一个问题request和response这两个参数的作用是什么? request: 获取请求数据 浏览器会发送H…

请求对象request

一、请求对象介绍. 请求:获取资源。在BS架构中,就是客户端浏览器向服务器端发出询问。 请求对象:就是在项目当中用于发送请求的对象。 二、请求对象Request常用方法-获取各种路径 返回值方法名说明StringgetContextPath()获取虚拟目录名称StringgetServletPath()获取Servlet…

【JavaWeb】Request对象详解

HTTP之Request&#xff1a;接上一篇博文HTTP协议详细. 本文目录 一.Request请求1.Request对象和Response对象的原理2.Request对象继承体系结构3.Request功能3.1 获取请求消息数据3.2 获取请求头数据3.3 获取请求体数据 4.Request其它功能4.1 获取请求参数通用方式4.1.1 中文请求…

java基础教程:基础语法之术语和入口类(2)

我们上节课已经学会了如何安装java环境&#xff0c;编译和运行java代码。那么&#xff0c;java当中有哪些编程的语法规则呢&#xff1f; 我们会通过几节课来了解这部分内容。这几节课不会从面向对象的方向来解释java的语法&#xff0c;后面会单独介绍。 这节课我们了解如下两个…

【Java基础教程】(三十二)常用类库篇 · 第二讲:包装类 Wrapper Class——概念及用途, 自动装箱与拆箱,常用操作方法~

Java基础教程之常用类库 包装类 1️⃣ 概念2️⃣ 设计目的&#xff08;作用&#xff09;和用途3️⃣ 使用3.1 自动装箱与拆箱3.2 常用方法3.3 常用属性3.4 null和默认值 4️⃣ 注意事项&#x1f33e; 总结&#x1f4d1; 本文源码下载地址 1️⃣ 概念 在Java编程中&#xff0c…

java基础教程01讲:使用idea写第一个java程序

1、使用idea创建一个java、web项目&#xff0c;新安装的idea&#xff0c;第一次&#xff0c;打开如图下面的界面 选择第一个 2、如果不是第一次打开&#xff0c;就我们选择new---》project 3、点击下一步 再点击下一步 4、project name写项目名称、project location是代码存放…

grpc java 基础教程

1 RPC 框架原理RPC 框架的目标就是让远程服务调用更加简单、透明&#xff0c;RPC 框架负责屏蔽底层的传输方式&#xff08;TCP 或者 UDP&#xff09;、序列化方式&#xff08;XML/Json/ 二进制&#xff09;和通信细节。服务调用者可以像调用本地接口一样调用远程的服务提供者&a…

【Java基础教程】Java学习路线攻略导图——史诗级别的细粒度归纳 ~

Java学习路线攻略导图 上篇 前言1、入门介绍篇2、程序基础概念篇3、包及访问权限篇4、异常处理篇5、特别篇6、面向对象篇7、新特性篇8、常用类库篇9、多线程篇10、IO篇11、网络编程篇12、集合体系篇13、JDBC篇 前言 &#x1f37a;&#x1f37a; 各位读者朋友大家好&#xff01…

idea java 单元测试_Java基础教程:IDEA单元测试

Java基础教程&#xff1a;IDEA单元测试 环境配置 使用idea IDE 进行单元测试&#xff0c;首先需要安装JUnit 插件。 安装JUnit插件步骤 File-->settings-->Plguins-->Browse repositories-->输入JUnit-->选择JUnit Generator V2.0安装。 安装完成后需要重新启动…

【Java基础教程】标识符与关键字

✅作者简介&#xff1a;大家好我是hacker707,大家可以叫我hacker &#x1f4c3;个人主页&#xff1a;hacker707的csdn博客 &#x1f525;系列专栏&#xff1a;Java基础教程 &#x1f4ac;推荐一款模拟面试、刷题神器&#x1f449;点击跳转进入网站 标识符与关键字 标识符关键字…

【Java基础教程】用Java实现猜数字小游戏

✅作者简介&#xff1a;大家好我是hacker707,大家可以叫我hacker &#x1f4c3;个人主页&#xff1a;hacker707的csdn博客 &#x1f525;系列专栏&#xff1a;Java基础教程 &#x1f4ac;推荐一款模拟面试、刷题神器&#x1f449;点击跳转进入网站 &#x1f3c6;在本周获得了新…

【Java基础教程】详解Java三种流程控制语句

✅作者简介&#xff1a;大家好我是hacker707,大家可以叫我hacker,新星计划第三季python赛道Top1&#x1f3c6; &#x1f4c3;个人主页&#xff1a;hacker707的csdn博客 &#x1f525;系列专栏&#xff1a;Java基础教程 &#x1f4ac;推荐一款模拟面试、刷题神器&#x1f449;点…

java基础教程:集合概述(27)

今天要讲的内容是集合。集合是我们编程时非常频繁的对象&#xff0c;必须花费大量时间学习。 我们还是从是什么和为什么两个角度进行引入。 集合是什么&#xff1f; 集合是存储和操作一组对象的对象。类似一个池子&#xff0c;可以存储操作一组元素。 为什么要有集合&#xf…

Java 零基础教程,看完就会,建议收藏

如果你不懂Java 并且想认真学习接触了解一下Java的语法&#xff0c;建议把这篇文章收藏了&#xff0c;多看几遍&#xff0c;应该可以初步掌握Java 大部分基础的语法 。 让我们出发吧&#xff01;ps:本文有点长&#xff0c;耐心阅读 。 〇&#xff0c;编程环境 工程项目推荐使…

找呀找呀找地铁

杭州地铁1号线据说2010年开通&#xff0c;还好下沙那边有地铁站&#xff0c;刚好在单位门口&#xff0c;不然在城区和这个鸟不生蛋的地方两头跑&#xff0c;可怎么活啊&#xff1f; 谁要以前不好好努力&#xff0c;多捞点钱呢&#xff1f;真是“老大徒伤悲”啊&#xff01;这个…

转载-高仙机器人落地北京杭州深圳多个城市地铁

你知道吗&#xff1f;世界上第一条地铁始建于1863年的伦敦&#xff0c;中国的地铁时代则在1969年的北京开启。 地铁作为黄金动脉&#xff0c;是衡量城市发展的关键指标之一。地铁不仅可以减少城市交通道路拥堵&#xff0c;带动周边地区发展&#xff0c;还可以减少环境污染&…

我国首个5G地铁站开通:TCL集团重组方案通过;苹果2019新品图泄露|雷锋早报...

我国首个5G地铁站在成都开通 近日&#xff0c;成都市政府新闻办发布消息称&#xff0c;全国首个5G地铁站&#xff08;地铁10号线太平园站&#xff09;已于1月5日在成都正式开通&#xff0c;该地铁站是全国第一个覆盖5G信号的地铁站&#xff0c;将成为四川移动对5G室内分布系统…

杭州治堵有“智慧” 阿里云数加激活城市大脑

城市车辆逐年增长&#xff0c;道路通行关系市民生活&#xff0c;也考验城市管理者智慧。除了加大基础设施投入&#xff0c;杭州对大数据的分析和应用成为治堵新发力点。在路网规划、精确治堵、科学调配资源等方面&#xff0c;都能看到“城市大脑”和大数据发挥的“智慧”作用。…

地铁一公里造价达7亿元,大部分城市无法回本,为何还抢着建?

最近几年我国各大城市兴起了一股地铁热&#xff0c;不管是大城市还是小城市&#xff0c;只要稍微符合条件的&#xff0c;很多城市都在纷纷规划建设地铁&#xff0c;目前包括已经有地铁在运营以及规划建设地铁的城市达到70个以上。 但是我们都知道&#xff0c;建地铁的成本是非常…

支付宝教会魔都地铁刷脸、扫码、懂人话

文/图 电商在线 朱婷 上午9点&#xff0c;小邵带着女朋友踏上了上海游玩的旅途。能顺利通过拥挤的地铁&#xff0c;是他们来到上海的第一个小愿望。 “我试一下宣传板上那个二维码。”看着高峰期买票的队伍&#xff0c;小邵不想让女朋友刚到&#xff0c;就在地铁口“罚站”。扫…