获取、设置响应头、设置缓冲区

article/2025/8/20 4:27:51

获取请求头

  获取请求头使用HttpServletRequest对象的getHeader()、getHeaders()、getHeaderNames()、getIntHeader()、getDateHeader()。

设置响应头

  设置响应头可以使用HttpServletResponse对象上的setHeader()、addHeader()。setHeader()用于设置响应头名称与值,addHeader()是在同一个响应头名称上附加值。
  如果响应头的值是整数,使用setIntHeader()、addIntHeader()方法。
  如果响应头的值是日期,则可以使用setDateHeader()、addDateHeader()方法。

  所有的标头设置,必须在响应确认之前,在响应确认之后设置的标头,会被容器忽略。


缓冲区

  容器可以但非必要对响应进行缓冲,通常容器默认都会对响应进行缓冲。 


关于缓冲区的API

  HttpServletResponse有关缓冲的方法有:

    1、getBufferSize() 

    返回当前缓冲区的大小,单位是字节,默认情况下是8192,即8KB大小 

    2、setBufferSize()  

    setBufferSize()必须在调用HttpServletResponse的getWriter()或getOutputStream()方法之前调用,这样,所取得的Writer或ServletOutputStream才会套用这个设置。

在调用HttpServletResponse的getWriter()或getOutputStream()方法之后调用setBufferSize(),会抛出IllegalStateException

    3、isCommitted()

    在缓冲区未满之前,设置的响应相关内容都不会真正传至客户端,可以使用isCommitted()看看是否响应已确认。

    4、reset()

    如果想要重置所有响应信息,可以调用reset()方法,这会连同已设置的响应头和状态码一并清除。

    5、resetBuffer()

    调用resetBuffer()会重置响应内容,但不会清除已设置的响应头内容和状态码。

    6、flushBuffer()

    flushBuffer()会清除(flush)所有缓冲区中已设置的响应信息至客户端。

    reset()、resetBuffer()必须在响应未确认前调用,如果在响应已确认后调用reset()、resetBuffer()会抛出IllegalStateException。


缓冲区刷新

  HttpServletResponse对象若被容器关闭,则必须清除所有的响应内容,响应对象被关闭的时机点有以下几种:
    1、Servlet的service()方法已结束。
    2、响应的内容长度超过HttpServletResponse的setContentLength()所设置的长度。
    响应的内容超过响应头中指定的body长度的上限时会自动刷新缓冲区,并关闭输出流;因为标头中规定body只能有这么多,超出部分不予以提交。
设置响应body大小上限的方法是:void HttpServletResponse.setContentLength(int len);单位是字节,该方法会直接设置Content-Length标头。
    3、调用了sendRedirect()方法
    4、调用了sendError()方法
    5、调用了AsyncContext的complete()方法

  另外,下面两种情况缓冲区也会刷新并输出到客户端

    1、响应缓冲区已满。一个Response只有一个缓冲区,如果所有要提交给客户端的内容超过缓冲区大小,那么就会分若干次提交,每次缓冲区满就会提交一次。
    2、手动调用flushBuffer方法


 Demo

package com.test;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;@WebServlet("/flush.do")
public class BufferServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html; charset=UTF-8");// 设置body长度上限,设置为4000后,不会输出全文//response.setContentLength(4000);// 设置缓冲区大小,单位是字节,缺省情况下BufferSize大小是8192字节,即8192B,即或8KB//response.setBufferSize(8192*2);int bufferSize = response.getBufferSize();PrintWriter out = response.getWriter();// 输出缓存区大小out.println("缓存区大小: " + bufferSize);out.println("<!DOCTYPE html>");out.println("<html>");out.println("<head>");out.println("<meta charset=\"UTF-

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

相关文章

王者荣耀李白王昭君情侣头像故事: “风雨如晦,鸡鸣不已。既见君子,云胡不喜。”...

1. 十六岁。 王嫱种下的兰花终于开出了花&#xff0c;幽香阵阵。她又想起了那个紫衫少年&#xff0c;记忆中的他总是笑得一脸温柔&#xff0c;素白修长的手也会轻轻拍打着自己的脑袋&#xff0c;揉着自己的头发&#xff0c;叫着自己丫头。 十七岁。 王嫱看着比自己小的的女…

黄山头国家森林公园

简介/黄山头国家森林公园 黄山头国家森林公园是1992年7月经国家林业部批准的首批国家级森林公园之一。她坐落于武陵山余脉延伸的黄山&#xff0c;北枕长江&#xff0c;南抚洞庭,地处湖北省荆州市南部,为鄂南湘北边界公安、石首、安乡三县市的结合部。荆&#xff08;荆州&#…

LyX简易教程(一)——LyX简介

作者的话&#xff1a; 此教程参考网上部分中文译文与“LyX Team”的官方文档&#xff0c;但是会根据个人的需要进行适当的裁剪和扩展。因为我的目的不仅仅是进行原文翻译&#xff0c;更重要的是借鉴这些资料整理成可读性更强的学习资料&#xff0c;供个人和他人参考。 教程中描…

Lyx好用latex软件-如何编写中文

如何编写中文 如果不进行设置会出现编辑报错例如 error utf-8 step Document -> setting step 选择Document class 选择 chinese article&#xff08;CTex&#xff09; save as Document Defaults step 编码方式 UTF-8 save as document default step 输出格式 format…

Lyx使用bib插入参考文献

Lyx使用bib插入参考文献 一、创建bib文件 在lyx的文件目录下创建ref.bib文件&#xff0c;然后将参考文献的Bibtex格式的文字拷贝到ref.bib中 如下就是bibtex的参考文献内容 article{2021Swin,title{Swin Transformer: Hierarchical Vision Transformer using Shifted Windo…

