JavaWeb的小结02

第2章-第2节

一、知识点

HttpServletRequest请求对象、HttpServletResponse响应对象、响应内容类型Content-Type、请求转发、重定向、ServletContext对象。

二、目标

  1. 深刻理解HttpServletRequest对象的作用。

  2. 深刻理解HttpServletResponse对象的作用。

  3. 掌握HttpServletRequest获取参数的常用方法。

  4. 掌握HttpServletResponse响应内容的方法。

  5. 理解响应内容类型Content-Type。

  6. 理解请求转发和重定向的区别。

  7. 掌握ServletContext对象的使用。

三、内容分析

  1. 重点

    • HttpServletRequest对象的作用。

    • HttpServletRequest对象获取客户端参数的方法。

    • HttpServletResponse对象的作用。

    • HttpServletResponse响应数据给客户端。

    • 理解请求转发和重定向的区别。

  2. 难点

    • 请求与响应的理解。

    • 响应内容类型Content-Type的理解。

四、内容

1、HttpServletRequest

HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求中的所有信息都封装在这个对象中,通过这个对象提供的方法,可以获得客户端请求的所有信息。

一个完整的HTTP请求包括:请求行、请求头、请求体。

我们可以通过浏览器,【开发者工具】-【Network】-【Name】-【Headers】看到请求信息。

1.1 获取请求行信息

假设使用请求 http://localhost:8080/web/test?name=张三&age=18 测试以下方法,结果展示在示例结果列。

方法名说明示例结果
getMethod()获取请求方式。GET
getRequestURL()获取完整路径。http://localhost:8080/web/test
getRequestURI()获取除了域名或者IP部分的路径。/web/test
getServletPath()获取Servlet路径。/test
getContextPath()获取虚拟目录。/web
getQueryString()获取参数,键=值,即?号后面的部分。name=%E5%BC%A0%E4%B8%89&age=18
getProtocol()获取协议及版本。HTTP/1.1
getRemoteAddr()返回IP地址。0:0:0:0:0:0:0:1(属于ipv6,服务器和客户端都在同一台电脑上会出现)

1.2 获取请求头信息

请求头包含许多有关的前端环境和请求正文的有用信息。

请求头存在的主要意义是: 将前端的一些信息告诉后端

方法名说明
String getHeader(String name)根据请求头名字获取对应的请求头值。
Enumeration<string> getHeaderNames()获取所有的请求头名字。
//获取请求头
String accept = req.getHeader("Accept");
​
//迭代请求头信息
Enumeration<String> headerNames = request.getHeaderNames();
while (headerNames.hasMoreElements()) {String name = headerNames.nextElement();String value = request.getHeader(name);System.out.println(value);
}
1.3 获取请求体信息

请求体主要包含前端发送给后端的数据(参数)

对于GET请求, 一般不需要请求体, 因为GET参数直接体现在URL上。

对于POST请求, 需要请求体, 请求体里保存POST参数。

方法名说明
BufferedReader getReader()获取字符输入流,只能操作字符数据。
ServletInputStream getInputStream()获取字节输入流,可以操作所有类型的数据(文件上传)。
String getParameter(String name)根据参数名获取参数值,get、post通用。
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String name = req.getParameter("name");System.out.println(name);
}
​
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// post请求中文会乱码req.setCharacterEncoding("utf8");
​String name = req.getParameter("name");System.out.println(name);
}
1.4 请求转发

一种服务器内部资源跳转的方法,servlet之间的跳转。(可以理解为函数之间的互相调用)

  1. 使用步骤

    • 通过request请求对象获取请求转发器对象。

    • 通过RequestDispatcher对象进行转发。

    request.getRequestDispatcher("转发路径").forward(request, response)
  2. 特点

    • 浏览器地址路径不发生变化。

    • 转发是一次请求。

    • 只能转发到服务器内部资源。

  3. 共享数据

    请求转发中涉及到的多个servlet,可以共享数据。

    setAttribute(String name, Object object) // 存储数据
    getAttribute(String name) // 通过键获取数据
    removeAttribute(String name) // 通过键移除数据

2、HttpServletResponse

当客户端通过HTTP协议访问服务器时,如果服务器要给客户端一些相响应的信息,就可以使用HttpServletResponse提供的方法进行设置。

1.1 核心方法
方法说明
void setStatus(int sc)设置响应状态码
void setHeader(String name,String value)设置一个带有给定的名称和值的Header,如果name已经存在,则覆盖旧的值
void setContentType(String type)设置被发送到客户端的响应的内容类型
PrintWriter getWriter()用于往 body 中写入文本格式数据

