IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> JavaWeb悔悟重学3:观 狂神说 后总结 -> 正文阅读

[网络协议]JavaWeb悔悟重学3:观 狂神说 后总结

本文章所有思路与素材都来自于 狂神说Java 如有冒犯 多多见谅,自己总结自己看用。

1.HttpSrvletResponse

web服务器接收到客户端的http请求,针对这个请求 分别创建一个代表请求的HttpServletRequest对象,代表响应的一个HttpServletResponse

如果获取客户端请求过来的参数:找HttpServletRequet

如果要给客户端一些信息:找HttpServletResponse

1.1 简单分类

负责向浏览器发送数据的方法:

getOutputSteam()? ?//写一般平常流用它

getWriter()? ?//一般写中文用

负责向浏览器发送响应头的方法:

void setCharacterEncoding(String var1);

void setContentLength(int var1);

void setContentLengthLong(long var1);

void setContentType(String var1);

void setDateHeader(String var1, long var2);

void addDateHeader(String var1, long var2);

void setHeader(String var1, long var2);

void addHeader(String var1, long var2);

void setIntHeader(String var1, long var2);

void addIntHeader(String var1, long var2);

(? ? void setStatus(int varl)设置状态码? ?)

1.2常见应用

1.向浏览器输出消息

?2.下载文件

? ? 1.获取下载文件的路径

? ??

String realPatn = this.getServletContext().getRealPath("/1.png");  //获得绝对地址    
     //getContextpath()获得上下文地址        	? ?getResourcepaths(String s)获得资源地址

? ? 2.下载的文件名是啥?

realPath.substring()  //截取字符串

//找到最后一个\后面的一定是文件名(精妙之处) +1代表从\后面第一个字符开始
String fileName = realPath.substring(realPath.lastIndexOf("\\")+1);  

? ? 3.设置想办法让浏览器能够支持(Content-Disposition)下载我们需要的东西,中文文件名? URLEncoder.encode编码,否则有可能乱码

response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName,"UTF-8") );

? ? 4.获取下载文件的输入流

FileInputStream in = new FileInputStream(realPath);

? ? 5.创建缓冲区

int len = 0;
byte[] buffer = new byte[1024];

? ? 6.获取OutputStream对象

 ServletOutputStream out = response.getOutputStream();

? ? 7.将FileOutputStream流写入到buffer缓冲区

while((len = in.rad(buffer))>0){
    out.write(buffer,0,len);   //从第0个写道第len个
}
in.close();
out.close();

? ? 8.使用OutputStream将缓冲区中的数据输出到客户端!

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-11-23 12:43:57  更:2021-11-23 12:44:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 7:27:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码