Http 协议(请求 响应)& Tomcat 服务器

一、Http 协议
1、什么是 Http 协议
Http ,超文本传输协议(Hyper Text Transfer Protocal)是互联网上应用最为广泛的一种网络协议。所有的 WWW 文件都必须遵守这个标准。设计 Http 最初的目的是为了提供一种发布和接收 HTML 页面的方法。
2、Http 协议的组成
Http 协议由 Http 请求和 Http 响应组成,当在浏览器输入网址访问某个网站时,你的浏览器会将你的请求封装成一个 Http 请求发送给服务器站点,服务器接收到请求后会组织响应数据封装成一个 Http 响应返回给浏览器。即没有请求就没有响应。
3、Http 请求
请求协议
1、 请求首行;
2、请求头信息;
3、空行;
4、请求体。

浏览器发送给服务器的内容就这个格式的,如果不是这个格式服务器将无法解读!在HTTP协议中,请求有很多请求方法,其中最为常用的就是GET和POST。不同的请求方法之间的区别,后面会一点一点的介绍。

3.1 GET 请求:

       GET /hello/index.jsp HTTP/1.1: GET请求,请求服务器路径为/hello/index.jsp,协议为1.1
Host:localhost: 请求的主机名为localhost
User-Agent: Mozilla/5.0 ( WindowsNT 5.1 ; rv:5.0) Gecko/20100101 Firefox/5.0 与浏览器和OS相关的信息。有些网站会显示用户的系统版本和浏览器版本信息,这都是通过获取User-Agent头信息而来的
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8: 告诉服务器,当前客户端可以接收的文档类型,其实这里包含了*/*,就表示什么都可以接收;
Accept-Language: zh-cn,zh;q=0.5: 当前客户端支持的语言,可以在浏览器的工具à选项中找到语言相关信息;
Accept-Encoding: gzip, deflate: 支持的压缩格式。数据在网络上传递时,可能服务器会把数据压缩后再发送;
Accept-Charset: GB2312,utf-8;q=0.7,*;q=0.7: 客户端支持的编码;
Connection: keep-alive: 客户端支持的链接方式,保持一段时间链接,默认为3000ms
       Cookie: JSESSIONID=369766FDF6220F7803433C0B2DE36D98: 因为不是第一次访问这个地址,所以会在请求中把上一次服务器响应中发送 过来的Cookie在请求中一并发送去过;这个Cookie的名字为JSESSIONID,然后在讲会话是讲它!

3.2 POST 请求
< form   action = ""   method = "post" >
  关键字: < input   type = "text"   name = "keyword" />
    < input   type = "submit"   value = " 提交 " />
</ form >

POST /hello/index.jsp HTTP/1.1
Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, */*
Accept-Language: zh-cn,en-US;q=0.5
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
Host: localhost:8080
Content-Length: 13
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: JSESSIONID=E365D980343B9307023A1D271CC48E7D
keyword=hello

POST 请求是可以有体的,而GET请求不能有请求体。
Referer: http://localhost:8080/hello/index.jsp 请求来自哪个页面,例如你在百度上点击链接到了这里,那么 Referer:http://www.baidu.com ;如果你是在浏览器的地址栏中直接输入的地址,那么就没有 Referer 这个请求头了;
Content-Type: application/x-www-form-urlencoded: 表单的数据类型,说明会使用 url 格式编码数据; url 编码的数据都是以“ % ”为前缀,后面跟随两位的 16 进制,例如“传智”这两个字使用 UTF-8 url 编码用为“ %E4%BC%A0%E6%99%BA ”;
Content-Length:13: 请求体的长度,这里表示 13 个字节。
keyword=hello: 请求体内容! hello 是在表单中输入的数据, keyword 是表单字段的名字。
 
Referer请求头是比较有用的一个请求头,它可以用来做统计工作,也可以用来做防盗链。
统计工作 :公司网站在百度上做了广告,但不知道在百度上做广告对网站的访问量是否有影响,那么可以对每个请求中的Referer进行分析,如果Referer为百度的很多,那么说明用户都是通过百度找到公司网站的。
防盗链 :公司网站上有一个下载链接,而其他网站盗链了这个地址,例如在网站上的index.html页面中有一个链接,点击即可下载JDK7.0,但有某个人的微博中盗链了这个资源,它也有一个链接指向我们网站的JDK7.0,也就是说登录他的微博,点击链接就可以从网站上下载JDK7.0,这导致网站的广告没有看,但下载的却是网站的资源。这时可以使用Referer进行防盗链,在资源被下载之前,我们对Referer进行判断,如果请求来自本网站,那么允许下载,如果非本网站,先跳转到本网站看广告,然后再允许下载。

