位置: 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 用的是什么模板引擎)

  • 红米note11pro是什么指纹

    红米note11pro是什么指纹

  • 华为nova7pro是5g手机吗(华为nova7Pro是曲屏的吗)

    华为nova7pro是5g手机吗(华为nova7Pro是曲屏的吗)

  • airpods2右耳没反应(airpods右耳没有反应)

    airpods2右耳没反应(airpods右耳没有反应)

  • 相机s是啥(相机中s是什么意思呀)

    相机s是啥(相机中s是什么意思呀)

  • 手机镜头有水雾会干吗(手机镜头有水雾代表什么)

    手机镜头有水雾会干吗(手机镜头有水雾代表什么)

  • b站怎么开小窗(b站怎么开小窗到其它软件苹果)

    b站怎么开小窗(b站怎么开小窗到其它软件苹果)

  • qq明明隐身却显示在线(qq明明隐身却显示2g在线)

    qq明明隐身却显示在线(qq明明隐身却显示2g在线)

  • 电脑无线键盘没反应怎么回事(电脑无线键盘没坏但是打不了字怎么办)

    电脑无线键盘没反应怎么回事(电脑无线键盘没坏但是打不了字怎么办)

  • 微信黑名单删除后还能加为好友吗(微信黑名单删除的人还能找回来吗)

    微信黑名单删除后还能加为好友吗(微信黑名单删除的人还能找回来吗)

  • 苹果手机微信可以设置夜间模式吗(苹果手机微信可以加密吗怎么设置)

    苹果手机微信可以设置夜间模式吗(苹果手机微信可以加密吗怎么设置)

  • 手机卡封停有什么后果(手机卡封了会自动注销吗)

    手机卡封停有什么后果(手机卡封了会自动注销吗)

  • 华为mate和p系列的区别(华为mate和p系列的区别nova)

    华为mate和p系列的区别(华为mate和p系列的区别nova)

  • 陌陌多久才能发语音通话(陌陌多久发一条消息不会被屏蔽)

    陌陌多久才能发语音通话(陌陌多久发一条消息不会被屏蔽)

  • 微信里面第三方服务打不开(微信里面第三方服务怎么添加)

    微信里面第三方服务打不开(微信里面第三方服务怎么添加)

  • 苹果手表3可以看视频吗(苹果手表3可以和苹果12配对吗)

    苹果手表3可以看视频吗(苹果手表3可以和苹果12配对吗)

  • 苹果11pro有刘海吗(苹果11pro有没有刘海)

    苹果11pro有刘海吗(苹果11pro有没有刘海)

  • qq好友热播在哪里打开(qq好友热播在哪里关)

    qq好友热播在哪里打开(qq好友热播在哪里关)

  • crrul20是什么型号(cr20是什么意思)

    crrul20是什么型号(cr20是什么意思)

  • 蹭饭卡能被赶走吗(蹭饭卡能被赶走嘛)

    蹭饭卡能被赶走吗(蹭饭卡能被赶走嘛)

  • vivonex屏幕分辨率怎么调没(vivonex旗舰版屏幕分辨率)

    vivonex屏幕分辨率怎么调没(vivonex旗舰版屏幕分辨率)

  • 腾讯大王卡怎么换省(腾讯大王卡怎么退订)

    腾讯大王卡怎么换省(腾讯大王卡怎么退订)

  • 苹果在保修期内维修免费么(苹果在保修期内可以换电池吗)

    苹果在保修期内维修免费么(苹果在保修期内可以换电池吗)

  •  人人视频如何投屏夏普(人人视频如何全屏)

    人人视频如何投屏夏普(人人视频如何全屏)

  • 三种安卓手机系统升级方法教程(安卓系统详解)

    三种安卓手机系统升级方法教程(安卓系统详解)

  • 环保税的纳税义务人是施工方还是建设方安徽
  • 债权债务互抵怎么做账
  • 房地产开发产品科目
  • 开诊所会计如何做账
  • 一般企业和小企业会计准则的区别
  • 营改增后房地产企业账务处理
  • 残保金2018
  • 无形资产减值损失可以转回吗
  • 大额虚开发票做转出税款入什么会计科目?
  • 伤亡保险是什么意思
  • 发票丢失证明怎么开具
  • 支付劳务报酬怎么做账
  • 统计应交增值税怎么算
  • 水费适用税率
  • 旅游业差额的会计分录
  • 会展服务可以入管理费用的哪个明细费用
  • 1697509439
  • 以股权增资的税费怎么算
  • 机器用润滑油怎么使用
  • 如何免费获取网页文字
  • 宽带测速器在线测速
  • 发出委托加工物资
  • 固定资产改扩建过程中,发生的人工费用
  • 增值税抵扣怎么操作
  • ubuntu18.04 u盘安装
  • HTTP 400 错误是什么原因
  • win11自带照片查看器
  • 应收存款利息计入什么科目
  • php中split
  • 不属于职工福利费的是抚恤费
  • vue路由点击没反应
  • 非货币性资产投资的会计处理
  • php get函数
  • 现金返利分录
  • 计算利润要扣除企业所得税吗
  • 资产减值会计处理论文
  • php unicode
  • 信用减值损失在借方是增加还是减少
  • nn.lstm输出
  • ai模拟
  • js 数组去重的四种方法
  • php array_fill
  • 财政补助结转和财政补助结余
  • mongodb 权限设置
  • 开业请别人吃饭怎么说
  • 接受现金资产投资会引起实收资本增加吗
  • 发票报销原因
  • 资产总额是营业收入吗
  • mysql group by实现原理
  • 一次性伤残补助金怎么计算
  • 计提折旧会计分录怎么做
  • 一般纳税人固定资产处置税率
  • 住宿费用专票可以抵扣吗
  • 业务招待费 纳税调增
  • 小规模纳税人年收入不能超过多少
  • 企业中征码怎么生成
  • 贷款服务可以抵扣进项税额吗
  • 哪些企业可以减免企业所得税
  • 百旺金赋税盘怎么清卡
  • 新冠肺炎疫情相关租金减让
  • win7旗舰版无法安装net4.0
  • linux将文件a.txt更名为b.txt
  • 电脑太慢了怎么解决
  • 如何恢复ubuntu
  • 电脑久了就会高温
  • mac新手必看教程
  • 电脑xp桌面
  • centos基础命令
  • linux新手教学
  • win7系统如何添加虚拟网卡
  • kotlin开发安卓教程
  • andengine学习,《android游戏开发实践指南》详解
  • shell脚本-lt
  • cocos2dx官方教程
  • excite引擎
  • js能实现的简单效果
  • jQuery.ajax 跨域请求webapi设置headers的解决方案
  • 税控盘时钟异常去政务大厅那个窗口办理
  • 海关跟税务关系的区别
  • 乾隆年间财政收入统计表
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设