(第一章)Web应用简介

第一章Web应用简介

目录

第一章Web应用简介

1.URL、URN与URI

2.HTTP协议

3.如何选用GET和POST

4.有关URL编码

5.动态网页与静态网页

6.请求/响应的基本过程

7.Model2架构


1.URL、URN与URI

一般而言,URL的主要格式为:

<协议>:<特定协议部分>

协议指定了以何种方式取得资源。一些协议名的例子有:

  • ftp(文件传输协议,File Transfer Protocol)
  • http(超文本传输协议,Hypertext Transfer Protocol)
  • mailto(电子邮件)
  • file(特定主机文件名)

协议之后跟随冒号,特定协议部分的格式为:

//<用户>:<密码>@<主机>:<端口号>/<路径>

简而言之,URL代表资源的地址信心,URN则代表某个资源独一无二的名称。由于URL或URN的目的,都是用来标识某个资源,后来的标准制定了URI,而URL与URN成为URI的子集。

2.HTTP协议

HTTP是一种基于请求/响应的通信协议,客户端对服务器发出一个取得资源的请求,服务器将要求的资源响应给客户端,每次的联机只作一次请求/响应,是一种很简单的通信协议,没有请求就不会响应。

在HTTP协议之下,服务端是个健忘的家伙,服务器响应客户端之后,就不会记得客户端的信息,更不会去维护与客户端有关的状态,因此HTTP又称为无状态(stateless)的通信协议。如图1.5所示。

3.如何选用GET和POST

GET请求与POST请求是使用Servlet/JSP时最常接触的两个请求方式。除了长度过长的请求数据外,许多请求既可以使用GET也可以使用POST,那么何时该选用GET而何时该选用POST呢?

从功能方面上,可以用以下方式来决定该选用GET和POST:

  • GET请求跟随在URL之后的请求参数长度是有限的,过长的请求参数,或如文件上传这类的大量数据,就不适合GET请求,而应该改用POST请求。
  • GET请求的请求参数会出现在地址栏上,敏感性或有安全性考虑的请求参数(如信用卡号码、用户名、密码等),就不应该使用GET请求发送。
  • POST请求的请求参数不会出现在地址栏上,所以无法加入浏览器的书签之中,如果有些页面是根据请求参数来作不同的画面呈现(如论坛的文章发表),而你希望可以让用户设定书签,以便日后可以直接点击书签浏览,则应该使用GET请求。
  • 有些浏览器会依网址来缓存(Cache)数据,如果网址是相同的URL,则会直接从浏览器缓存中取出数据,而不会真正发送请求至服务器上查询最新的数据。如果不希望服务器状态改变了,而浏览器仍从缓存中取得旧资料,则可以改用POST请求(使用GET请求也可以避免缓存,例如在网址上附加时间戳,让每次GET请求的网址都相同。)
  • GET请求应该用于等幂操作。GET请求纯粹取得资源,而不改变服务器上的数据或状态。GET的请求参数,只是用来告知服务器,必须进一步根据请求参数(而不只是URL)来标识出要响应的内容(例如查询数据库的数据),同样的GET请求且使用相同的请求参数重复发送多次,都应该传回相同的结果。
  • POST请求应该用于非等幂操作。POST请求发送的数据,可能会影响服务器上的数据或状态。例如修改(增、删、更新)数据库的内容,或是在服务器上保存文件。你的请求若会改变服务器的状态,则应改用POST请求。

4.有关URL编码

1、保留字符

在URI的规范中定义了一些保留字符,如“:”、“/”、“?”、“&”、“=”、“@”、“%”等字符,在URI中都有它的作用。如果要在请求参数上表达URI中的保留字符,必须在%字符之后以十六进制数值表示方式,来表示该字符的八个位数值。这是URI规范中的百分比编码,也就是俗称的URI编码或URL编码。

2、中文字符

URI规范的URL编码,针对的是字符UTF-8编码的八个位数值,中文在UTF-8编码下,会使用三个字节来表示

5.动态网页与静态网页

  • 静态网页:请求服务器上的网页时,服务器不对网页文件作任何处理,读取文件之后就直接当作响应传给浏览器。
  • 动态网页:服务器在响应之前,可能先依客户端的请求参数、标头或实际服务器上的状态,以程序的方式动态响应产生内容,再传回给用户。

  • 动态网页实际上会经过服务器上的程序处理,再传回实际的响应内容,这类处理动态网页的技术有CGI、PHP、ASP等,以及本书介绍的Servlet/JSP。

6.请求/响应的基本过程

  • (1)客户端(大部分情况下是浏览器)对Web服务器发出HTTP请求
  • (2)HTTP服务器收到HTTP请求,将请求转由Web容器处理,Web容器会剖析HTTP请求内容,创建各种对象(如HttpServletRequest、HttpServletResponse、HttpSession等。)
  • (3)Web容器由请求的URL决定要使用哪个Servlet来处理请求。
  • (4)Servlet根据请求对象(HttpServletRequset)的信息决定如何处理,通过响应对象(HttpServletResponse)来创建响应。
  • (5)Web容器与HTTP服务器沟通,Web服务器将响应转换为HTTP响应并传回客户端换。

7.Model2架构

在Model2的架构上,控制器、模型、视图各负的职责如下:

  • 控制器:取得请求参数、验证请求参数、转发请求给模型、转发请求给画面,这些使用程序代码来实现。
  • 模型:接受控制器的请求调用,负责处理业务逻辑、负责数据存取逻辑等,这部分还可依应用程序功能,产生各多种不同职责的模型对象,模型使用程序代码来实现。
  • 视图:接受控制器的请求调用,会从模型提取运算后的结果,根据需求呈现所需的画面,在职责分配良好的情况下,基本上可作到不出现程序代码,因此不会发生程序代码与HTML混杂在一起的情况。
发布了17 篇原创文章 · 获赞 0 · 访问量 224

猜你喜欢

转载自blog.csdn.net/SUN19980421/article/details/104110778