ServletAPI详解(四)-HttpServletResponse

news2024/10/7 2:26:31

我们来看第三个方法,HttpServletResponse

在servlet运行原理中提到,servlet代码中的doXXX方法的目的就是根据请求计算响应,然后将响应数据设置到HttpServletResponse对象中,然后 Tomcat 就会把这个 HttpServletResponse 对象按照 HTTP 协议的格式, 转成一个字符串, 并通过 Socket 写回给浏览器

下列方法可以设置响应头,这些方法通过HttpServletResponse对象可用

序号方法 & 描述
1String encodeRedirectURL(String url)
为 sendRedirect 方法中使用的指定的 URL 进行编码,或者如果编码不是必需的,则返回 URL 未改变。
2String encodeURL(String url)
对包含 session 会话 ID 的指定 URL 进行编码,或者如果编码不是必需的,则返回 URL 未改变。
3boolean containsHeader(String name)
返回一个布尔值,指示是否已经设置已命名的响应报头。
4boolean isCommitted()
返回一个布尔值,指示响应是否已经提交。
5void addCookie(Cookie cookie)
把指定的 cookie 添加到响应。
6void addDateHeader(String name, long date)
添加一个带有给定的名称和日期值的响应报头。
7void addHeader(String name, String value)
添加一个带有给定的名称和值的响应报头。
8void addIntHeader(String name, int value)
添加一个带有给定的名称和整数值的响应报头。
9void flushBuffer()
强制任何在缓冲区中的内容被写入到客户端。
10void reset()
清除缓冲区中存在的任何数据,包括状态码和头。
11void resetBuffer()
清除响应中基础缓冲区的内容,不清除状态码和头。
12void sendError(int sc)
使用指定的状态码发送错误响应到客户端,并清除缓冲区。
13void sendError(int sc, String msg)
使用指定的状态发送错误响应到客户端。
14void sendRedirect(String location)
使用指定的重定向位置 URL 发送临时重定向响应到客户端。
15void setBufferSize(int size)
为响应主体设置首选的缓冲区大小。
16void setCharacterEncoding(String charset)
设置被发送到客户端的响应的字符编码(MIME 字符集)例如,UTF-8。
17void setContentLength(int len)
设置在 HTTP Servlet 响应中的内容主体的长度,该方法设置 HTTP Content-Length 头。
18void setContentType(String type)
如果响应还未被提交,设置被发送到客户端的响应的内容类型。
19void setDateHeader(String name, long date)
设置一个带有给定的名称和日期值的响应报头。
20void setHeader(String name, String value)
设置一个带有给定的名称和值的响应报头。
21void setIntHeader(String name, int value)
设置一个带有给定的名称和整数值的响应报头。
22void setLocale(Locale loc)
如果响应还未被提交,设置响应的区域。
23

void setStatus(int sc)
为该响应设置状态码。

24

void setCharacterEncoding(String charset)

设置被发送到客户端的响应的字符编码(MIME 字符集)例如, UTF-8

25

void sendRedirect(String location)

使用指定的重定向位置 URL 发送临时重定向响应到客户端。

3XX的状态码,浏览器会跳转到新的地址

26

PrintWriter getWriter()

用于往 body 中写入文本格式数据

27

OutputStream getOutputStream()

用于往 body 中写入二进制格式数据

void setCharacterEncoding(String charset)

 重启服务器后输入URL,发现不能正确识别中文 

如果URL中有中文字符,没有设置UTF8,返回的响应就会出现乱码,浏览器默认不知道字符的编码方式,要通过方法显示的告诉浏览器,就可以正确识别了

或者直接和contenttype一起设置

 重启服务后再次刷新页面,就正常了 

注意:设置字符集和contenttype必须要在返回对象的代码上面,必须先被执行,写到下面不会生效

void sendRedirect(String location)我们使用重定向方法

@WebServlet("/redirct")
public class RedirctServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.sendRedirect("http://www.baidu.com");
    }
}

