JavaWeb学习总结:
基础知识:
http协议:
HTTP是HyperText Transfer Protocol的缩写,是一种超文本传输协议,用于分布式、协作式和超媒体信息系统的应用层协议,是万维网的数据通信的基础。
HTTP由蒂姆·伯纳斯-李于1989年在欧洲核子研究组织(CERN)所发起。它的标准制定由万维网协会(World Wide Web Consortium,W3C)和互联网工程任务组(Internet Engineering Task Force,IETF)进行协调,发布了一系列RFC,其中最著名的是1999年6月公布的RFC-2616,定义了HTTP协议中现今广泛使用的一个版本——HTTP 1.1。
HTTP请求/响应步骤:
1.客户端连接到Web服务器
一个HTTP客户端(通常是浏览器),与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接(例如:http://www.baidu.com)。
2.客户端发送HTTP请求
通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成。
3.服务器接受请求并响应
Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据4部分组成。
4.释放TCP连接
在HTTP/1.0中默认使用短连接。也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。当客户端浏览器访问的某个HTML或其他类型的Web页中包含有其他的Web资源(如JavaScript文件、图像文件、CSS文件等),每遇到这样一个Web资源,浏览器就会重新建立一个HTTP会话。而从HTTP/1.1起,默认使用长连接,用以保持连接特性。使用长连接的HTTP协议,会在响应头加入代码:
Connection:keep-alive
在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,因此当客户端再次访问这个服务器时,可以继续使用这条连接,而不必又建立一个新的连接。Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。
注意,实现长连接需要客户端和服务端两端同时支持长连接。
HTTP协议的长连接和短连接,实质上是TCP协议的长连接和短连接。
5.客户端浏览器解析HTML内容
客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。
然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。
客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在
浏览器窗口中显示。
例如:在浏览器地址栏键入URL,按下回车之后会经历以下流程:
-
浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址;
-
解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立TCP连接;
-
浏览器发出读取文件(URL 中域名后面部分对应的文件)的HTTP 请求,该请求报文作为 TCP 三次握手的第三个报文的数据发送给服务器;
-
服务器对浏览器请求作出响应,并把对应的 html 文本发送给浏览器;
-
浏览器将读取该 html 文本并显示内容。
最后要注意的是,HTTP是基于TCP/IP协议的应用层协议,且是一个无状态协议,其本身并不对请求和响应之间的通信状态进行保存,在http协议这个级别,协议对发送过的请求和响应不做持久化处理。
HTTP请求方法:
根据 HTTP 标准,HTTP 请求可以使用多种请求方法(也叫“动作”),不同的方法以不同的方式操作指定资源。
HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD方法。
HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法,具体如下:
GET
向指定的资源发出“显示”请求。使用GET方法应该只用在读取数据,而不应当被用于产生“副作用”的操作中,例如在 Web Application中。其中一个原因是GET可能会被网络蜘蛛等随意访问,参见安全方法。
HEAD
与GET方法一样,都是向服务器发出指定资源的请求。只不过服务器将不传回资源的本文部分。它的好处在于,使用这个方法可以在不必传输全部内容的情况下,就可以获取其中“关于该资源的信息”(元信息或称元数据)。
POST
向指定资源提交数据,请求服务器进行处理(例如提交表单或者上传文件)。数据被包含在请求本文中。这个请求可能会创建新的资源或修改现有资源,或二者皆有。
PUT
向指定资源位置上传其最新内容。
DELETE
请求服务器删除Request-URI所标识的资源。
TRACE
回复服务器收到的请求,主要用于测试或诊断。
OPTIONS
这个方法可使服务器传回该资源所支持的所有HTTP请求方法。用’*'来代替资源名称,向Web服务器发送OPTIONS 请求,可以测试服务器功能是否正常运作。
CONNECT
HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。通常用于SSL加密服务器的链接(经由非加密的HTTP代理服务器)。
方法名称是区分大小写的。当某个请求所针对的资源不支持对应的请求方法的时候,服务器应当返回状态码405(Method Not Allowed),当服务器不认识或者不支持对应的请求方法的时候,应当返回状态码501(Not Implemented)。
通常采用 GET 和 POST 方法,如果要实现其他的方法,需要在服务器做相应的配置。其他的请求也可以通过GET和POST实现。
两种开发模型:
**静态网页:**只能展示事先准备好的内容,它无法实现搜索、登录、购买等交互功能,也无法对网页内容进行实时更新的网页。
**动态网页:**则是可以根据不同的输入和点击操作返回不同的页面,或是对页面内容进行实时更新。
要实现动态网页,我们需要了解B/S,C/S技术:
B/S,C/S技术:
C/S又称Client/Server或客户/服务器模式。服务器通常采用高性能的PC、工作站或小型机,客户端需要安装专用的客户端软件。如QQ,微信等软件。
B/S是Brower/Server的缩写,客户机上只要安装一个浏览器(Browser)即可。Browser/Server建立在广域网的基础上。
CS和BS结构各自的优、缺点:
1.C/S的优点是能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器。对应的优点就是 客户端响应速度快。 缺点主要为 :
- 客户端需要安装专用的客户端软件,安装量大。
- 其次任何一台电脑出问题,如病毒、硬件损坏, 都需要进行安装或维护。特别是有很多分部或专卖店的情况,即使工作量不大,路程上也需要花费大量时间,
- 再有就是系统软件升级时,每一台客户机均需要重新安装,其维护和升级成本非常高。
2.B/S最大的优点就是可以在任何地方进行操作而不用安装任何专门的软件。只要有一台能上网的电脑就能使用, 客户端零维护。系统的扩展非常容易,只要能上网,就可以使用了。甚至可以在线申请,通过公司内部的安全认证 (如CA证书)后,不需要人的参与,系统可以自动分配给用户一个账号进入系统。
Web服务器的分类
Web服务器是运行及发布Web应用的容器,只有将开发的Web项目放置到该容器中,才能使网络中的所有用户通过浏览器进行访问。开发Java Web应用所采用的服务器主要是与JSP/Servlet兼容的Web服务器,比较常用的有Tomcat、Resin、JBoss、WebSphere 和 WebLogic 等。
Tomcat 服务器
Tomcat 服务器是目前最为流行的服务器,它是Apache-Jarkarta开源项目中的一个子项目,是一个小型、轻量级的支持JSP和Servlet 技术的Web服务器,也是初学者学习开发JSP应用的首选。
Resin 服务器
Resin是Caucho公司的产品,是一个非常流行的支持Servlet和JSP的服务器,速度非常快。Resin本身包含了一 个支持HTML的Web服务器,这使它不仅可以显示动态内容,而且显示静态内容的能力也毫不逊色,因此许多网站 都是使用Resin服务器构建。
JBoss服务器
JBoss是一个种遵从JavaEE规范的、开放源代码的、纯Java的EJB服务器,对于J2EE有很好的支持。JBoss采用JML API实现软件模块的集成与管理,其核心服务又是提供EJB服务器,不包含Servlet和JSP的Web容器,不过它可 以和Tomcat完美结合。
WebSphere 服务器
WebSphere是IBM公司的产品,可进一步细分为 WebSphere Performance Pack、Cache Manager 和WebSphere Application Server等系列,其中WebSphere Application Server 是基于Java 的应用环境,可以运行于 Sun Solaris、Windows NT 等多种操作系统平台,用于建立、部署和管理Internet和Intranet Web应用程序。
WebLogic 服务器
WebLogic 是BEA公司的产品(现在已经被Oracle收购),可进一步细分为 WebLogic Server、WebLogic Enterprise 和 WebLogic Portal 等系列,其中 WebLogic Server 的功能特别强大。WebLogic 支持企业级的、多层次的和完全分布式的Web应用,并且服务器的配置简单、界面友好。对于那些正在寻求能够提供Java平台所拥有的一切应用服务器的用户来说,WebLogic是一个十分理想的选择