响应状态码:服务器告诉客户端浏览器本次请求响应的一个状态,都是三位数。

  1. 1xx:服务器接收客户端消息,但是没有接收完成,等待一段时间后,发送1xx状态码

  2. 2xx:成功,200

  3. 3xx:重定向。302重定向,304访问缓存

  4. 4xx:客户端错误。404找不到后端地址,401缺少权限,403权限认证失败

  5. 5xx:服务器端错误。500服务器内部错误

1.2 重定向
resp.sendRedirect("www.baidu.com")

特点:

  1. 地址栏发生变化。

  2. 重定向是两次请求,不能使用request对象来共享数据。

  3. 重定向可以访问其他站点的资源。

3、ServletContext

ServletContext官方叫Servlet上下文。服务器会为每一个工程创建一个ServletContext对象。这个对象全局唯一,工程内所有的servlet都共享这个对象。所以叫全局应用程序共享对象。

3.1 获取方式
  1. req.getServletContext()

  2. this.getServletContext()

3.2 核心方法
方法说明
setAttribute(name, value)添加数据
getArrtibute(name)获取数据
removeAttribute(name)删除数据

3.3 获取MIME类型

在互联网通信过程中定义的一种文件数据类型。

String filename = "a.jpg";
String mimeType = context.getMimeType(filename);
System.out.println(mimeType);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1555337.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

企业必备:搭建大模型应用平台实操教程

最近AI智能体很火&#xff0c;AI智能体平台化产品肯定属于大公司的。但在一些场景下&#xff0c;尤其是对业务数据要求很高的公司&#xff0c;那就只能用私有大模型。不一定完全是为了对外提供服务&#xff0c;对内改造工作流也是需要的。所以 我感觉未来大部分企业都会搞一个…

普渡PUDU MT1:AI赋能,破解大面积场景清洁新挑战

普渡AI智能扫地机器人PUDU MT1:破解大面积场景清洁难题的新利器 在仓储物流、工业车间、交通枢纽、大型商场等大面积场景中,清洁难题一直是管理者们头疼的问题。这些区域面积广阔,清洁任务繁重,传统清洁方式难以胜任。然而,普渡机器人最新推出的AI智能扫地机器人PUDU MT1…

什么是 HTTP Get + Preflight 请求

当在 Chrome 开发者工具的 Network 面板中看到 GET Preflight 的 HTTP 请求方法时&#xff0c;意味着该请求涉及跨域资源共享 (CORS)&#xff0c;并且该请求被预检了。理解这种请求的背景&#xff0c;主要在于 CORS 的工作机制和现代浏览器对安全性的管理。 下面是在 Chrome …

ConcurrentHashMap在JDK1.7和1.8的区别,详解

目录 1.了解HashMap底层插入原理 2.ConcurrentHashMap 是什么&#xff1f; HashTable的实现 3.ConcurrentHashMap 1.7和1.8的区别 4、JDK1.7 中的ConcurrentHashMap实现原理 6、JDK1.8中的ConcurrentHashMap 7.链表转红黑树条件 1.8 put方法 8.并发扩容 9.总结 首先呢…

Origin正态分布检验

在spass中用Shapiro-Wilk检验--正态分布检测 Shapiro-Wilk检验--正态分布检测_spss shapiro-wilk检验-CSDN博客

数据服务-实时同步(sersync)

1. 概述 1.之前我们通过rsync定时任务实现定时备份/同步 2. 对于NFS我们需要进行实时同步 2. Sersync原理 3. 上手指南 环境主机web0110.0.0.7(nfs客户端)nfs0110.0.0.31(rsync客户端) (nfs服务端)backup10.0.0.41(rsync服务端) 3.1 rsync服务端准备 参考: 数据服务-备份服务…

好用便宜的头戴式耳机哪款好?强推四款高分爆单耳机精品!

音质&#xff0c;是耳机的灵魂。头戴式降噪耳机&#xff0c;以其卓越的音质表现&#xff0c;为您演绎音乐的真谛。无论是细腻的情感表达&#xff0c;还是震撼的音效体验&#xff0c;它都能让您感受到音乐的魅力所在。那好用便宜的头戴式耳机哪款好&#xff1f;&#xff0c;这里…

为什么芯片有多个不同的供电电压?

一、为什么芯片有多个不同的供电电压&#xff1f; 优化性能与功耗&#xff1a;芯片的核心部分&#xff08;Core&#xff09;和输入输出部分&#xff08;IO&#xff09;可能采用不同的电压。核心电压通常较低&#xff0c;以减少功耗和发热&#xff0c;提高能效&#xff1b;而IO电…

Linux驱动开发常用调试方法汇总

