Http请求
在浏览器中,我们可以通过浏览器自带工具,查看一个完整的网络请求,并审阅本次网络请求发送的请求数据
从上述的Http请求中截取一部分:
GET / HTTP/1.1 --get方式 协议1.1
Host: www.baidu.com --主机名
Connection: keep-alive --状态
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 --客户机环境
Accept-Encoding: gzip, deflate, sdch, br --压缩编码
Accept-Language: zh-CN,zh;q=0.8 --语言环境
Cookie: ***
http请求详解
<!--
Http请求组成
一个请求行、若干请求头、实体内容
请求行: 描述客户端的请求方式,使用的协议方式,请求的资源名称
|-- GET/1.html HTTP/1.1 使用GET请求方式, 请求资源为1.html 使用协议为HTTP1.1
请求头: 描述客户请求信息、客户环境信息等
|--Host: www.baidu.com 请求主机名
|--Connection: keep-alive 请求后连接状态
实体内容:包裹携带内容
请求行:
|-- GET 通过请求URI得到资源
|-- POST 用于添加新的内容
|-- PUT 用于修改某个内容
|-- DELETE 删除某个内容
|-- OPTIONS 询问可以执行哪些方法
|-- HEAD 类似于GET, 但是不返回body信息,用于检查对象是否存在,以及得到对象的元数据
|-- TRACE 用于远程诊断服务器
....
GET与POST区别:
1)GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连。
如www.delphifan.com?id=123&psd=123,且最大支持1K
2)POST方法是把提交的数据放在HTTP包的Body中。
3)GET使用Request.QueryString来取得值,POST通过Request.Form来获取值。
请求头:
|--Accept:*/*, 客户端接受的数据类型
|--Host:www.delphifan.com:8080 访问的主机名和端口号
|--Referer: 上一级资源访问地址 (常用于防盗链)
|--User-Agent:客户端的软件环境
|--Cookie:缓存数据相关
|--Accept-Charset、Accept-Encoding、Accept-Language: 字符集、压缩格式、语言环境
|--Connection、Date ...
-->
http响应
摘取一些http响应:
HTTP/1.1 200 OK --协议 状态码
Server: bfe/1.0.8.18 --服务器信息
Date: Mon, 07 Nov 2016 14:40:06 GMT --时间
Content-Type: text/html;charset=utf-8 --响应数据格式
Transfer-Encoding: chunked --传送编码
Connection: keep-alive
Cache-Control: private
Expires: Mon, 07 Nov 2016 14:40:06 GMT --缓存时间
Content-Encoding: gzip
X-UA-Compatible: IE=Edge,chrome=1
Strict-Transport-Security: max-age=604800
BDPAGETYPE: 2
BDQID: 0x945783210003bf0f
BDUSERID: 777600426
Set-Cookie: ***
Http响应详解
<!--
Http响应组成
一个状态行、若干响应头、实体内容
状态行: 描述服务器响应使用的协议方式,响应码和响应状态
|-- HTTP/1.1 200 OK 使用协议为HTTP1.1 响应码为200 响应状态OK
响应头: 描述服务器信息、环境信息等
|--Host: www.baidu.com 请求主机名
|--Connection: keep-alive 请求后连接状态
实体内容:包裹携带内容
响应码:参见RFC 2616 规范定义
|
|
|--1xx: 代表请求已被接受,这类响应是临时响应,需要进一步请求。
由于HTTP/1.0协议中没有定义任何1xx状态码,一般情况下服务器禁止向此类客户端发送1xx响应。
|--2xx: 代表请求已成功被服务器接收、理解、并接受。
200成功、202请求已接受(异步操作)、206部分请求已处理(断点下载)
|-- 3xx: 需要客户端采取进一步的操作才能完成请求。通常用来重定向,后续的请求地址(重定向目标)在本次响应的 Location 域中指明。
302给定地址重定向、304,307拿缓存
|-- 4xx: 客户端看起来可能发生了错误
403无权限 404地址错误
|-- 5xx: 服务器错误,服务器在处理请求的过程中有错误或者异常状态发生
500服务器异常
响应头:
|--Location:*/*, 用于重定向一个新的位置,包含新的URL地址。表示客户应当到哪里去提取文档。配置302使用
|--Server: 指明HTTP服务器用来处理请求的软件信息
|--Refresh: 表示浏览器应该在多少时间之后刷新文档
|--Transfer-Encoding:数据传送格式
|--ETag:缓存数据相关,和If-None-Match 配合使用
|--Expires:数据的缓存时间 -1或0表示不缓存
|--Cache-Control、Progma:控制缓存
|--Content-Type、Content-Encoding、Content-Language: 数据类型、压缩格式、语言环境
|--Content-Disposition:设置下载方式打开
|--Set-Cookie:发送cookie至客户机
-->
使用Range头(断点下载)
<!--
使用Range头完成断点下载功能:
请求头格式: Range:bytes=1000-2000 (范围为1000-2000字节)
Range:bytes=1000- (返回1000以后的字节)
Range:bytes=1000 (返回最后1000字节)
响应头格式: Accept-Range: 服务器是否支持Range,支持返回bytes,不支持返回none
Content-Range: 指定了返回web资源字节范围
1000-3000/5000 (返回1000-3000字节的数据,一共5000字节数据)
-->
使用Tomcat
1. 需要JAVA环境
2. bin目录下startup.bat启动服务器, 提示Server startup in
1361 ms代表启动成功(如果前面没有错误的话)
Tomcat文件结构
<!--
bin:---Tomcat一些可执行文件
|
|--------startup.bat启动服务器
|--------shutdown.bat关闭服务器
conf:---Tomcat服务器的配置文件
|
|---------server.xml 服务器网络相关配置
|-- <Connector port="8080" protocol="HTTP/1.1" /> --HTTP协议监听端口为8080
|-- <Host name="localhost" appBase="webapps"/> --默认监听localhost域名
|-- 可以在host下配置Context元素,配置对于应用功能
|--path元素映射访问路径
|--reloadable元素配置文件修改是否自动加载
|
|---------web.xml 服务器资源配置
|-- welcome-file-list下的welcome-file标签配置主界面
|-- servlet-mapping配置servlet映射
|-- 在web.xml下配置Context属性,可以同时配置全局应用
|---------tomcat-users.xml tomcat图形管理器的用户账号
|-- <user username="tomcat" password="tomcat" roles="tomcat"/> roles代表权限 roles="manager"管理员权限
lib:---Tomcat服务器运行需要的jar支持包
logs:---Tomcat服务器日志
temp:---Tomcat服务器缓存文件
webapps:---默认web应用布局文件夹
|--在此文件夹压人war文件,服务器会自动解压(使用jar -vcf war包名 类名)
-->
浏览器与服务器数据交互
<!--
1.对于用户输入网址
|--通过hosts文件直接定位ip地址
|--通过dns服务器get到ip地址
2.通过ip地址发送http请求
3.服务器相应请求
-->
Demo
需求:使用Tomcat服务器部署应用资源,浏览器输入
www.delphifan.com进入自定义网页(使用Host重定向)
解决方案
<!--
1.新建C:\fan
2.依据web应用的配置格式
即: 应用目录
|----静态文件(html.css等)
|----WEB-INF(文件夹名不可错)
|----lib文件夹(java类运行的jar包)
|----classes文件夹(java文件)
|----web.xml(web应用配置)
C:\fan
|---1.html(一段文字 hello Tomcat!)
|---WEB-INF
|---web.xml
3.配置Tomcat对特殊域名关联对于资源应用
在conf/server.xml文件中配置host属性
4.配置应用web.xml
5.修改Windows系统hosts文件完成重定向
目录 C:\Windows\System32\drivers\etc\hosts
添加配置 192.168.0.139 www.delphifan.com --IP地址为本机地址而变化
-->
<!-- web.xml配置文件-->
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<welcome-file-list>
<welcome-file>1.html</welcome-file>
</welcome-file-list>
</web-app>
<!-- conf/server.xml下添加host属性-->
<Host name="www.delphifan.com" appBase="c:/fan"> <!-- name即响应域名,path为映射路径,为空即默认路径。 appBase和docBase为文件根地址 -->
<Context path="" docBase="c:/fan"/>
</Host>
<!--此外因为Tomcat默认监听是的8080端口,而浏览器http默认是80端口,故修改Tomcat监听端口-->
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
Tomcat给定图形管理界面
<!-- conf/tomcat-users.xml 添加图形界面用户属性
登录完成后,在线操作即可-->
<user username="tomcat" password="tomcat" roles="tomcat,manager-gui"/>
Eclipse下构建Tomcat环境
<!--
bin:---Tomcat一些可执行文件
|
|--------startup.bat启动服务器
|--------shutdown.bat关闭服务器
conf:---Tomcat服务器的配置文件
|
|---------server.xml 服务器网络相关配置
| |-- <Connector port="8080" protocol="HTTP/1.1" /> --HTTP协议监听端口为8080
| |-- <Host name="localhost" appBase="webapps"/> --默认监听localhost域名
| |-- 可以在host下配置Context元素,配置对于应用功能
|--path元素映射访问路径
|--reloadable元素配置文件修改是否自动加载
|
|---------web.xml 服务器资源配置
| |-- welcome-file-list下的welcome-file标签配置主界面
| |-- servlet-mapping配置servlet映射
|-- 在web.xml下配置Context属性,可以同时配置全局应用
|---------tomcat-users.xml tomcat图形管理器的用户账号
| |-- <user username="tomcat" password="tomcat" roles="tomcat"/> roles代表权限 roles="manager"管理员权限
lib:---Tomcat服务器运行需要的jar支持包
logs:---Tomcat服务器日志
temp:---Tomcat服务器缓存文件
webapps:---默认web应用布局文件夹
|--在此文件夹压人war文件,服务器会自动解压(使用jar -vcf war包名 类名)
-->