随笔 - 750  文章 - 1  评论 - 107  阅读 - 34万

[Java.Web][Servlet]常用请求头.断点续传

HTTP 请求头字段 Range

 Range 头指示服务器只传输一部分 Web 资源。这个头可以用来实现断点续传功能。

 Range 字段可以通过三种格式设置要传输的字节范围:

   Range  bytes=1000-2000  传输范围从 1000-2000字节。

   Range  bytes=1000-         传输范围从 1000字节以后的所有内容。

   Range  bytes=1000          传输最后 1000个字节。

HTTP 响应头字段 Accept-Ranges

 Accept-Ranges: 这个字段说明 Web 服务器是否支持 Range 。支持则返回 Accept-Ranges: bytes

  如果不支持,则返回 Accept-Ranges:none

 Content-Ranges: 指定了返回的 Web 资源的字节范围。这个字段值的格式类似于: Content-Ranges:1000-3000/5000

复制代码
URL url = new URL("http://localhost:8088/day05/range.txt");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestProperty("Range", "bytes=5-"); // 从第6个字节开始的所有内容
InputStream in = conn.getInputStream();
int len = 0;
byte[] buffer = new byte[1024];
FileOutputStream outputStream = new FileOutputStream("c:\\a.txt", true);

while ((len = in.read(buffer)) > 0) {
    outputStream.write(buffer, 0, len);
}
复制代码

这段代码会将得到的结果追加到 c:\a.txt 文件中。

针对客户端的多次 Servlet 请求,服务器只会创建一个 Servlet 实例对象,直至 Web 容器退出。

在 Servlet 生命周期中,init 方法只被调用一次,而每个访问请求都会调用一次 service 方法。对于每次访问请求,Servlet 引擎都会创建一个新的 HttpServletRequest 请求对象和一个新的 HttpServletResponse 响应对象,然后将这两个对象作为参数传递给它调用的 Servlet 的 service() 方法,service 方法再根据请求方式分别调用 doGet() / doPost() 等方法。

在 web.xml 配置文件中,可以在 <servlet></servlet> 节点中添加 <load-on-startup>1</load-on-startup> 节点。

这个标记表示容器是否在启动的时候就加载这个 servlet

其中的 1 的意义:当值 >= 0 时,容器在应用启动时就加载这个 servlet

当值 < 0 或无此节点时,容器在该 servlet 被选择时才加载。正数的值越小,启动该 servlet 的优先级越高。

posted on   z5337  阅读(288)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示