章节5,更多response的应用(重要)

write 是写,就是往外部写数据,因此是输出流。
read是程序读数据,故是输入流。
例如:response.getWriter.write("123") 表示程序向响应对象里面添加了字符123

关于response我们主要学习**如何设置响应头,响应行,响应体 **

设置响应头(了解)

章节5,更多response的应用(重要)_第1张图片

重定向

章节5,更多response的应用(重要)_第2张图片
特点:两次访问服务器
设置重定向
通过response来设置
章节5,更多response的应用(重要)_第3张图片
location 表示定向的意思,后面写重新定向的地址
状态码是302

设置响应体

就是给浏览器的信息,所以是用输出流write
第一种,用write
往浏览器写字符response.getWrite.write("写的内容") ,结果会出现在浏览器页面
第二种,用outputStream , 用来输出音频,视频等文件

response解决乱码情况
直接设置响应体的编码为 UFT-8 即可(但是发送给浏览器后,浏览器自身也有解析的编码)
在这里插入图片描述
在这里插入图片描述

如何写入一些文件

通过二进制流,字节码的方式,不是read(字符流) 而是 inputstream(字节流)
FileinputStream 输入流,就是把磁盘里的文件放到程序里面,就像插了一个管道,往里面输入信息

即写程序时 需要加载一个文件时,用输入流,用绝对路径
章节5,更多response的应用(重要)_第4张图片
信息的输入就像在管道中,最后需要关闭管道, 利用read方法来读取字节码。
章节5,更多response的应用(重要)_第5张图片
如图,一次读取了一个字符,A的字节码为65.

读取多个字符

while(len = in.read(buffer)!=-1)
{
	system.out.print("len");
	system.out.print("arrays.toString(buffer)");
}

章节5,更多response的应用(重要)_第6张图片
byte[] 表示 字节类型的数组
章节5,更多response的应用(重要)_第7张图片
章节5,更多response的应用(重要)_第8张图片


往浏览器写入一张图片(输出流)
用outPutStream
1,首先我们需要在程序的web文件夹中放入一张图片,之后才能将他输出到浏览器中,显示出来。
2.建立一个servlet,在service里面先利用getservletcontext获取图片的绝对路径

注意:输出流对应的是write方法,(将程序的内容写到浏览器

   
		String path = this.getServletContext().getRealPath("F35.jpg");
	       // System.out.println(path);
		
		   //先用输入流向程序加载图片
		
	        FileInputStream  in =new FileInputStream(path);//这里的in是一个流文件,代表一个图片 
	        
	        //获取一个输出流
	        ServletOutputStream out = response.getOutputStream();
	        
	        byte[] buffer =new byte[1024];
	        int len=0;
	        len = in.read(buffer);//把读的内容写到buffer里面
	        while((len = in.read(buffer)) != -1) {
	        	System.out.println(len);
	        	System.out.println(Arrays.toString(buffer));
	        	out.write(buffer,0,len); //这里每次的buffer都不一样
	        	
	        }
			
		
				
	}

文件下载

方法一:用a标签下载
href里面写文件的地址
前两个是视频和文件,通过a标签无法下载,浏览器会直接打开。
第三个可以下载成功。
章节5,更多response的应用(重要)_第9张图片
方法二:通过servlet进行下载
章节5,更多response的应用(重要)_第10张图片
? 表示参数的意思,连起来表示参数filename的值为a.mp4,有多个参数的话用&连接起来
这里通过a标签来请求servlet,在请求的同时带上参数! 作者太机智了

章节5,更多response的应用(重要)_第11张图片
接受参数: 章节5,更多response的应用(重要)_第12张图片

注意:写的时候需要告诉浏览器文件是什么类型

这里需要获取到文件的类型,然后在响应中设置下,告诉浏览器是什么类
,其次,还要告诉浏览器以附件的形式下载,语法固定的,如下图
在这里插入图片描述

章节5,更多response的应用(重要)_第13张图片

你可能感兴趣的:(javaweb)