用servlet做request请求回应的数据流回应过程:
1.客户端浏览器打包要发送的数据data对象request,
数据包对象request分两部分:
1.1.header
请求方法request: GET / HTTP/1.1
接受什么样的内容格式:Accept text/html, application/xhtml+xml, */*
接受什么样的coding格式:gzip, deflate
接受什么样的内容语言:Accept-Language zh-CN
接受底层tcp连接状态:Connection Keep-Alive ------客户端和服务器端连接一次后,第二次就会使用第一次连接
禁止被追踪:DNT 1
客户端主机信息:Host localhost:9999
客户端浏览器信息:User-Agent Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; Touch; rv:11.0) like Gecko
2.浏览器底层分析域名找到接受ip
2.1分析hosts文件域名对应的ip地址
2.2如果2.1没有找到域名对应的ip地址,就交给电信服务提供商DNS域名解析服务器解析
3.物理数据层,ip网络层,转发数据包,发送到服务器组装数据data对象request
4.服务器tomcat解析数据对象request
4.1.tomcat根据server.xml已经配置好的<server>查找<service>服务
4.2.<service>服务根据<Connector>端口port匹配对应哪个协议类处理,如80端口发送接受的数据属于protocol="HTTP/1.1",转发另外端口处理
redirectPort="8443",最后协议处理类protocol="org.apache.coyote.http11.Http11NioProtocol"
5.tomcat用对应的协议类分析request对象后,找对应servlet类处理(这里服务器端具体的业务逻辑),生成回应response对象,发送回浏览器
6.浏览器接受到response对象,解析,显示。
综述,
数据流发送是一条线,线的每个过程都有相应的作用,数据不断的被包装,发送,分拆,解析。