HTTP协议及Servlet原理_第1页
HTTP协议及Servlet原理_第2页
HTTP协议及Servlet原理_第3页
HTTP协议及Servlet原理_第4页
HTTP协议及Servlet原理_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、HTTP协议及Servlet原理回顾 Web开发简介 B/S与C/S的区别 Tomcat服务器 Servlet关键字Http协议Servlet原理课程目标 Http简介 Servlet生命周期HTTP协议及Servlet原理 当我们想浏览一个网站的时候,只要在浏览器的地址栏里输入网站的地址就可以了,例如,但是在浏览器的地址栏里面出现的却是:http:/ ,你知道为什么会多出一个“http”吗? 什么是HTTP协议 我们知道,Internet的基本协议是TCP/IP协议,然而在TCP/IP模型最上层的是应用层(Applicationlayer),它包含所有高层的协议。高层协议有:文件传输协议FT

2、P、电子邮件传输协议SMTP、域名系统服务DNS、网络新闻传输协议NNTP和HTTP协议等。HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从web服务器传输超文本到本地浏览器的传送协议,用来定义客户端与web服务器通迅的格式。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。这就是你为什么在浏览器中看到的网页地址都是以http:/开头的原因。HTTP协议简介 HTTP是HyperText Transfer Protocol(超文本传输协议)的简写

