HTTP协议

来源:互联网 发布:mac high sierra 更新 编辑:程序博客网 时间:2024/06/05 14:52

HTTP协议

     1HTTP协议概述:1.0 版本是无状态的协议,1.1是有状态的协议,可以在一次连接的基础上发送多次请求和得到多次响应。网页中包含<img src=""> <script src=""> <link href="">标签,浏览器都会自动发送请求。<a href ="">标签不会发送请求,除非点击。

     2HTTP协议的组成:

请求部分:

GET/HTTP/1.1 请求行:位于请求的第一行

请求方式 请求的资源路径 协议版本号

GET请求方式:默认方式,表单数据出现在地址行,不安全,长度不能超出1k

POST请求方式:可以通过表单总的method=POST”设置。表单数据会出现在正文中。安全,没有长度限制。

Accept*/*    请求消息头:从第2行开始至第一个空行

浏览器可以接受的MIME类型。MIME类型:文件系统中使用扩展名来区分不同文件类型。

Accept-Charset: 浏览器通过这个头告诉服务器,它支持哪种字符集

Accept-Languagezh-cn

当服务器能够提供一种以上的语言版本时要用到。可以在浏览器中进行设置。

Accept-Encoding:gzipdeflate

浏览器能够进行解码的数据编码方式,比如gzip

Referer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面 

应用:防盗链;统计网站投放广告的效果

Content-Type: application/x-www-form-urlencoded提交的内容类型,form表单的enctype="application/x-www-form-urlencoded"的默认值

If-Modified-Since: Wed, 02 Feb 2011 12:04:56 GMT利用这个头与服务器的文件进行比对,如果一致,则从缓存中直接读取文件

Cookie:这是最重要的请求头信息之一 。会话技术有关

Username=admin&&password=123 请求正文:第一个空行之后的全部都是请求正文。

响应部分:

HTTP/1.1 200 OK 响应行:位于响应的第一行,协议版本号 响应码 描述

常用响应码:

200:一切正常

302/307:请求的资源变更了。304:资源没有被修改过。

404:资源不存在

500:服务器程序出错

*Location: http://www.it315.org/index.jsp指示新的资源的位置。配合响应码302/307来使用。302/307+Location:请求重定向

Server: Apache-Coyote/1.1  响应消息头:从第2行开始至第一个空行

Tomcat指示服务器的类型

Accept-Ranges: bytes

ETag: W/"7777-1322450448000"

Last-Modified: Mon, 28 Nov 2011 03:20:48 GMT

Content-Encodinggzip服务器发送的数据采用的编码类型。

Content-Type: text/html;charset=gb2312 服务器发送的内容的MIME类型

Content-Length: 7777  正文长度

Content-Dispositionattachment;filename=aaa.zip指示客户端下载文件

Date: Sat, 15 Sep 2012 01:47:06 GMT

Refresh1url=http://www.it315.org指示客户端刷新频率。单位是秒

Set-CookieSS=QQ=5Lb_nQ;path=/search服务器端发送的Cookie会话技术有关。

//控制客户端不要缓存内容的

Expires:-1

Cache-Control:no-cache(1.1)

Pragma:no-cache(1.0)

.....      响应正文:第一个空行之后的全部都是响应正文

浏览器显示的就是正文中的内容

3Servlet概述:所有的Servlet都必须直接或间接实现接口

1Servlet对象有容器创建并使用。用户的每一次请求都会调用service方法。

2Servlet接口中的initxxx.xxx)方法对象被创建后会立刻调用init方法,destroy方法在销毁Servlet时会被容器调用释放占用的资源。

3Servlet的子类GenericServlet只有一个抽象方法:servicexxx, xxx)。

JavaWeb开发编写的Servlet一般继承GenericServlet的子类HttpServlet

(4)不要覆盖掉service方法,因为其提供了一些标准的实现。而应该根据你的请求方式覆盖掉doGet或者doPost方法,否则会出错。

(5)Servlet映射细节:

可以使用通配符:*  使用方法:*.do 或者/目录名/* /*/csdt/*

Url匹配原则:绝对匹配(/abc/abc);从前往后找最相似的进行匹配。

缺省Servlet:它的映射路径是 ,如果用户请求的url,没有找到任何的匹配,都由缺省Servlet进行处理,这样,用户的所有请求都能够由Servlet去处理。

(6)Servlet的生命周期:默认情况下容器启动时不会创建Servlet对象。

当用户第一次访问该Servlet时才会创建对象并调用init方法。往后该Servlet对象就留在内存了。直到关闭tomcat才会调用destroy销毁Servlet释放资源。

希望容器在加载该应用时,就完成Servlet的初始化工作,可以做如下配置:

<servlet>

   <servlet-name>ServletDemo3</servlet-name>

   <servlet-class>com.itheima.servlet.ServletDemo3</servlet-class>

   <load-on-startup>1</load-on-startup>

<!--指定启动顺序,值为一个正自然数-->

   </servlet>