一、http协议
- http协议
它其实就是约定了客户端和服务器端在执行网络交互动作的时候一种规则。 执行http请求的时候,遵守的一种规范
http://www.baidu.com /
- http协议版本
使用最广泛的是1.1的版本。 它是一种请求 - 响应 模型的协议。
1.0
请求 - 响应完毕后,连接关闭 , 如果还想接着请求,必须得重新连接
1.1
请求 - 响应完毕后,连接未关闭 ,还可以继续发起请求
Http请求背后细节
http协议传输的数据包含三个部分 , 信息行 、 信息头 、 信息体
* 请求
请求行
请求头
请求体
* 响应
响应行
响应头
响应体
GET请求
提交的数据:
请求行 :
GET /LoginDemo/login?username=admin&password=123456 HTTP/1.1
表示使用Get请求 , 表示请求什么路径地址 ,表示使用什么版本的协议
请求头
Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, */*
Referer: http://localhost:8080/LoginDemo/login.html
Accept-Language: zh-CN
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)
Accept-Encoding: gzip, deflate
Host: localhost:8080
Connection: Keep-Alive
Accept : 声明客户端可以接收什么类型的数据
Referer : 表示请求从哪里过来的
Accept-Language : 表示客户端支持的语言
User-Agent : 表示客户端的信息
Accept-Encoding : 表示客户端支持的压缩格式
Host : 表示主机地址
Connection : 表示连接状态。
请求体:
GET方式的请求,没有请求体。 因为数据都是拼接到了地址上去了。
获取到的数据:
响应行
HTTP/1.1 200 OK
表示服务器也支持1.1的版本协议 , 对这次请求处理的状态码是200 ,OK
响应头
Server: Apache-Coyote/1.1 : 服务器版本
Content-Length: 75 : 返回的数据长度
Date: Sun, 21 May 2017 07:09:28 GMT : 响应时间
响应体
login failed ~ please use username : itheima , password : 10086 try again~
POST请求
提交的数据
请求行
POST /LoginDemo/login HTTP/1.1
意思和get请求的意思一样,只不过这里的地址再也不跟数据了。
请求头
Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, */*
Referer: http://localhost:8080/LoginDemo/login.html
Accept-Language: zh-CN
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
Host: localhost:8080
Content-Length: 29
Connection: Keep-Alive
Cache-Control: no-cache
Content-Type : 其实就是说明提交上去的数据是什么类型数据 。 是一个经过url编码的form表单数据
Content-Length : 提交的数据长度
Cache-Control : 表示再次请求的时候,是否读缓存。
请求体
username=itheima&password=123
是以流的形式写给服务器的。
响应数据
响应行
响应头
响应体
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Length: 75
Date: Sun, 21 May 2017 07:32:12 GMT
login failed ~ please use username : itheima , password : 10086 try again~
GET 和 POST方式的区别
-
GET
它的地址会带上数据, http://www.HiWeb.com?name=aa&age=18
能够带的数据有限制。
由于数据会拼接到地址栏上面,所以不安全
-
POST
它的地址不带数据,就是很干净的地址而已。
带的数据没有限制。 (因为数据是以流的方式写过去。)
由于数据没有拼接,所以数据比较安全
额外多两个头字段 Content-Type Content-Length.
软件架构
-
C/S架构
client【客户端】 / server【服务器端】
如: QQ 、微信、 迅雷 、 LOL
必须得安装一个客户端,才能和服务器对接。
优点:
1. 视觉比较炫酷 、 用户体验好
2. 一部分资源|数据放在了本地 、减轻服务器压力
缺点:
1. 占用本地硬盘空间
2. 更新比较困难、 服务器只要一更新,客户端也得跟着更新
3. 平台、系统环境的限制
-
B/S架构
browser【浏览器】 / server【服务器端】
如: 网页游戏 、 网页QQ 、
通过浏览器来和服务器对接
优点:
1. 不用安装 、只要有浏览器就行。
2. 一般也不用做更新。
3. 不受平台限制 、 不占用本地的空间。
缺点:
1. 用户体验不好。 比较卡。
2. 服务器压力比较大、因为所有的资源都放在服务器。
Web资源
就是网络上的任意资源都可称之为web资源 、 就是服务器里面所有东西,都可以看做是web资源。
- 静态资源
不管什么时候来,什么情况下见到的数据永远不变。 图片、 html网页、 音乐、 ....
- 动态资源
根据不同的请求情况 、不同的时机、 显示出来的数据内容不一样、 那么这些产生变化的数据就称之为动态资源。 jsp / servlet
常见的服务器软件:
Tomcat : Apache 提供的一个免费小型服务器软件 , 支持JSP/Servlet 规范
WebLogic : Bea公司提供的收费大型服务器软件 , 支持EE的所有规范
WebSphere : IBM公司收费大型服务器软件 , 支持EE的所有规范
JBoss : 一个基于J2EE开放源码的服务器软件 核心不支持 JSP/Servlet ,一般与tomcat 或者 jetty配合使用
安装Tomcat
1. 解压
2. 进入tomcat /bin , 点击startup.bat
3. 如果见到一闪而过的情形, 那么打开dos窗口,然后拖拽startup.bat进去后,回车,即有提示,一般都是没有配置环境变量 JAVA_HOME CATALINA_HOME : 其实就是tomcat的根目录路径。
4. 配置好之后,在执行即可
5. 打开浏览器,然后输入地址 http://localhost:8080,页面成功显示即为安装成功
Tomcat目录解释
backup : 备份
##bin : 启动和停止的指令
##conf : 配置
server.xml web.xml catalina
lib : tomcat运行必须的jar
logs : tomcat运行的日志
temp : 临时文件
##webapps : 项目发布的地方,一般配合eclipse使用 。
work : 这里是存放jsp 翻译成的java文件 --- class文件
##wtpwebapps : 这是eclipse工具默认发布项目存放的位置。 与上面的webapps 意思一样。
新建Web项目
1. 修改工作空间编码 为 UTF-8
2. 配置tomcat环境 。 以后只要在这里运行项目,那么项目就会自己发布到tomcat里面。
3. 新建动态web工程
4. 在webContent下面新建一个html网页
5. 右键工程 --- run on server
6. 在浏览器里面访问该网页 ,路径如下:
http://localhost:8080/项目名/资源名
http://localhost:8080/HiWeb/hi.html
- run as Server 背后做了什么工作?
对我们的项目进行编译处理(java) ,然后拷贝项目到 tomcat根目录\wtpwebapps 目录下。
localhost : 本机
8080 : 端口
localhost:8080 : 找我们这台电脑上端口号是8080 的那一个软件 tomcat
http://localhost:8080/HiWeb/hi.html : 找到tomcat 位置后,进入那个默认的目录 wtpwebapps 里面有一个文件夹 HiWeb 文件夹里面有一个文件 hihtml
得出一个结论:
一个项目其实就是tomcat\wtpwebapps | webapps 下面的一个文件夹。
http://localhost:8080/文件夹名字/资源名
发布Web项目
- 问题 : 如何发布一个项目(文件夹)到tomcat去呢 ?
1. 拷贝这个文件夹到tomcat\webapps
访问路径 : localhost:8080/文件夹名称/文件名称 即可
2. 设置虚拟路径
a . 在tomcat /conf/server.xml Host标签里面,写上以下内容
<!--
http://localhost:8080/HiWeb02/icon_13.jpg
docBase : 项目路径
path : 就是这个项目映射出来的路径,这个路径并不存在,所以称之为虚拟路径 -->
<Context docBase="D:\img08" path="/HiWeb02"/>
b . 在 tomcat / conf/catalina/localhost设置
1. 在该目录下,新建一个文件heima13.xml,这个文件必须是xml文件。 文件的名称就是我么你的虚拟路径, 当然可以随便写。
2. xml的文件内容如下:
<?xml version="1.0" ?>
<Context docBase="E:\html\"/>
3. 那么文件的名称就是设置的虚拟路径 ,访问的格式如下:
http://localhost:8080/文件名/资源名称
http://localhost:8080/heima13/aa.txt