框架产生的历史
知乎链接:https://www.zhihu.com/question/21142149/answer/148286909
1.WEB页面登场
1991年Web页面在Internet出现,作为一帮科学家信息分享和传递的工具。然而很快,大家不满足仅仅访问Web服务器的静态文本和图像。1993年CGI(Common Gateway Interface)应用而生,CGI定义Web服务器和外部应用程序的通信接口标准,这样Web服务器可以通过CGI调用外部程序,外部程序根据Web服务器的请求生成动态内容。Java Web开发中的Servlet,原理基本类似。
2.PHP诞生
早期的CGI程序主要是用Perl和C语言,可读性和维护性比较差。为了满足处理复杂应用的需求,需要把HTML页面中固定部分保存起来(模板),把动态部分打上标记,处理web请求时,后端程序生成动态内容填充到“模板”中去,这样就形成最终返回的HTML,这便是PHP的执行过程。随后出现的ASP和JSP本质上也是一种支持脚本语言编程(VB和Java)的模板引擎。
3.Java Web应用
Web开发脚本语言,加上后端数据库技术,Web应用开始大杀四方。典型的Java Web应用架构:
- Web浏览器发送HTTP请求到服务端,被Controller(Servlet)获取并进行处理(例如参数解析、请求转发)
- Controller(Servlet)调用核心业务逻辑——Model部分
- Model进行数据库存取操作,并将操作结果返回给Model
- Controller(Servlet)将业务逻辑处理结果交给View(JSP),动态输出HTML内容
- 动态生成的HTML内容返回到浏览器显示
4.MVC框架
Spring MVC提供了一个DispacherServlet(可以Spring MVC是以Servlet技术为基础的),这个Servlet把Web应用中Servlet中经常要实现的功能封装起来并提供一层公共抽象,想象对应于一个Web请求后端要做的事情,- URL映射(对应HTTP URL和方法,应该调用什么代码)
- 权限验证(当前的URL是否允许当前用户访问)
- 参数解析(如何从Servlet中获得参数)
- 数据绑定(如何将Servlet中的参数,绑定到业务逻辑对象中)
- 数据验证(判断数据是否符合业务规则,比如邮件格式是否正确)
- 视图解析(使用哪个视图模板进行渲染)
- 模型传递与视图渲染(将数据传递给模板,并且在模板中引用)