Spring Boot系列(二) Web篇(上)
静态web内容
基本解释
HTTP 请求内容由Web 服务器文件系统提供,常见静态Web内容如:HTML、CSS、JS、JPEG、Flash等等
特点
- 计算类型:I/O 类型
- 交互方式:单一
- 资源内容:基本相同
- 资源路径:物理路径,文件或者目录
- 请求方法:Get
常见使用场景
- 信息展示
- 样式文件(css)
- 脚本文件(js)
- 图片(jpeg,gif)
- 多媒体(Flash,movie)
- 文件下载
常见Web服务器
- Apach HTTP Server
- Nginx
- Microsoft IIS
- GWS
思考
问题:为什么Java Web Server不是常用的Web Server?
- 内存占用:java中的类型(数据类型等)太多,内存占用大,还有就是分配的问题,二进制0会占用大量内存(00001比如这个)
- 垃圾回收:java的垃圾回收机制是被动回收,建议回收,java中还有停顿
- 并发处理:java是线程开销的,java中还存在线程池
标准优化技术
- 资源变化:相应头:Last-Modified 请求头:If-Modified-Since
- 资源缓存: 相应头:ETag 请求头:If-None-Match
动态Web内容
基本解释
与静态Web内容不同,请求内容通过服务器计算而来。
特点
- 计算类型:混合类型(I/O、CPU、内存等)
- 交互类型:丰富(用户输入,客户端特征等)
- 资源内容:多样性
- 逻辑路径(虚拟)
- 请求方法:GET、HEAD、PUT、POST等
常用使用场景
- 页面渲染
- 表单交互(Form)
- AJAX
- XML
- JSON/JSONP
- Web Services(SOAP,WSDL)
- WebSocket
流行的java web服务器
- Servlet 容器(Tomcat、Jetty)
- 非 Servlet容器(Undertow)
请求
- 资源定位(URI)
- 请求协议(Protocol)
- 请求方法(Method)
- 请求参数(Parameter)
- 请求主体(Body)
- 请求头(Header)
- Cookie
响应
- 响应头(Header)
- 响应主体(Body)
技术/架构演变
- CGI(Common Gateway Interface)
- Servlet
- JSP(Java Server Page)
- Model 1(JSP + Servlet + JavaBeans)
- Model 2(MVC)
- Struts Web MVC
- SpringMVC
Model2和MVC的细微差异:
- Model 2 为面向 Web 服务的架构,MVC 则是面向所有应用场景(比如:PC应用、无线应用)
- 相对于MVC,Model 2 中 Controller 细化为 Front Controller(FC)和Application Controller(AC),前者(FC)负责路由后者(AC),后者(AC)负责跳转视图(View)。
模板引擎
- JSP
- Velocity
- Thymeleaf