07 | 解耦是永恒的主题:MVC框架的发展
该思维导图由 AI 生成,仅供参考
JSP 和 Servlet
1. 概念介绍
- 深入了解
- 翻译
- 解释
- 总结
本文深入介绍了MVC框架的发展历程和技术特点。首先,文章讲解了JSP和Servlet的概念、工作原理和区别,并通过实际操作验证了JSP页面转化为Servlet的过程。随后,文章介绍了MVC模式的演进,包括JSP Model 1、JSP Model 2和MVC的一般化。其中,JSP Model 2将MVC分别通过JavaBean、JSP和Servlet解耦成三层,而MVC的一般化则展示了不同的MVC框架实现方式。此外,文章还介绍了MVC的变体MVP和MVVM,以及它们与MVC的区别和联系。总的来说,本文通过深入解析MVC框架的发展历程和技术特点,为读者提供了全面的理解和认识。
《全栈工程师修炼指南》,新⼈⾸单¥59
全部留言(19)
- 最新
- 精选
- Luciano李鑫请问MVP和MVC的主要区别体现在什么地方
作者回复: MVP 是 MVC 的变体,功能、层次和应用场景有所区别,下面是我的归纳,供参考。 简单说,对于 MVC 来说,Controller 层次上完全独立于 View,它可以跨多个视图、可以决定视图路由,更多存放的是控制逻辑,应用较为广泛,但多数在服务端代码中; 而对于 MVP 来说,Presenter 则其实是和 View 在相似的层次上,协调并把 Model 的数据绑定到指定 View 上去,主要用在纯粹 UI 的实现中。
2019-09-2928 - 易儿易老师,我一直有一个疑惑,希望老师能够解答:平时开发用的是第一种MVC,CRUD的代码基本上都是①xxxAction-②(Ixxx接口类-xxxServiceImpl实现类)-③xxxDao这“三层”结构,xxxAction属于Controller,那么(Ixxx接口类-xxxServiceImpl实现类)-xxxDao应该都属于Model层对吗?很多资料包括老师今天讲的都提到Model是由javabean的构成的,是不是我理解的javabean太狭隘了?(Ixxx接口类-xxxServiceImpl实现类)-xxxDao这些都可以称为javabean吗?
作者回复: 你提到的 ② 和 ③,都属于 Model 层的一部分。我认为bean 简单来说指的就是可重用的封装对象,文中也有解释。从这个角度来说的话,满足这个条件都可以算,所以你说这两个的是算的。
2019-09-302 - 不记年SpringMVC应该属于第一种,但是我们在编写控制器代码时,并没有显式的调用View,而是生成一个ViewModel.由前置控制器去做剩下的事情~
作者回复: 👍,补充说明一下,使用 Spring MVC 也是可以应用第二种的
2019-09-302 - William Ning一直不明白,mvc,mvp,mvvm等变体模式,跟前后端有关系吗,个人的理解是,后端框架多是mvc,「开发语言php」,前端似乎是mvp,mvvm之类的,难道就不存在反过来的,还是实践表明,目前的架构模式是较好的实践结果。望老师看到解答,谢谢。
作者回复: 模式本身来说,是没有前后端的限制的。不过,在实际使用中,因为解决的问题所在的层次特点,是带有明显的偏向的。
2019-09-301 - ttM-VVM就是M-automated-VP么?因为view和viewModel成为了命运共同体。 或者说VVM是“别人实现了,我直接用”的VP?比如Vue或React
作者回复: 第一条大致可以按你说的理解,但是第二条做个说明:VVM 和 MVVM 的区别在于实际的数据源头 M 消失了,因为有时候我们不需要它,比如设计一个可重用的组件。
2019-09-251 - 浅浅悠有个问题哈,这里的servlet和现在的servlet前端框架是一个东西吗
作者回复: Servlet 这个词应当就是指同一个概念
2021-09-22 - 加利率的钟摆老师好,有个问题想请教一下: 第二种MVC,“Controller 调用 Model 的接口发起数据更新操作,接着就直接转向最终的 View 去了;View 会调用 Model 去取得经过 Controller 更新操作以后的最新对象,渲染并返回给用户。” 如何保证View调用的Model已经更新完毕了?
作者回复: 这个取决于一致性的设计了。如果采用的是强一致性,比如关系数据库,那就可以保证在 View 调用的时候,前面 Controller 调用的更新能够被查询出来。
2019-10-17 - pyhhou1. 解耦后,JSP 更偏向于声明式编程,也就是描述一个页面上的属性,UI 呈现等等,可以把它看作是加强版的 HTML。servlet 更偏向于命令式编程,用于后台的数据交互,发出指令,接收 request,做的都是逻辑性较强的工作。但回过头来看 JSP 其实也是 servlet,只是为了让编写代码更加直观,易懂,这中间做了个转换 2. 工作中做的项目没有特别强的 MVC 的概念,之前设计的时候只考虑了 “前端” 和 “后端” 这两个概念,前端和后端分离,前端负责接收并响应界面用户的操作,然后通过 RESTful API 的方式和后端进行交互,后端根据请求进行 CRUD,然后响应请求。不是特别清楚 MVC 和一般设计相比的优势有哪些,还是说 MVC 架构下分工比较明确,代码比较容易区分开来?还望老师指点
作者回复: 不清楚你说的“MVC 和一般设计相比”,这里的“一般设计”指的是什么。
2019-10-013 - William Ning试了下「同样地,执行 catalina version,你也能看到 Tomcat 重要的环境信息:」提示没有该命令……,其他都正常,浏览器上能访问到的,系统变量配置了「CATALINA_HOME C:\Program Files\Apache Software Foundation\Tomcat 9.0」,也重启过电脑,一样的结果,原因是什么呢。
作者回复: 在 Windows 下你看看 Tomcat 的 bin 目录下有没有 version.bat,启动则是 startup.bat。
2019-09-306 - 易儿易很奇怪,我输入catalina run命令后是这个样子的jdk1.8,tomcat9,catalina run 多次重复输入都是一样,不知道是哪里出的问题,只能通过startup.bat启动 Usage: catalina ( commands ... ) commands: debug Start Catalina in a debugger debug -security Debug Catalina with a security manager jpda start Start Catalina under JPDA debugger run Start Catalina in the current window run -security Start in the current window with security manager start Start Catalina in a separate window start -security Start in a separate window with security manager stop Stop Catalina configtest Run a basic syntax check on server.xml version What version of tomcat are you running?
作者回复: 从你描述来看,能运行 *.bat,是 Windows 系统吧,那就通过 startup.bat 启动吧。
2019-09-30