开发模式使用经典的MVC架构:模式控制层(Controller层,负责业务逻辑控制)、服务层(Service层负责业务逻辑设计)、数据层(Dao层负责数据的读取与持久化)。
DispatcherServlet
捕获Handler
),最后以HandlerExecutionChain
对象的形式返回Request
中的模型数据,填充Handler
入参,开始执行Handler
(Controller
)ModelAndView
给DispatcherServlet
View
对象对ModelAndView
中的模型数据进行视图渲染数据库:选用Mysql数据库,特点是:体积小、速度快、开源。持久层框架:Mybatis,特点是:XML形式管理管理SQL语句,与代码解耦、支持动态SQL实现动态传参与流程判断。
DNS 解析: 域名树(.->…->单台计算机)、递归查询的过程 ,本地域名服务器 -> 向根域名服务器(. ) -> com顶级域名服务器(.com. )->google.com域名服务器(google.com.) ->… 找到后缓存到本地域名服务器。
缓存机制:浏览器缓存,系统缓存,路由器缓存,IPS服务器缓存,域名服务器缓存。
根域名服务器(.)收到请求后->返回这个(.com)顶级DNS服务器的IP->请求者(本地域名服务器)收到这台顶级DNS的服务器IP->向该服务器发起查询->.com服务器就会返回下一级的DNS服务器(google.com)的IP->请求者(本地域名服务器)继续查找,直到服务器找到(www.google.com)的主机。
DNS负载均衡:又叫做DNS重定向,返回一个跟用户最接近的点的IP地址给用户。
TCP 连接:三次握手:请求连接、同意连接、同意连接信号的确认。
发送 HTTP 请求:HTTPS:HTTP + SSL(or TLS),非对称加密,对称加密。HTTP请求报文: 请求行(GET index.html HTTP/1.1), 请求报头(附加信息)和请求正文(POST, PUT等方法需要客户端向服务器传递数据)。
服务器处理请求并返回 HTTP 报文:HTTP响应报文: 状态码, 响应报头和响应报文。缓存:Last-Modify(响应头) + If-Modified-Since(请求头),时间比对后若未修改返回304状态码,浏览器将从缓存中获取资源。反之返回200和资源内容。
浏览器解析渲染页面:WebKit渲染,边解析边渲染,下载资源(图片)。
连接结束:TCP释放连接四次握手、持久连接(keep-alive)
RESTful表述的是资源的状态性转移,在Web中资源就是URI(Uniform Resource Identifier)。
安全:不会改变服务端资源内容。幂等:多次相同请求得到结果相等。
POST不具备幂等性,POST所指向资源并非POST要创建的资源本身,而是POST创建资源的接收者,两次相同的POST请求会在服务器端创建两份新的资源。PUT具备幂等性PUT对应的资源是要创建或更新的资源本身,语义是创建或更新,对同一资源进行多次PUT的副作用和一次PUT是相同的,因此具有幂等性。
HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。https协议需要到ca申请证书。http端口是80,https是443。http直接开始传输数据,https先通过非对称加密协商密钥,然后才是使用对称加密的数据传输。
客户使用https的URL访问Web服务器,要求与Web服务器建立SSL连接。
Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。。
客户端的浏览器建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。
Web服务器利用自己的私钥解密出会话密钥。
Web服务器利用会话密钥加密与客户端之间的通信。
协商密钥使用非对称(安全),传输数据使用对称加密(高效)。