引言&#xff1a;在 Linux 驱动开发中&#xff0c;调试是一个至关重要的环节。开发者需要了解多种调试方法&#xff0c;以便能够快速定位和解决问题。 1.利用printk 描述&#xff1a; printk 是 Linux 内核中的一个调试输出函数&#xff0c;类似于用户空间中的 printf。它用于…

CSID-GAN:基于生成对抗网络的定制风格室内平面设计框架论文阅读

CSID-GAN: A Customized Style Interior Floor Plan Design Framework Based on Generative Adversarial Network 摘要前言II. CSID-GAN METHODA. Overall FrameworkB. Algorithm and Loss Function III. DATASETS AND EVALUATION METRICSA. DatasetsB. Evaluation Metrics IV.…

SAP MM学习笔记 - 豆知识10 - OMSY 初期化会计期间,ABAP调用MMPV/MMRV来批量更新会计期间(TODO)

之前用MMRV&#xff0c;MMPV来一次一个月来修改会计期间。 如果是老的测试机&#xff0c;可能是10几年前的&#xff0c;一次1个月&#xff0c;更新到当前期间&#xff0c;搞个100多次&#xff0c;手都抖。 SAP MM学习笔记 - 错误 M7053 - Posting only possible in periods 2…

【web安全】——逻辑漏洞

1.逻辑漏洞 1.1. 简介 逻辑漏洞就是指攻击者利用业务/功能上的设计缺陷,获取敏感信息或破坏业务的完整性。一般出现在密码修改、越权访问、密码找回、交易支付金额等功能处。 逻辑漏洞的破坏方式并非是向程序添加破坏内容,而是利用逻辑处理不严密或代码问题或固有不足&#x…

Timeline: 时间线轮播多图

对全国2014-2023年各省市的人口&#xff0c;做出动态柱状图/时间线轮播多图&#xff0c;即每隔一定时间间隔&#xff0c;自动的切换2014、2015、....2023各省市的人口(即2014-2023年全国省市人口排名前12的情况) 1、模板 # -*- coding: gbk -*- from pyecharts import option…

智慧农业案例 (二)- 智能化灌溉系统

橙蜂智能公司致力于提供先进的人工智能和物联网解决方案&#xff0c;帮助企业优化运营并实现技术潜能。公司主要服务包括AI数字人、AI翻译、领域知识库、大模型服务等。其核心价值观为创新、客户至上、质量、合作和可持续发展。 橙蜂智农的智慧农业产品涵盖了多方面的功能&…

使用Buildpacks构建Docker镜像

## 使用Buildpacks构建Docker镜像 ![](../assets/运维手册-Buildpacks-Buildpacks.io.png) ### Buildpacks简介 与Dockerfile相比&#xff0c;Buildpacks为构建应用程序提供了更高层次的抽象。具体来说&#xff0c;Buildpacks&#xff1a; * 提供一个平衡的控制&#xff0c;…

Elasticsearch学习笔记(五)Elastic stack安全配置二

一、手动配置http层SSL 通过前面的配置&#xff0c;我们为集群传输层手动配置了TLS&#xff0c;集群内部节点之间的通信使用手动配置的证书进行加密&#xff0c;但是集群与外部客户端的http层目前还是使用的自动配置&#xff0c;集群中HTTP的通信目前仍然使用自动生成的证书ht…

【EXCEL数据处理】000017 案例 Match和Index函数。

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 【EXCEL数据处理】000016 案例 Match和Index函数。使用的软件&#xff…

2024/10/5 数据结构打卡

对两个长度为n的升序序列A和B的元素按由小到大的顺序依次访问&#xff0c;这里访问的 含义只是比较序列中两个元素的大小&#xff0c;并不实现两个序列的合并&#xff0c;因此空间复杂度为 O(1)。按照 上述规则访问到第n个元素时&#xff0c;这个元素即为两个序列A和B的中位数。…

C语言自定义类型联合和枚举(25)

文章目录 前言一、联合体联合体的声明联合体的特点联合体和结构体内存布局对比联合体的大小计算联合体的实际使用样例礼品兑换单判断当前机器是大端还是小端 二、枚举枚举的定义枚举类型的声明枚举类型的优点枚举类型的使用 总结 前言 关于自定义类型除了我们常用的结构体&…

DBMS-3.1 SQL(1)——SQL概述和DDL

本文章的素材与知识来自李国良老师和王珊老师。 SQL概述 1.定义 2.SQL语句分类 数据定义语言DDL&#xff08;Data Definition Language&#xff09; 一.表 1.创建表 &#xff08;1&#xff09;语法 中括号内的项为可选项。分号标志着一条SQL语句的结束。SQL语句不区分大小…