位置: IT常识 - 正文

Servlet4.0 Response

编辑:rootadmin
Servlet4.0 Response对象Response对象封装Server返回Client的所有信息。在HTTP协议中,Server传达给Client信息转换到HTTP Header或者HTTP BODY中。5.1 Buffering缓冲区Serverlet Container可以但不强制缓冲发 ...

推荐整理分享Servlet4.0 Response,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

Servlet4.0 Response对象

Response对象封装Server返回Client的所有信息。在HTTP协议中,Server传达给Client信息转换到HTTP Header或者HTTP BODY中。

5.1 Buffering缓冲区

Serverlet Container可以但不强制缓冲发送给客户端的内容。默认得,Servlet Container会开放接口设置缓冲区。如ServletResponse对象的方法可以设置缓冲区:

getBufferSizesetBufferSizeisCommittedresetresetBufferflushBuffer

当Servlet Container使用ServletOutputStream或者Write时,可以使用这些方法配置缓冲区。

getBufferSize返回缓冲区大小,若没有缓冲区,则返回0。

setBufferSize servlet可以使用该方法设置缓冲区大小。

申请的大小可以不是servlet请求的大小,但是至少要是请求的大小。这样,容器才能重使用该缓冲区,也能够提供足够的缓冲区。该方法需要在Servlet Container使用ServletOutputStream或者是Writer输出响应之前调用。

isCommitted方法表示内容是否已经响应给客户端。

flushBuffer方法强制将缓冲区数据输出至客户端。

reset方法强制清空缓冲区的数据若内容未提交至客户端。

resetBuffer方法强制清空缓冲区的数据但不包括请求头和响应码若内容未提交至客户端。

若内容已经输出至客户端,调用reset方法或resetBuffer方法都会抛出异常。但是不会改变缓冲区内容。

若缓冲区已经满需要立即输出响应内容给客户端。

5.2 HTTP响应头

Servlet可以通过ServletResponse接口的方法设置HTTP响应头。方法如下:

setHeaderaddHeader

setHeader使用指定的名称替换已经存在的值,若header的值是集合,则集合的值被清空,使用新值替换。

Servlet4.0 Response

addHeader添加指定名称的值到集合,该名称未存在,则会创建新集合。

若header的值是int类型或Date类型,则ServletResponse接口提供下述方法:

setIntHeadersetDateHeaderaddIntHeadersetIntHeader

HTTP响应头需要比响应体输出至客户端,若响应体已经输出再输出响应头,Servlet Container会忽略响应头。

对于Servlet生成的内容Servlet 编程者有义务设置Content-Type。HTTP/1.1不要求必须设置Content-Type请求头。

推荐Servlet Container 使用X-Powerd-By请求头发布自身的实现。

这个请求头的值起码是一个以上。如"Servlet/4.0"。

5.3 HTTP Trailer 预告

HTTP Trailer是发送在响应体之后的响应头集合。适用于chunked编码发送的场景或者是其他额外的协议。

如果HTTP Trailer 请求头已经就绪则调用isTrailerFieldsReady()方法会返回true。

servlet可以通过HttpServletRequest接口的getTrailerFields()方法读取 Trailer 请求头。

servlet可以输出HTTP Trailer头通过提供Supplier给HttpServletResponse接口提供的setTrailerFields()方法。也可以通过提供的Supplier使用HttpServletResponse接口的getTrailerFields()方法获取HTTP Trailer请求头。

5.4 非阻塞IO

非阻塞IO只能在异步处理请求中使用。否则ServletInputStream.setReadListener和ServletOutputStream.setWriteListener调用时,需要抛出IllegalStateException异常。

为了支持在Web 容器支持非阻塞写,引入如下改变:

WriteListener提供下述回调方法:

void onWritePossible() 当WriteListener注册到ServletOutputStream

后,当ServletOutputStream能写时会第一次调用WriteListener.onWritePossible()方法。

只有当ServletOutputStream.isReady()方法返回true才会调用WriteListener.onWritePossible()方法。

onError(Throwable t)处理响应失败时会调用该方法。

伴随着WriteListener还有ServletOutputStream的其他方法帮助WebApplication判断是否准备好写内容至客户端。

