关于HTML
Web应用程序,是由客户端和服务器端两个部分组成的。客户端时浏览器,服务器端是HTTP服务器。服务器上的文件或资源必须产生HTML。
关于HTTP
HTTP——架构在TCP/IP之上应用层的一种协议。
两个基本特性:
- 基于请求/响应模型
- 无状态
客户端队服务器发出一个取得资源的请求,服务器将要求的资源响应给客户端,每次联机只作一次请求/响应。没有请求就不会有响应。
服务器响应客户端之后,就不会记得客户端的信息,更不会去维护与客户端有关的状态。
GET和POST
HTTP所有通信数据都是使用“字符”来进行协议交换。
GET
用于等幂操作。纯粹请求服务器上的资源,而不改变服务器上的数据或状态。
POST
用于非等幂操作。POST发送的请求,可能会影响服务器上的数据或状态。
URL编码
百分比编码=%+16进制
保留字符
- :
- /
- ?
- &
- =
- @
- %
中文字符
如果是 UTF-8 编码,会用3个十六进制表示
"林" ——> utf-8 为%E6%9E%97
Java API
编码 java.net.URLEncoder.encode(char, char_set)
解码 java.net.URLEncoder.decode(char, char_set)
容器
浏览器 ——> 实体服务器 <——> HTTP服务器程序 <——> Web容器 <——> Servlet
一个请求/响应的例子:
- 客户端对 Web 服务器发出 HTTP 请求
- HTTP 服务器收到 HTTP 请求,将请求转由 Web 容器处理, Web 容器会剖析 HTTP 请求内容,创建各种对象(如 HttpServletRequest、HttpServletResponse、HttpSession 等)。
- Web 容器由请求的 URL 决定要使用哪个 Servlet 来处理请求(事先有开发人员定义好)。
- Servlet 根据请求对象(HttpServletRequest)的信息决定如何处理,通过响应对象(HttpServletResponse)来创建响应。
- Web 容器与 HTTP 服务器沟通,Web 服务器将响应转换为 HTTP 响应并传回客户端。
对于每个请求,容器是创建一个线程并转发给适当的 Servlet 来处理,因此可以大幅减轻性能上的负担,但也因此要注意线程安全问题。
JSP 和 Servlet 的关系
JSP 最终会被容器转译为 Servlet 并加载执行。
JSP 与 Servlet 是一体两面的关系。
MVC 与 Mode2
MVC
- 模型不会有画面相关对程序代码
- 视图负责画面相关逻辑
- 控制器知道某个操作必须调用哪个模型
Mode 2
由于 Web 应用是基于 HTTP,必须基于请求/响应模型,没有请求就不会有响应,也就是 HTTP 服务器不可能主动对浏览器发出响应,因此形成了 Mode 2 架构。
- 控制器:取得请求参数、验证请求参数、转发请求给模型、转发请求给画面
- 模型:接受控制器的请求调用,负责处理业务逻辑、负责数据存取逻辑等
- 视图:接受控制器的请求调用,会从模型提取运算后的结果,根据需求呈现所需的画面