response

初识WEB:输入URL之后的故事

时光毁灭记忆、已成空白 提交于 2020-03-17 19:46:35
初识WEB:输入URL之后的故事 1. 概述 2. HTTP请求过程 3. 相关性能检测及优化手段 4. 浏览器的呈现过程 5. 浏览器的呈现引擎 6. 引用及延伸阅读 概述 为什么输入 www.cnblogs.com 之后敲一个回车,浏览器就会显示我们所看到的内容?这家伙在背后到底偷偷的干了哪些事情?今天我们就来挖掘一下这背后的故事。 HTTP请求过程 为直观明了,先上一张图: 画完之后,才发现原来我的字写的这么难看,别喷我,小伙伴们! 下面是详细的步骤以及说明: 输入URL,敲回车。 针对当前URL检查是否存在本地缓存, 如果存在,则会加载本地缓存进行呈现。如图,经过 (1)-> (2) ->(9) ->(10)。 ( 感谢“我是你的猪”的纠错 :) ) 根据URL找到对应的IP地址。这一步通常被称为DNS轮询,这里面是有缓存机制的。缓存的顺序依次为:浏览器缓存->操作系统缓存->路由器缓存->DNS提供商缓存->DNS提供商轮询。 建立TCP连接到上一步找到的机器 用上一步建立的连接发送http request 等待并接收http response 关闭TCP连接,视情况而定,http1.1已经支持keep-alive。那么这个TCP请求是可以被后面的request利用的,这样就可以减少不断建立连接而造成的损失。 检查状态码,如果response的状态码出现3XX(跳转)

初识WEB:输入URL之后的故事

泪湿孤枕 提交于 2020-03-17 19:45:51
1. 概述 2. HTTP请求过程 3. 相关性能检测及优化手段 4. 浏览器的呈现过程 5. 浏览器的呈现引擎 6. 引用及延伸阅读 概述   为什么输入 www.cnblogs.com 之后敲一个回车,浏览器就会显示我们所看到的内容?这家伙在背后到底偷偷的干了哪些事情?今天我们就来挖掘一下这背后的故事。 HTTP请求过程   为直观明了,先上一张图:   画完之后,才发现原来我的字写的这么难看,别喷我,小伙伴们!   下面是详细的步骤以及说明: 输入URL,敲回车。 针对当前URL检查是否存在本地缓存, 如果存在,则会加载本地缓存进行呈现。如图,经过 (1)-> (2) ->(9) ->(10)。 ( 感谢“我是你的猪”的纠错 :) ) 根据URL找到对应的IP地址。 这一步通常被称为DNS轮询,这里面是有缓存机制的。缓存的顺序依次为:浏览器缓存->操作系统缓存->路由器缓存->DNS提供商缓存->DNS提供商轮询。 建立TCP连接到上一步找到的机器 用上一步建立的连接发送http request 等待并接收http response 关闭TCP连接,视情况而定,http1.1已经支持keep-alive。那么这个TCP请求是可以被后面的request利用的,这样就可以减少不断建立连接而造成的损失。 检查状态码,如果response的状态码出现3XX(跳转),未授权(401)

python实现requests重试机制

匆匆过客 提交于 2020-03-17 17:57:33
某厂面试归来,发现自己落伍了!>>> 一句话解决方案 import requests from requests.adapters import HTTPAdapter s = requests.Session() s.mount('http://', HTTPAdapter(max_retries=3)) s.mount('https://', HTTPAdapter(max_retries=3)) s.get('http://example.com', timeout=5) 另外一种方式,深度定制, 但是我尝试了在python2.7的版本下不可以, 因为max_retries传入的参数是整型的, 如果传入Retry对象的话, 会报错:total -= 1 TypeError: unsupported operand type(s) for -=: 'Retry' and 'int' def retry_test(): s = requests.Session() retries = Retry(total=5, backoff_factor=6, status_forcelist=[500, 502, 503, 504]) s.mount('http://', HTTPAdapter(max_retries=retries)) resp = s.get('http:/

批量/所有 导出操作

不羁岁月 提交于 2020-03-17 15:25:44
Excel工具类 以仓位明细为例: package com.wintech.wdtmom.tool; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.io.OutputStream; import java.net.URLEncoder; import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Component; @Component(“PositionExcelDownload”) public final class PositionExcelDownload { // 下载方法 public Boolean download(HttpServletResponse response, String fileName, String path) { File file = new File(path); // 1、构建流的对象 InputStream is = null; OutputStream out = null; // 2、设置响应头 // 2、设置响应头 try { response.setHeader(

JavaWeb 之 HttpServletResponse

这一生的挚爱 提交于 2020-03-17 08:27:11
1.1: response, resquest 对象 Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象、和代表响应的response对象。 request和response对象即然代表请求和响应,那我们要获取客户机提交过来的数据,只需要找request对象就行了。 要向客户机输出数据, 只需要找response对象就行了。 HttpServletResponse对象服务器的响应。这个对象中封装了向客户端发送数据、发送响应头,发送响应状态码的方法。 1.2 : 向客户端输出中文数据 有 两种方式: getOutputStream 和 get Writer 方法一: 使用getOutputStream()获得一个Servlet字节流输出数据 实验:getOutputStream().write("中国".getBytes("utf-8"));出现乱码 原因: getBytes()默认为GB2312,这里指定utf-8,而浏览器是以默认的GB2312打开,所以会出现乱码问题 解决方法: 必须指定浏览器以什么码表解码 1. response.setHeader("content-type", "text/html;charset=utf-8"); //设置请求消息头为utf-8,让浏览器以utf-编码打开 2. <meta http

SpringMVC的流程

放肆的年华 提交于 2020-03-17 06:56:46
起点:tomcat调用FrameworkServlet的service(ServletRequest req, ServletResponse res)方法: 1)FrameworkServlet的service(ServletRequest req, ServletResponse res) 方法转到2) 2)HttpServlet的service(ServletRequest req, ServletResponse res) 方法转到3) 3)FrameworkServlet的doGet(HttpServletRequest request, HttpServletResponse response) 方法转到4) 4)FrameworkServlet的processRequest(HttpServletRequest request, HttpServletResponse response) 方法转到5) 5)DispatcherServlet的doService(HttpServletRequest request, HttpServletResponse response) 方法转到6) 6) DispatcherServlet的doDispatch(HttpServletRequest request, HttpServletResponse response) /