2019-11-06 Win10 Texlive 2019+LyX的安装

温馨提示&#xff1a;博主已经完全采用texstudio的软件&#xff0c;弃用LyX。如果打算长期使用&#xff0c;建议直接texstudio&#xff0c;因为LyX能查到的资料太少&#xff0c;用户基数小&#xff0c;不利于高效率写作。 目录 适用场景Texlive2019安装LyX安装中文问题 适用场景…

如何在Lyx中添加参考文献,以及生成参考文献目录

如何在Lyx中添加参考文献&#xff0c;以及生成参考文献目录 首先&#xff0c;创建一个记事本txt文件 在IEEE上或者百度学术上搜索你要添加的文献&#xff0c; 点击引用&#xff0c;下载BibTex&#xff0c;将你要引用的所有文献的BibTex复制到新建的记事本中&#xff0c;可以不…

Lyx使用IEEE模板编写latex论文

Lyx使用IEEE模板编写latex论文 代开lyx点击文件File的第二行New from Template 选择你目标期刊的lyx模板 如下我选择IEEE journal 3. 编译左边导航栏的眼镜标志

lyx插入代码

使用lyx插入代码方法&#xff1a; 插入Tex代码&#xff0c;出现红色边框&#xff0c;把代码复制粘贴进去。 粘贴的快捷键使用ctrlshiftv&#xff0c;而不是使用ctrlv&#xff0c;否则代码会只有一行&#xff0c;没有分行。 插入成功如图所示&#xff1a; 随便粘贴的&#xf…

Ubuntu14.04+Texlive2014+LYX-Linux下LYX的中文配置方案

LYX是一款可见即所得的文档排版软件&#xff0c;LYX在ubuntu系统下的使用需要解决中文字体支持的问题。Texlive安装包为Ubuntu系统下的中文支持提供了完美的解决方案。经过两天的调试终于解决了lyx的中文文档编译问题。现在将安装的过程和其中遇到的问题中介如下&#xff0c;希…

lyx中文配置

配置1/3 配置2/3 配置3/3 没有文档类请看下一步: 终级大招: sudo apt-get install texlive-full

介绍一款LaTeX编辑器——LyX

LYX L Y X 是一个“所见即所指”&#xff08;what you see is what you mean&#xff09;的利用LaTEX来排版的文件编辑软件。相对于其它标榜所见即所得的编辑器而言&#xff0c;LyX标榜只显示你真正的关心的内容。 主页 http://www.lyx.org/Home 推荐中文输出使用luatex编译…

xYOLO

随着物联网(IoT)、边缘计算和自主机器人等领域的车载视觉处理技术的出现&#xff0c;人们对复合高效卷积神经网络模型在资源受限的硬件设备上进行实时目标检测的需求越来越大。Tiny-YOLO通常被认为是低端设备中速度更快的对象探测器之一&#xff0c;这个也是今天作者工作的基础…

概念辨析理解--TEX、LATEX、TEXLive和Lyx的区别和联系

一、前言 最近搞了好久的Lyx&#xff0c;TEX、LATEX、TEXLive和Lyx这几个概念把我搞糊涂了&#xff0c;现在梳理一下。 二、细说TEX和LATEX 2.1 TEX TEX是诞生于20世纪70年代末到80年代初的一款计算机排版软件&#xff0c;而且是命令行格式的&#xff08;如下图&#xff09…

lyx安装(需先安装texlive)2021-03-14

lyx安装&#xff08;需要先安装texlive&#xff09; 1.texlive下载 非常感谢各位 参考Lyx的安装流程&#xff08;windows10系统&#xff09;及配置中文环境 选择TeX Live2018_latex下载教程&#xff0c;下载了2020最新版的。显示大4G,下载很漫长。继续进行&#xff1a; 2.下载…

LYX中文配置问题

LYX中文配置问题 1 版本 lyx2.2.2 TeX Live 2015/Debian 2 问题描述 写好文档预览时&#xff0c;提示中文配置问题&#xff0c;无法预览。 3 解决方法 需要对文档-首选项中的三个选项重新设置具体设置如下&#xff1a; 文档类设置 3.1 文档类设置 打开文档-首选项对话框&#x…

Lyx使用对中文进行编译

Lyx使用对中文进行编译 Lyx对中文进行编译需要具备一下条件 文档格式是utf-8文档类型 Chinese article (ctex)编译使用xelatex或者luaTex 一、设置文档格式 Document->setting->language 中文版 &#xff1a;文档-》首选项》语言 选择Unicode(utf-8) 二、设置文档格…

lyx插入图片和表格

Lyx插入图片和表格时&#xff0c;按照如下步骤进行&#xff1a; 插入浮动项 在float中选择图 生成浮动框&#xff0c;继续选择插入 但是有点靠左&#xff0c;对着浮动项右键&#xff0c;选择段落设置&#xff08;paragraph settings&#xff09; 选择center 继续选择…

SOJSONV5解密,SOJSON.V5解密方法,SOJSONV5解密分析

首先 JS加密只要给浏览器能运行就是可逆的。 只是难度和时间问题&#xff0c;如果一个加密他有规则&#xff0c;那么他就是可以系统化可逆。 我们来分析下 sojson.v5 ,sojsonv5解密&#xff0c;使用者较多&#xff0c; 知名企业都在使用&#xff0c;证明这个加密工具还是值得…

微信企业号开发之access_token接口调用示例(一)

摘要&#xff1a;在微信企业号开发中&#xff0c;首先需要调用access_token的接口&#xff0c;具体请看官网文档&#xff0c;地址为&#xff1a;https://work.weixin.qq.com/api/doc#10013 第一步&#xff1a;创建企业应用 登录企业管理后台进入“企业应用”页面&#xff0c;…