Web应用程序基础知识
关于HTML
关于URL、URN和URI
- URL: Uniform Resource Locator 统一资源定位符
- URN: Uniform Resource Name 统一资源名
- URI: Uniform Resource Identifier 统一资源标识符
URL与URN是URI的子集
URL的主要格式为
<协议>:<特定协议部分>
协议(Scheme)指定了以何种方式获得资源。一些协议名的例子有:
- ftp: File Transfer Protocol, 文件传输协议
- http: Hypertext Transfer Protocol, 超文本传输协议
- mailto: 电子邮件
- file: 特定主机文件名
特定协议部分的格式为
//<用户>:<密码>@<主机>:<端口号>/<路径>
关于HTTP
HTTP是一种通信协议,指架构在TCP/IP之上应用层的一种协议
HTTP协议的两个基本但极为重要的特性:
-
基于请求(Request)/响应(Response)模型
客户端对服务器发出一个取得资源的请求,服务器将要求的资源响应给客户端,每次的联机只作一次请求/响应,是一种很简单的通信协议,没有请求就不会有响应
-
无状态(Stateless)通信协议
在HTTP协议下,服务器响应客户端之后,就不会记得客户端的信息,更不会去维护与客户端有关的状态
关于GET和POST
GET请求
向服务器取得(GET)指定的资源,在发出GET请求时,必须一并告诉服务器所请求资源的URL,以及一些标头(Header)信息
请求参数通常是用户发送给服务器的必要信息,这个信息通常是利用窗体来发送,服务器必须有这些信息才可以进一步针对用户的请求作出正确的响应
请求参数实在URL之后跟随一个问号(?),然后是请求参数名称(name)与请求参数值(value),中间以等号(=)表示成对关系,若有多个请求参数,则以&字符连接
GET请求可以发送的请求参数长度有限,对于大量或复杂的信息发送(如文件上传),基本上会采用POST方法
POST请求
在请求时发布(POST)信息给服务器,对于太大量或复杂的信息发送(如文件上传),基本上会采用POST来进行发送
对于一些较敏感的信息,即使长度不长,通常也会采用POST的方式发送
关于URL编码
保留字符
百分比编码(URI编码或URL编码): 如果要在请求参数上表达URI中德保留字符,必须在%字符之后以十六进制数值表示方式,来表示该字符的八个位数值
在Java中可以使用java.net.URLEncoder类的静态encode()方法来做这个编码的动作
相对地,要编译则使用java.net.URLDecoder类的静态decode()方法
中文字符
-
URI规范的URL编码,中文在UTF-8编码下,会使用三个字节来表示
String text = URLEncoder.encode("林", "UTF-8");
-
HTTP规范的URL编码,中文在BIG5编码下,只使用两个字节来表示
String text = URLEncoder.encode("林", "BIG5");
关于静态网页与动态网页
静态网页
指的是请求服务器上的网页时,服务器不对网页文件作任何处理,读取文件之后就直接当作响应传给浏览器
HTML网页文件属于静态网页,其中的JavaScript程序代码会被浏览器执行(而不是服务器端程序)
动态网页
指的是服务器在响应之前,可能先依客户端的请求参数、标头或实际服务器上的状态,以程序的方式动态产生响应内容,再回传给用户
处理动态网页的技术有: CGI(Common Gateway Interface)、PHP(Hypertext Preprocessor)、ASP(Active Server Pages)等,以及Servlet/JSP(JavaServer Pages)