前后端分离,通过nginx+tomcat的方式进行解耦,为大型分布式架构、弹性计算架构、微服务架构、多端化服务(多种客户端,例如:浏览器,车载终端,安卓,IOS等等)打下坚实的基础。
核心思想是前端html页面通过ajax调用后端的restuful api接口并使用json数据进行交互。前端只需要关注页面的样式与动态数据的解析&渲染,而后端专注于具体业务逻辑。
优点
- 前后端解耦:前端服务器使用nginx,放静态资源,负责控制页面引用&跳转&路由,前端页面异步调用后端的接口。后端服务器使用tomcat。
- 前后端并行开发。
- 减少后端服务器的并发/负载压力。http请求转移到前端nginx上,除了第一次页面请求外,浏览器会大量调用本地缓存。
- 后端服务暂时超时或者宕机,不影响前端访问。
- 页面显示异步加载。
- 多端应用。
- nginx支持页面热部署,不用重启服务器。
- 增加代码的维护性&易读性。
- 前端大量的组件代码得以复用,组件化。
- 在nginx中部署证书,外网使用https访问,并且只开放443和80端口,其他端口一律关闭(防止黑客端口扫描),内网使用http,性能和安全都有保障。
开发模式
springmvc:提出需求–》UI设计–》前端开发html页面–》后端套jsp页面–》集成出现问题–》前端修改–》后端修改–》二次集成–》集成成功–》交付。
前后端分离:提出需求–》UI设计–》前后端约定接口、数据、参数–》前后端并行开发–》集成–》前端页面调整–》集成成功–》交付。
请求方式
springmvc:浏览器请求–》Servlet或Controller接收请求–》调用Service,Dao完成业务逻辑–》返回jsp。
前后端分离:浏览器请求–》html页面–》html页面调用服务端接口产生数据–》填充html,展现动态效果。
jsp的缺点
- 动态资源和静态资源耦合,服务器压力大。
- html页面套jsp页面,出错率大,效率低下。
- jsp编译成servlet,运行慢。