4、HTTP 响应

HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=UTF-8
Content-Length: 624
Date: Mon, 03 Nov 2014 06:37:28 GMT

响应体内容
(1) 响应首行 :其内容是”HTTP/1.1  200  OK”
l  HTTP/1.1 :表示协议版本
l  200 :表示响应状态码,200表示响应成功。
l  OK :表示响应成功,对响应状态码的解释。
(2) 响应头信息 :类似于请求消息中的请求头,其格式和请求头信息格式一样,即响应头:响应头值。
l  Server响应头:该响应头是服务器告诉浏览器,当前响应的服务类型和版本。
l  Content-Type响应头:服务器告诉浏览器响应内容是什么类型,以及采用的是什么字符编码。该响应头的值现在为:text/html;charset=utf-8。说明响应信息的类型是文本类型中的html,使用的字符编码是utf-8。
l  Content-Length响应头:服务器告诉浏览器,响应内容的长度,该响应内容的长度现在是624个字节。
l  Date响应头:表示是服务器是在什么时候响应回浏览器,注意这里的时间是按照美国时间来计算。
(3)空行响应头和响应体由空行连接。
(4)响应体该响应消息的响应体是一个html文档。浏览器可以直接识别这个html文件。而我们访问的是一个jsp文件,响应回去的是一个html文件。说明服务器将该jsp翻译成了一个html,然后再响应给浏览器。
响应状态码
在http响应协议中,我们通过HttpWatch抓包抓取到响应信息。其中响应首行中就包含一个状态码。状态码由三位数字组成,表示请求是否被理解或者被满足。HTTP响应状态码的第一个数字定义了响应的类别,后面两位没有具体分类,第一个数字有五种可能的取值,具体介绍如下所示:
l  1xx :表示请求已接收,需要继续处理。
l  2xx :表示请求已经成功被服务器接收、理解、并接受
l  3xx :为完成请求,客户端需要进一步细化请求
l  4xx :客户端的请求有错误
l  5xx :服务器端出现错误
下面具体看几个比较常见的状态码
状态码 说明
200 请求成功,浏览器会把响应回来的数据展示在浏览器端。
400 表示客户端出错,比如在浏览器端请求一个不存在的资源,这时候浏览器端就会出现 404 状态码。
405 客户端错误的一种,表示当前请求方式不支持,比如说服务器端只对 GET 做处理但是客户端是 POST 方式。
500 服务器端错误,比如说服务器代码出现空指针异常,浏览器就会收到服务器端发送的 500 状态码。
302 表示重定向,比如浏览器访问一个资源,服务器响应给浏览器 302 状态码并且通过响应头 Location 发送一个新的 URL,告诉浏览器去请求这个 URL,这就是重定向。
304 第一次访问一个资源后,浏览器会将这个资源缓存到本地,第二次再访问该资源的时候,如果资源没有变化,那么服务器端会发送 304 状态码,告诉浏览器使用本地缓存的资源。
二、Web 开发中常见的概念

1、B/S 系统 和 C/S 系统

Brower/Server :浏览器 服务器 系统(网站)
Client/Server : 客户端 服务器 系统(QQ、飞秋...)

2、Web 服务器软件

供向外部发布 Web资源的服务器软件


3、Web 资源

存放在 Web 应用服务器上面的可供外界访问的资源叫做 Web 资源
例如:存放在 Web 服务器内的HTML、CSS、JS、图片、视频等等... 
1) 静态资源:指的是 Web 页面中供人们浏览的数据始终不变。比如:HTML、CSS、JS、图片、视频等...
2) 动态资源:指的是 Web 页面中供人们浏览的数据由程序产生,不同时间访问 Web 页面看到的内容各不相同。比如:JSP/Servlet、Asp、PHP...

4、Web 开发中常见的 Web 应用服务器

1) weblogic :  Oracle 公司的大型收费的 Web 服务器 支持JavaEE 的全部规范
2) websphere : IBM 公司的大型收费的 Web 服务器  支持JavaEE 的全部规范
3)  Tomcat :Apache 开源组织下的开源免费的中小型(壮大...) Web 服务器 支持 JavaEE 的 jsp 和 servlet 规范

5、Tomcat 的下载安装


目录结构:

6、Tomcat 的启动与运行

bin -> startup.bat


启动不了的常见问题:
1、未正确配置 Java 环境
解决:正确配置 Tomcat 运行环境
2、端口冲突
解决:1.清理占用端口
          2.换端口 : netstst -aov 查看端口使用情况
7、Web 应用的目录结构
 
8、eclipse  绑定 Tomcat 服务器







9、在Tomcat 中发布工程














猜你喜欢

转载自blog.csdn.net/young_1004/article/details/80783313