3、,它是TCP/IP协议的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程 HTTP协议是学习JavaWeb开发的基石,不深入了解HTTP协议,就不能说掌握了WEB开发,更无法管理和维护一些复杂的WEB站点 HTTP协议的版本:HTTP/1.0(断开连接)、HTTP/1.1(保持连接)HTTP1.0和HTTP1.1的区别 在HTTP1.0协议中,客户端与web服务器建立连接后,只能获得一个web资源 HTTP1.1协议,允许客户端与web服务器建立连接后,在一个连接上获取多个web资源 Web应用的优化之一: 减少客户端向Web服务器发送HTTP请求的数量HTTP请求(req

4、uest) 客户端连上服务器后,向服务器请求某个web资源,称之为客户端向服务器发送了一个HTTP请求。一个完整的HTTP请求包括如下内容:一个请求行、若干消息头、以及实体内容,其中的一些消息头和实体内容都是可选的,消息头和实体内容之间要用空行隔开。 如下所示 :GET /books/java.html HTTP/1.1Accept: */*Accept-Language: en-usConnection: Keep-AliveHost: localhostReferer: http:/localhost/links.aspUser-Agent: Mozilla/4.0Accept-Encod

5、ing: gzip, deflate请求行请求行多个多个消息头消息头请求行用于描述客户端的请求方式、请求的资源名称,以及使用的HTTP协议版本号消息头用于描述客户端请求哪台主机,以及客户端的一些环境信息等HTTP请求的细节请求行 请求行中的GET称之为请求方式,请求方式有: POST、GET、HEAD、OPTIONS、DELETE、TRACE、PUT 常用的有:POST、GET 不管POST或GET,都用于向服务器请求某个WEB资源,这两种方式的区别主要表现在数据传递上,客户端通过这两种方式都可以带一些数据给服务器。请求细节 如请求方式为GET方式,则可以在请求的URL地址后以?的形式带上交给

6、服务器的数据,多个数据之间以&进行分隔,例如: GET /mail/1.html?name=abc&password=xyz HTTP/1.1GET方式的特点:在URL地址后附带的参数是有限制的,其数据容量不能超过1K。 如请求方式为POST方式,则可以在请求的实体内容中向服务器发送数据,例如: POST /servlet/ParamsServlet HTTP/1.1 Host: Content-Type: application/x-www-form-urlencoded Content-Length: 28 name=jack&password=aaaaaaPost

7、方式的特点:传送的数据量无限制,文件下载HTTP请求的细节消息头 用于HTTP请求中的常用头 Accept: text/html,image/* Accept-Charset: utf-8 Accept-Encoding: gzip,compress Accept-Language: en-us,zh-cn Host: http:/ If-Modified-Since: Tue, 11 Jul 2015 15:32:51 GMT(缓存时间) Referer: http:/ User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0

8、) Cookie Connection: close/Keep-Alive Date: Tue, 11 Jul 2015 15:32:51 GMT(访问时间)HTTP响应Response 一个HTTP响应代表服务器向客户端回送的数据,它包括: 一个状态行、若干消息头、以及实体内容 ,其中的一些消息头和实体内容都是可选的,消息头和实体内容之间要用空行隔开。 HTTP/1.1 200 OKServer: Microsoft-IIS/5.0Date: Thu, 11 Jul 2015 15:32:51 GMTContent-Length: 2291Content-Type: text/htmlCac

9、he-control: private状态行状态行多个多个消息头消息头实体内容实体内容状态行用于描述服务器对请求的处理结果。消息头用于描述服务器的基本信息,以及数据的描述,服务器通过这些数据的描述信息,可以通知客户端如何处理等一会儿它回送的数据。代表服务器向客户端回送的数据。HTTP响应的细节状态行 状态行 格式: HTTP版本号状态码原因叙述 举例:HTTP/1.1 200 OK状态码用于表示服务器对请求的处理结果,它是一个三位的十进制数。响应状态码分为5类,如下所示:状态码状态码含义含义100199表示成功接收请求,要求客户端继续提交下一次请求才能完成整个处理过程200299 表示成功接收

10、请求并已完成整个处理过程,常用200300399为完成请求,客户需进一步细化请求。例如,请求的资源已经移动一个新地址,常用302、307和304400499客户端的请求有错误,常用404500599服务器端出现错误,常用 500HTTP响应细节常用响应头 HTTP请求中的常用响应头 Location: http:/www.geminno/default.jsp Server:apache tomcat Content-Encoding: gzip Content-Length: 80 Content-Language: zh-cn Content-Type: text/html; charse

11、t=GB2312 Last-Modified: Tue, 11 Jul 2015 15:32:51 GMT Refresh: 1;url=http:/ Content-Disposition: attachment; filename=aaa.zip(下载文件) Transfer-Encoding: chunked(分块传递数据到客户端) Set-Cookie:SS=Q0=5Lb_nQ; path=/search Expires: -1/3种禁止缓存的头字段 Cache-Control: no-cache Pragma: no-cache Connection: close/Keep-Aliv

12、e Date: Tue, 11 Jul 2015 15:32:51 GMTHTTP请求的细节通用信息头 通用信息头指既能用于请求,又能用于响应的一些消息头。 Cache-Control: no-cache Pragma: no-cache Connection: close/Keep-Alive Date: Tue, 11 Jul 2015 18:23:51 GMT案例演示 通过servlet演示常用的响应头 content-disposition content-type location refreshServlet生命周期HTTP请求容器12解析请求 345响应6创建Servlet实例

13、调用init()方法 Servlet调用service()方法 调用destroy()方法 输出响应信息 78生命周期的各个阶段实例化 Servlet 容器创建 Servlet 的实例初始化 该容器调用 init() 方法请求处理 如果请求 Servlet,则容器调用 service() 方法销毁实例之前调用 destroy() 方法服务终止 Servlet的部署tomcatwebappsstoreWEB-INFindex.htmltest.jsplibclasses*.jarHelloServlet.classweb.xml显示页面第三方jar文件.java编译后的.class文件程序配置文

14、件必须的tomcat主目录文档根目录在web.xml文件中配置Servlet HttpServletTest cn.jbit.servlet. HttpServletTest HttpServletTest /HttpServletTest 两个名称必须相同 为了方便使用Servlet,取个别名 完整的包名+类名 访问Servlet的URL servlet-mapping元素 由于客户端是通过URL地址访问web服务器中的资源,所以Servlet程序若想被外界访问,必须把servlet程序映射到一个URL地址上,这个工作在web.xml文件中使用元素和元素完成。 元素用于注册Servlet,它

15、包含有两个主要的子元素:和,分别用于设置Servlet的注册名称和Servlet的完整类名。 一个元素用于映射一个已注册的Servlet的一个对外访问路径,它包含有两个子元素:和,分别用于指定Servlet的注册名称和Servlet的对外访问路径。 同一个Servlet可以被映射到多个URL上 Servlet路径匹配AnyNameAnyName/action/action/* *AnyNameAnyName* *.do.do在Servlet映射到的URL中也可以使用*通配符,但是只能有两种固定的格式:一种格式是“*.扩展名”,另一种格式是以正斜杠(/)开头并以“/*”结尾。 Servlet对象

16、创建 Servlet是一个供其他Java程序(Servlet引擎)调用的Java类,它不能独立运行,它的运行完全由Servlet引擎来控制和调度。 针对客户端的多次Servlet请求,通常情况下,服务器只会创建一个Servlet实例对象,也就是说Servlet实例对象一旦创建,它就会驻留在内存中,为后续的其它请求服务,直至web容器退出,servlet实例对象才会销毁。 在Servlet的整个生命周期内,Servlet的init方法只被调用一次。而对一个Servlet的每次访问请求都导致Servlet引擎调用一次servlet的service方法。对于每次访问请求,Servlet引擎都会创建一个新的HttpServletRequestHttpServletRequest请求对象和一个新的请求对象和一个新的HttpServletResponseHttpServletResponse响应响应对象,然后将这两个对象作为参数传递给它调用的Servlet的service()方法,service方法再根据请求方式分别调用doXXX方法。 servlet元素 如果在元素中配置了一个元素,那么WEB应用程序在启动时,就会装载并创建Servlet的实例对象、以及调用Servlet实例对象的init()方法。举例:name类全名2数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论