内容概要:
1、什么是URL, URN, URI
2、HTTP的两个基本特性
3、GET请求与POST请求的特点,如何选用
4、保留字符
5、动态网页与静态网页
1、URL、URN、URI
URL: Uniform Resource Locator
URN: Uniform Resource Name
URI: Uniform Resource Identifier
URL主要格式:
<协议>:<特定协议部分>
协议指定了以何种方式取得资源
ftp(文件传输协议,File Transfer Protocol)
http(超文本传输协议,Hypertext Transfer Protocol)
mailto(电子邮件)
file(特定主机文件名)
协议后跟随冒号
特定协议部分的格式为
//<用户>:<密码>@<主机>:<端口号>/<路径>
例子:
http://openhome.cc:8080/Gossip/index.html
file://C:/workspace/jdbc.pdf
简而言之,URL代表资源的地址信息。
URN代表某个资源独一无二的名称
例子:
ISBN 978-7-302-28366-9
URL与URN为URI的子集
2、HTTP
TCP/IP之上应用层的一种协议
两个基本的特性:
a. 基于请求(Request)/响应(Response)模型
b. 无状态(Stateless)通信协议
客户端对服务器发出请求,服务器将资源响应给客户端,无请求,无响应
服务器响应客户端之后,不会记得客户端的信息,不会维护与客户端有关的状态,无状态通信
3、GET请求、POST请求
浏览器在使用HTTP发出请求时,可以有几种请求方法,如GET、POST、HEAD、PUT、DELETE等,对于编写Servlet或JSP而言,最常接触的是GET与POST
(1)GET请求
向服务器取得(GET)指定的资源,在发出GET请求时,必须一并告诉服务器所请求资源的URL,以及一些标头(Header)信息
例子:
/*HTTP方法 请求的URL 请求参数 HTTP版本*/
GET /Gossip/download.do?file=servlet&user=caterpillar HTTP/1.1
/*请求标头*/
User-Agent: ......
Accept: ......
Accept-Language: ......
请求参数是用户发送给服务器的必要信息,通常利用窗体进行发送,服务器必须有这些信息才可以进一步针对用户的请求做出正确的响应。
请求参数是在URL之后跟随一个问号(?),然后是请求参数名称(name)与参数值(value),中间以等号表示成对关系,多个参数以&连接
使用GET方式发送请求,浏览器的低智商也会出现请求参数信息
GET请求可以发送的请求参数长度有限,对于太大量的数据不适合用GET方式进行请求,这时可以使用POST
(2)POST请求
在请求时发布(POST)信息给服务器
对于大量或复杂的信息发送(如文件上传),基本上会采用POST进行发送
例子:
/*HTTP方法 请求的URL HTTP版本*/
POST /Gossip/download.do HTTP/1.1
User-Agent:...
Accept: ...
Accept-Language: ...
Connection: ...
file=servlet&user=caterpillar //请求参数
对于一些较敏感信息,即使长度不长,通常也会改用POST方式发送
(3)如何选用GET或POST
a. 过长请求参数、大量数据(文件上传),使用POST
b. 敏感信息(信用卡号、用户名、密码)使用POST
c. POST请求参数不会出现在地址栏上,无法加入浏览器的书签中,要设定书签,使用GET
d. GET请求——等幂操作,不会改变服务器上的数据或状态
POST请求——非等幂操作,会影响服务器上的数据或状态,如修改数据库、在服务器保存文件
就窗体而言,可以通过<form>的method属性设定GET或POST,默认是GET
4、保留字符
要在请求参数上表达URI中的保留字符,必须在%字符之后以十六进制数值表示方式,来表示该字符的八个数值
例子:
%3A 表示 :
%2F 表示 /
http://openhome.cc
http://openhome.cc/addBookmar.do?url=http%3A%2F%2Fopenhome.cc
这是URI规范中的百分比编码(Percent-Encoding),俗称URI编码/URL编码
HTTP与URI规范保留字有差别,HTTP中空白编码为"+",而URI中为"%20"
5、动态网页与静态网页
静态网页:指的是请求服务器上的网页时,服务器不对网页文件作任何处理,读取文件之后就直接当作响应传给浏览器。
动态网页:指的是服务器在响应之前,可能先依据客户端的请求参数、标头或实际服务器上的状态,以程序的方式产生响应的内容,再传回给用户。
是否经服务器端程序处理
对处理JSP内容的服务器端而言,内嵌JavaScript跟静态的HTML标签没什么两样。