boolean isReady()如果写ServletOutputStream成功则会返回true。如果这个方法返回true,则ServletOutputStream写操作可以继续完成。若没有后续内容需要写,则该方法返回false。void setWriteListener(WriteListener listener) 关联WriteListener和ServletOutputStream。当可以写入数据时容器会调用WriteListener的方法。

注册的WriteListener会开始非阻塞IO,此时禁止转为阻塞IO。Servlet Container需要保证WriteListener的线程安全

5.5 Response对象的生命周期

每个Response对象都只能在service或者doFilter方法中生效,异步处理请求除外。

异步处理请求情况下,Response对象一直有效直到Servlet Container 调用AsyncContext.complete方法后。Servlet Container会回收Response对象为了提供性能,

研发需要明白,在这些作用域外引用Response对象都会引发未知错误。

本文链接地址:https://www.jiuchutong.com/zhishi/311536.html 转载请保留说明!

上一篇:没有实收资本的公司开立账套如何建立银行存款分录?(没有实收资本的股权原值)

下一篇:phpcms首页模板是哪个文件(phpcms 用的是什么模板引擎)

  • 流转税率是什么意思
  • 本年利润是净利润还是利润总额
  • 个体工商户必须缴纳社保吗
  • 个税app显示已离职是什么原因
  • 劳动生产总值和总产值是一回事吗
  • 房地产公司产品无偿提供他人使用 税
  • 员工补偿金扣税
  • 期间费用分析方法有哪些
  • 以合并方式成立的新企业,新启用
  • 国税和地税分别占多少
  • 增值税征收比例和征收方式
  • 二房东税务局开发票
  • 特殊业务分录
  • 增值税发票丢失可以用复印件入账么
  • 物流公司的保险服务属于什么费用
  • 国税退税怎么做账
  • 收到打款认证会计分录
  • 一般风险准备金计算公式
  • 已申报未导入什么意思呀
  • 客户退回的发票怎么处理
  • 10万以下免征增值税 文件
  • 结转出租设备的会计分录
  • sysprep.exe是什么
  • 广告公司的成本是什么
  • 公司员工私车公用协议要签吗
  • ms-dos安装
  • 主营业务收入发生额在哪方
  • 新公司成立股份比例
  • 房屋装修各项费用比例
  • 个体户不建账怎样处罚
  • 成本核算流程及注意事项
  • 电子税务局怎么注册
  • 退休人员发绩效
  • 支出包括哪些项目
  • 待摊费用新准则解读
  • 单位出租厂房需交税吗
  • 勾选了不抵扣还能抵扣
  • 《中华人民共和国治安管理处罚法》
  • 消防预付款怎么做分录
  • 税金及附加主要包括什么
  • 增值税发票日用品开票明细
  • 转出多交增值税账务处理
  • 合并抵消分录影响母公司总分类账吗
  • 水电费的会计分录
  • 筹建期的收入要交企业所得税吗
  • 收到社保的退费是怎么回事
  • 公司从异地迁移到本地怎么向当地政府写申请
  • 无形资产如何做账务处理
  • 处置固定资产净收益属于利得吗
  • 待抵扣进项税额分录
  • 租农民土地
  • 未开发票已收款如何做账?
  • 国外公司与国内公司签约
  • 企业的应付职工薪酬属于流动负债
  • 延缓缴纳的企业所得税怎么做账
  • 会计科目中其期末余额应列入资产负债表存货项目的有
  • 进项税额转出可以在所得税前扣除吗
  • 政府补助收入是指县级以上工会收到的
  • 出口退税哪些商品不能退
  • 会计账簿的登记实训报告
  • freebsd使用wifi
  • sedsvc.exe是什么
  • debian修改中文
  • 网站备份是什么意思
  • win8怎么快速开机
  • opengl图形裁剪
  • js闭包的应用
  • jquery.js
  • linux系统tomcat启动
  • jquery设置title
  • node 删除文件
  • android的布局文件
  • 从零基础开始
  • js处理时间格式
  • [Phonegap+Sencha Touch] 移动开发50 Android修改新建虚拟机存放的位置
  • android打包v1v2
  • twist python
  • 吉林网上报税网址
  • 地方税务局发票查询
  • 重庆税务登录
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设