输入URL(http://127.0.0.1:8080/ServletHelloWorld/redirct)后会直接跳转到百度页面

通过抓包我们可以看到响应中有个Location,这个就代表重定向的地址

keep-Alive是建议浏览器和服务器之间保持长连接,短链接是每个连接只进行一次请求和响应,长连接可以进行多次请求和响应 

我们也可以不用sendRedirect方法,分步进行,可以先设置状态码,再设置Location

 重新启动服务器,输入后发现效果是相同的

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

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

相关文章

golang硬核技术(一)内存管理

目录前言tcmallocPageHeapCentralCacheThreadCache小对象分配中对象和大对象总结堆内存分配概念mheapheaparenamspanmcentralmcache微对象分配 tiny allocator小对象分配大对象分配栈内存分配分段栈连续栈栈在go中stackpoolstackLarge栈分配栈缩容前言 golang的内存分配&#…

QT学习笔记( APP 主界面开发项目\滑动界面的设计)

APP 主界面开发项目 本章与大家一起开发 APP 主界面。Qt C提供了像 QStackedWdget 与 QTableView 这种控 件可以方便的切换页面,但是这种切换页面的方法比较生硬,不能像手机一样滑动,往往这种 界面就会给用户较差的体验感。所以在传统的 Qt …

【GPT】让你事半功倍特别好用的5个GPT工具

文章目录前言一、现在还能开通ChatGPT4.0吗?二、推荐五款与ChatGPT的相关实用工具1.一款浏览器插件:ChatGPT for Google2.一款生成图片的AI工具:midjourney3.推荐两款AI自动生成PPT:闪击PPT、mindshow4.识别PFD文件内容对话&#…

信号与系统之《一文看懂傅里叶变换》

“傅里叶变换是一种非常有用的数学工具,它可以将一个复杂的信号分解成许多简单的频率成分。傅里叶变换在信号处理、图像处理、音乐、视频和通信等许多领域都有广泛的应用。相信大部分同学在毕业之后的一段时间之内都还没有理解到傅里叶变换的精髓,今天我…

【Java面试八股文宝典之MySQL篇】备战2023 查缺补漏 你越早准备 越早成功!!!——Day20

大家好,我是陶然同学,软件工程大三即将实习。认识我的朋友们知道,我是科班出身,学的还行,但是对面试掌握不够,所以我将用这100多天更新Java面试题🙃🙃。 不敢苟同,相信大…

(六)【软件设计师】计算机系统—原码反码补码移码

文章目录一、数据表示二、原码三、反码四、补码五、移码六、范围七、总结一、数据表示 各种数值在计算机中表示的形式称为机器数,其特点是采用二进制计数制,数的符号用0和1表示,小数点则隐含,表示不占位置。机器数对应的实际数值称…

使用zabbix监控avamar【二】

1、在“使用zabbix监控avamar【一】”中介绍了如何设置avamar端,并发送测试消息,本篇将介绍如何在zabbix server端进行配置。 2、在zabbix server的snmp trap日志文件中查找刚上传的报警信息 可以看到已经正常收到客户端信息。 3、在/etc/zabbix/snmpt…

2.0、Java继承与多态 - 方法重写与重载

2.0、Java继承与多态 - 方法重写与重载 重写(Override):方法名一样,参数列表也一样 [ 重写也叫做覆写或者覆盖 ]; 重载(Overload):方法名一样,但是参数列表不一样&#…

vue-cli 初始化工程

个人记录下vue-cli创建项目的步骤 卸载老版本的vue-cli (这不是必要的) npm uninstall vue-cli -g 如果本地使用 yarn的话,还需执行 yarn global remove vue-cli 安装全新的vue-cli npm install -g vue/cli 安装指定版本的vue-cli npm install -g vue/…

开源后台管理系统解决方案 boot-admin 简介

开源后台管理系统解决方案 boot-admin 简介介绍软件技术路线微服务架构图主要功能框图模块介绍介绍 boot-admin 是一款采用前后端分离架构模式的后台管理框架。系统提炼自实际项目,兼具RuoYi-Vue前端分离版和Ruoyi-Cloud微服务版功能与技术特点。 boot-admin 既有…

顶点程序经典案例——树木生长

返回目录 树木生长Shader一、介绍 大家好,我是阿赵。这次来做一个树木生长的Shader。 顶点程序作为整个渲染管线里面和片段程序并列的两大可控过程之一,一直存在感都比较低。我们平时制作的效果,很多都是在片段程序里面实现的计算&#xff0…

数据结构泛型

1.定义 先让我们看看官方是如何定义泛型的 是不是看起来不太容易,解释一下: 就是我们想有一种数据类型,它可以适用各种数据类型。从代码上讲就是对类型实现参数化。 2.引例 例:实现一个类,类中包含一个数组成员&…

直方图 颜色映射

文章目录hist map1. 原理2.灰度图3. 对于彩色图像4. 直方图规定化效果hist map 1. 原理 code:https://github.com/rossgoodwin/hmap 利用队列记录 hist src > tgt, src < tgt , src tgt的 索引。 然后&#xff0c;对于每个hist excess, 将其移动到 hist deficit 进行…

linux环境下,使用binlog模式恢复mysql数据(mysql数据库中的一张表误删了怎么找回?)。

linux环境下&#xff0c;使用binlog模式恢复mysql数据&#xff08;mysql数据库中的一张表误删了怎么找回&#xff1f;&#xff09;。 问题&#xff1a;linux中开启binlog模式下&#xff0c;mysql数据库中的一张表误删了怎么找回&#xff1f; 1.首先在mysql中查看是否开启binl…

气传导耳机是不是智商税?气传导耳机值得不值得入手?一文带你看懂

先说结论:并不是智商税。 目前的声音传播途径分为固体、气体和液体。而气传导耳机顾名思义&#xff0c;就是通过气体传声&#xff0c;这一点和我们日常使用的头戴式耳机、半入耳式入耳式耳机都是一样的&#xff0c;和我们日常生活中接触到最多的声音传播方式也是一样。 只不过…

动态规划概述

动态规划概述动态规划的两个要求&#xff1a; 1.最优子结构 例&#xff1a;现有一座10级台阶的楼梯&#xff0c;我们要从下往上走&#xff0c;每次只能跨一步&#xff0c;一步可以往上走1级或者2级台阶&#xff0c;请问一共有多少种解法呢&#xff1f; 台阶数12345678910走法数…

手动挡科目三道路驾驶技能考试及理论考试要点

路线每个驾校的科目三路线可能都不一样&#xff0c;但是考点基本差不多。我当时选的驾校是北京公交驾校&#xff0c;路线图如下&#xff1a;考试要点在考试大厅等待叫号&#xff0c;一般大屏都会公布xxx学员找xx号车考试&#xff0c;这边白色车是手动挡&#xff0c;灰色车是自动…

Web自动化测试-【Selenium环境部署Edge】

Selenium Web自动化测试工具 之前写过一篇关于自动化测试的博客&#xff0c;里面是有的chrome驱动&#xff0c;由于不适配缘故&#xff0c;更新以下Edge驱动。 自动化测试 Selenium环境部署 准备 Edge 浏览器准备 Edge 驱动包 a .查看自己的Edge浏览器版本&#xff08;浏览器版…

【论文解读】ConvNeXt V2: Co-designing and Scaling ConvNets with Masked Autoencoder

1. 本文贡献 提出了一个全卷积掩码的自动编码器框架和一个新的全局响应归一化&#xff08;GRN&#xff09;层 1.1 想法 本文的想法是希望能在 ConvNeXt 中使用MAE,但是MAE的设计架构是基于vision transformer的&#xff0c;与使用密集滑动窗口的标准ConvNets不兼容&#xf…

upload 通关pass16-pass20

1.pass16 白名单 二次渲染 需要先上传一个正常图片&#xff0c;然后下载下来&#xff0c;跟原图片进行比对&#xff0c;用010 16进制编辑器&#xff0c;把php代码放到没有改变的位置&#xff0c;即一样的地方 访问&#xff1a; 2.pass17 白名单 条件竞争 这题先是上传文件并…