公司网站招聘板块怎么做,开发公司岗位职责,销售外包合同,wordpress自动推送工具代码文章目录 HTTP响应详解使用抓包查看响应报文协议内容 Response对象Response继承体系Response设置响应数据功能介绍Response请求重定向概述实现方式重定向特点 请求重定向和请求转发比较路径问题Response响应字符数据步骤实现 Response响应字节数据步骤实现 HTTP响应详解 使用抓… 文章目录 HTTP响应详解使用抓包查看响应报文协议内容 Response对象Response继承体系Response设置响应数据功能介绍Response请求重定向概述实现方式重定向特点 请求重定向和请求转发比较路径问题Response响应字符数据步骤实现 Response响应字节数据步骤实现 HTTP响应详解 使用抓包查看响应报文协议内容
由于浏览器的原因浏览器会把请求行和响应行信息放在一起
响应行
状态码
状态码状态码描述说明200OK请求已成功请求所希望的响应头或数据体将随此响应返回。出现此状态码是表示正常状态。302Move temporarily重定向请求的资源临时从不同的 地址响应请求。304Not Modified从浏览器缓存中读取数据不从服务器重新获取数据。例如用户第一次从浏览器访问服务器端图片资源以后在访问该图片资源的时候就不会再从服务器上加载而直接到浏览器缓存中加载这样效率更高。404Not Found请求资源不存在。通常是用户路径编写错误也可能是服务器资源已删除。403Forbidden服务器已经理解请求但是拒绝执行它405Method Not Allowed请求行中指定的请求方法不能被用于请求相应的资源500Internal Server Error服务器内部错误。通常程序抛异常
响应头
响应头也是用的键值对key:value服务器基于响应头通知浏览器的行为。常见的响应头
响应头Key响应头valuelocation指定响应的路径需要与状态码302配合使用完成重定向content-Type响应正文的类型MIME类型属于服务器里面的一种类型例如文件在window系统有自己的类型.txt .doc .jpg。文件在服务器中也有自己的类型同时还可以解决乱码问题。例如text/html;charsetUTF-8content-disposition通过浏览器以附件形式解析正文例如attachment;filenamexx.ziprefresh页面刷新例如3;urlwww.itcast.cn //三秒刷新页面到www.itcast.cn
常见的MIME类型就是文件在tomcat服务器中的文件类型 windows tomcat(MIME类型) 超文本标记语言文本 .html text/html *** xml文档 .xml text/xml XHTML文档 .xhtml application/xhtmlxml 普通文本 .txt text/plain *** PDF文档 .pdf application/pdf Microsoft Word文件 .word application/msword PNG图像 .png image/png ** GIF图形 .gif image/gif JPEG图形 .jpeg,.jpg image/jpeg ** … 响应体
响应体就是服务器发送给浏览器的数据。
Response对象 Response继承体系
tomcat定义实现类ResponseFacade门面类对象。底层创建门面类对象ServletResponse response new ResponseFacade();然后将响应对象传递给service doGet doPost方法参数。在方法体中就可以使用响应对象
Response设置响应数据功能介绍
http响应数据总共分为三部分内容分别是响应行响应头响应体
响应行
设置响应状态码 void setStatus(int sc); 响应头
设置响应头键值对 void setHeader(String name,String value); 响应头name的值 location 指定响应的路径 content-type:告诉浏览器文件格式告诉浏览器不要解析html文件(text/plain)解决中文乱码问题 ************ refresh 定时刷新 content-disposition 以附件形式展示图片等资源 响应体
对于响应体是通过字符、字节输出流的方式往浏览器写获取字节输出流 ServletOutputStream getOutputStream(); 获取字符输出流 PrintWriter getWriter(); Response请求重定向 概述
重定向一种资源跳转方式(服务器外部的)(1)浏览器发送请求给服务器服务器中对应的资源A接收到请求(2)资源A现在无法处理该请求就会给浏览器响应一个302的状态码location的一个访问资源B的路径(3)浏览器接收到响应状态码为302就会重新发送请求到location对应的访问地址去访问资源B(4)资源B接收到请求后进行处理并最终给浏览器响应结果这整个过程就叫重定向
实现方式 resp.setStatus(302);设置响应状态码是302 resp.setHeader(“location”,“资源B的访问路径”); 或者 resp.sendRedirect(“资源B的访问路径”); 重定向特点
浏览器地址栏路径发生变化可以重定向到任何位置的资源(服务器内部外部均可)俩次请求不能在多个资源使用request共享数据
请求重定向和请求转发比较
如果需要在资源之间传递共享request数据使用请求转发否则就用重定向
路径问题
规则
浏览器使用:需要加虚拟目录(项目访问路径)服务端使用:不需要加虚拟目录
对于转发来说因为是在服务端进行的所以不需要加虚拟目录对于重定向来说路径最终是由浏览器来发送请求就需要添加虚拟目录。
Response响应字符数据 步骤
通过Response对象获取字符输入流PrintWriter writer resp.getWriter(); 由于获取打印字符流是根据response对象获取的所以向浏览器打印输出通过字符输出流写数据: writer.write(“aaa”);
实现
返回一个简单的字符串aaa PrintWriter writer response.getWriter(); writer.write(“aaa”); 返回一串html字符串并且能被浏览器解析 PrintWriter writer response.getWriter(); //content-type告诉浏览器返回的数据类型是HTML类型数据这样浏览器才会解析HTML标签 response.setHeader(“content-type”,“text/html”); writer.write(“ aaa”); 返回一个中文的字符串需要注意设置响应数据的编码为utf-8 //设置响应的数据格式及数据的编码 response.setContentType(“text/html;charsetutf-8”); writer.write(“你好”); 注要先设置响应头然后再用response获取输入流
Response响应字节数据 步骤
通过Response对象获取字节输出流ServletOutputStream outputStream resp.getOutputStream();通过字节输出流写数据: outputStream.write(字节数据);
实现
返回一个图片给浏览器
/*** 响应字节数据设置字节数据的响应体*/
WebServlet(/resp4)
public class ResponseDemo4 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//1. 读取文件FileInputStream fis new FileInputStream(D:\\abc\\柳岩.jpg);//2. 获取response字节输出流ServletOutputStream os response.getOutputStream();//3. 完成流的copybyte[] buff new byte[1024];int len 0;while ((len fis.read(buff))! -1){os.write(buff,0,len);}fis.close();}Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request, response);}
}也可以用工具
dependencygroupIdcommons-io/groupIdartifactIdcommons-io/artifactIdversion2.6/version
/dependency