javaweb学习总结(七)——HttpServletResponse对象(一)(转)

吃可爱长大的小学妹 提交于 2020-03-17 05:57:01
javaweb学习总结(七)——HttpServletResponse对象(一)(转) (每天都会更新至少一篇以上,有兴趣的可以关注)转载自 孤傲苍狼 Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象、和代表响应的response对象。 request和response对象即然代表请求和响应,那我们要获取客户机提交过来的数据,只需要找request对象就行了。要向客户机输出数据,只需要找response对象就行了。 一、HttpServletResponse对象介绍      HttpServletResponse对象代表服务器的响应。这个对象中封装了向客户端发送数据、发送响应头,发送响应状态码的方法。查看HttpServletResponse的API,可以看到这些相关的方法。 1.1、负责向客户端(浏览器)发送数据的相关方法    1.2、负责向客户端(浏览器)发送响应头的相关方法       1.3、负责向客户端(浏览器)发送响应状态码的相关方法    1.4、响应状态码的常量   HttpServletResponse定义了很多状态码的常量(具体可以查看Servlet的API),当需要向客户端发送响应状态码时,可以使用这些常量,避免了直接写数字,常见的状态码对应的常量:   状态码404对应的常量     

HttpServletResponse对象介绍

可紊 提交于 2020-03-17 05:31:36
一、HttpServletResponse对象介绍      HttpServletResponse对象代表服务器的响应。这个对象中封装了向客户端发送数据、发送响应头,发送响应状态码的方法。查看HttpServletResponse的API,可以看到这些相关的方法。 1.1、负责向客户端(浏览器)发送数据的相关方法    1.2、负责向客户端(浏览器)发送响应头的相关方法       1.3、负责向客户端(浏览器)发送响应状态码的相关方法    1.4、响应状态码的常量   HttpServletResponse定义了很多状态码的常量(具体可以查看Servlet的API),当需要向客户端发送响应状态码时,可以使用这些常量,避免了直接写数字,常见的状态码对应的常量:   状态码404对应的常量      状态码200对应的常量      状态码500对应的常量    二、HttpServletResponse对象常见应用 2.1、使用OutputStream流向客户端浏览器输出中文数据 使用OutputStream流输出中文注意问题:   在服务器端,数据是以哪个码表输出的,那么就要控制客户端浏览器以相应的码表打开,比如:outputStream.write("中国".getBytes("UTF-8"));使用OutputStream流向客户端浏览器输出中文,以UTF

JavaWeb---总结(七)HttpServletResponse对象(一)

给你一囗甜甜゛ 提交于 2020-03-17 05:30:04
Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象、和代表响应的response对象。 request和response对象即然代表请求和响应,那我们要获取客户机提交过来的数据,只需要找request对象就行了。要向客户机输出数据,只需要找response对象就行了。 一、HttpServletResponse对象介绍      HttpServletResponse对象代表服务器的响应。这个对象中封装了向客户端发送数据、发送响应头,发送响应状态码的方法。查看HttpServletResponse的API,可以看到这些相关的方法。 1.1、负责向客户端(浏览器)发送数据的相关方法    1.2、负责向客户端(浏览器)发送响应头的相关方法       1.3、负责向客户端(浏览器)发送响应状态码的相关方法    1.4、响应状态码的常量   HttpServletResponse定义了很多状态码的常量(具体可以查看Servlet的API),当需要向客户端发送响应状态码时,可以使用这些常量,避免了直接写数字,常见的状态码对应的常量:   状态码404对应的常量      状态码200对应的常量      状态码500对应的常量    二、HttpServletResponse对象常见应用 2.1

Java Web学习总结(4)——HttpServletResponse对象入门

假装没事ソ 提交于 2020-03-17 04:54:38
Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象、和代表响应的response对象。 request和response对象即然代表请求和响应,那我们要获取客户机提交过来的数据,只需要找request对象就行了。要向客户机输出数据,只需要找response对象就行了。 一、HttpServletResponse对象介绍      HttpServletResponse对象代表服务器的响应。这个对象中封装了向客户端发送数据、发送响应头,发送响应状态码的方法。查看HttpServletResponse的API,可以看到这些相关的方法。 1.1、负责向客户端(浏览器)发送数据的相关方法    1.2、负责向客户端(浏览器)发送响应头的相关方法       1.3、负责向客户端(浏览器)发送响应状态码的相关方法    1.4、响应状态码的常量   HttpServletResponse定义了很多状态码的常量(具体可以查看Servlet的API),当需要向客户端发送响应状态码时,可以使用这些常量,避免了直接写数字,常见的状态码对应的常量:   状态码404对应的常量      状态码200对应的常量      状态码500对应的常量    二、HttpServletResponse对象常见应用 2.1