• Luciano李鑫
    2019-09-29
    请问MVP和MVC的主要区别体现在什么地方

    作者回复: MVP 是 MVC 的变体,功能、层次和应用场景有所区别,下面是我的归纳,供参考。

    简单说,对于 MVC 来说,Controller 层次上完全独立于 View,它可以跨多个视图、可以决定视图路由,更多存放的是控制逻辑,应用较为广泛,但多数在服务端代码中;

    而对于 MVP 来说,Presenter 则其实是和 View 在相似的层次上,协调并把 Model 的数据绑定到指定 View 上去,主要用在纯粹 UI 的实现中。

    
     3
  • tt
    2019-09-25
    M-VVM就是M-automated-VP么?因为view和viewModel成为了命运共同体。

    或者说VVM是“别人实现了,我直接用”的VP?比如Vue或React

    作者回复: 第一条大致可以按你说的理解,但是第二条做个说明:VVM 和 MVVM 的区别在于实际的数据源头 M 消失了,因为有时候我们不需要它,比如设计一个可重用的组件。

    
     1
  • 加利率的钟摆
    2019-10-17
    老师好,有个问题想请教一下:
    第二种MVC,“Controller 调用 Model 的接口发起数据更新操作,接着就直接转向最终的 View 去了;View 会调用 Model 去取得经过 Controller 更新操作以后的最新对象,渲染并返回给用户。”

    如何保证View调用的Model已经更新完毕了?

    作者回复: 这个取决于一致性的设计了。如果采用的是强一致性,比如关系数据库,那就可以保证在 View 调用的时候,前面 Controller 调用的更新能够被查询出来。

    
    
  • pyhhou
    2019-10-01
    1. 解耦后,JSP 更偏向于声明式编程,也就是描述一个页面上的属性,UI 呈现等等,可以把它看作是加强版的 HTML。servlet 更偏向于命令式编程,用于后台的数据交互,发出指令,接收 request,做的都是逻辑性较强的工作。但回过头来看 JSP 其实也是 servlet,只是为了让编写代码更加直观,易懂,这中间做了个转换

    2. 工作中做的项目没有特别强的 MVC 的概念,之前设计的时候只考虑了 “前端” 和 “后端” 这两个概念,前端和后端分离,前端负责接收并响应界面用户的操作,然后通过 RESTful API 的方式和后端进行交互,后端根据请求进行 CRUD,然后响应请求。不是特别清楚 MVC 和一般设计相比的优势有哪些,还是说 MVC 架构下分工比较明确,代码比较容易区分开来?还望老师指点
    展开

    作者回复: 不清楚你说的“MVC 和一般设计相比”,这里的“一般设计”指的是什么。

     2
    
  • 易儿易
    2019-09-30
    老师,我一直有一个疑惑,希望老师能够解答:平时开发用的是第一种MVC,CRUD的代码基本上都是①xxxAction-②(Ixxx接口类-xxxServiceImpl实现类)-③xxxDao这“三层”结构,xxxAction属于Controller,那么(Ixxx接口类-xxxServiceImpl实现类)-xxxDao应该都属于Model层对吗?很多资料包括老师今天讲的都提到Model是由javabean的构成的,是不是我理解的javabean太狭隘了?(Ixxx接口类-xxxServiceImpl实现类)-xxxDao这些都可以称为javabean吗?

    作者回复: 你提到的 ② 和 ③,都属于 Model 层的一部分。我认为bean 简单来说指的就是可重用的封装对象,文中也有解释。从这个角度来说的话,满足这个条件都可以算,所以你说这两个的是算的。

    
    
  • ning先森
    2019-09-30
    一直不明白,mvc,mvp,mvvm等变体模式,跟前后端有关系吗,个人的理解是,后端框架多是mvc,「开发语言php」,前端似乎是mvp,mvvm之类的,难道就不存在反过来的,还是实践表明,目前的架构模式是较好的实践结果。望老师看到解答,谢谢。

    作者回复: 模式本身来说,是没有前后端的限制的。不过,在实际使用中,因为解决的问题所在的层次特点,是带有明显的偏向的。

    
    
  • ning先森
    2019-09-30
    试了下「同样地,执行 catalina version,你也能看到 Tomcat 重要的环境信息:」提示没有该命令……,其他都正常,浏览器上能访问到的,系统变量配置了「CATALINA_HOME C:\Program Files\Apache Software Foundation\Tomcat 9.0」,也重启过电脑,一样的结果,原因是什么呢。

    作者回复: 在 Windows 下你看看 Tomcat 的 bin 目录下有没有 version.bat,启动则是 startup.bat。

     5
    
  • 不记年
    2019-09-30
    SpringMVC应该属于第一种,但是我们在编写控制器代码时,并没有显式的调用View,而是生成一个ViewModel.由前置控制器去做剩下的事情~

    作者回复: 👍,补充说明一下,使用 Spring MVC 也是可以应用第二种的

    
    
  • 易儿易
    2019-09-30
    很奇怪,我输入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 启动吧。

    
    
  • Paradise丶朽木
    2019-09-27
    刚入职时写过一点jsp,后来是freemaker模板引擎,现在是前后端分离~回答下第二个问题,我觉得fremaker那种方式应该是典型的第一种,controller负责接收请求,处理参数,调用service查询数据,封装成ModelAndView,再由freemaker渲染页面返回。

    作者回复: 👍

    
    
  • Mandalorian
    2019-09-26
    Vue: MVVM -> model view viewmodel
    React: MVC -> model view controller
    Angular: MVW -> model view whatever
    
    
  • leslie
    2019-09-26
    先打卡吧:这块确实是我的弱项,趁着马上到来的长假好好把MVC这块补了、、、
    
    
  • 靠人品去赢
    2019-09-25
    之前就曾听人说过JSP是一种特殊的Servlet,现在看说的不完全正确,JSP会转化成一种特殊的servlet返回请求结果。

    作者回复: 嗯,最重要的是理解原理。不严格地讲,这些说法都没问题。

    
    
  • 桃源小盼
    2019-09-25
    接口服务里有service,它属于view层还是model层?

    作者回复: 你的描述有一些简单,什么是“接口服务里有service”?

    
    
我们在线,来聊聊吧