MVC面试题及答案.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

MVC面试题及答案

一、基础概念题

请用自己的话解释MVC的核心思想,以及各层的主要职责?

答:MVC是一种分层设计模式,核心是“职责分离”,把业务逻辑、数据、界面展示拆成三个独立部分,降低耦合度。

Model(模型):管“数据和业务逻辑”,比如用户信息实体类、数据校验规则、调用数据库的CRUD方法,不关心界面怎么展示;

View(视图):管“界面展示”,只负责把Model的数据渲染出来,比如JSP页面、Vue组件,不处理业务逻辑,像点击按钮只触发请求,不写判断逻辑;

Controller(控制器):管“请求分发和协调”,接收用户请求(比如点击“提交订单”),调用Model处理业务,再告诉View用哪个页面展示结果,相当于“中间调度员”。

为什么项目中要使用MVC模式?不用会有什么问题?

答:用MVC主要是为了好维护、好协作。比如前端改页面样式,只动View层,不用改后端逻辑;后端改业务规则,只动Model层,前端不用变。

不用的话会出现“代码一锅粥”,比如把SQL语句、页面渲染、业务判断全写在一个文件里,后续改一个小功能要翻几百行代码,还容易影响其他功能,多人协作也会互相冲突。

二、框架实践题(以SpringMVC为例)

SpringMVC的核心组件有哪些?请说下一次请求的完整流程?

答:核心组件主要有DispatcherServlet(前端控制器)、HandlerMapping(处理器映射器)、HandlerAdapter(处理器适配器)、ViewResolver(视图解析器)。

完整请求流程:

用户发请求(比如http://xxx/login),先到DispatcherServlet(所有请求的入口);

DispatcherServlet问HandlerMapping:“这个请求该找哪个Controller处理?”,HandlerMapping返回对应的Controller方法(比如LoginController的login方法);

DispatcherServlet再让HandlerAdapter去调用这个Controller方法,Controller里会调用Service、Dao处理业务,最后返回一个ModelAndView(含数据和视图名,比如“userList”);

DispatcherServlet把ModelAndView传给ViewResolver,ViewResolver解析出实际视图路径(比如把“userList”变成/WEB-INF/views/userList.jsp);

视图渲染Model里的数据,生成HTML返回给用户。

SpringMVC中,怎么把请求参数绑定到Controller的方法参数上?比如前端传“username”和“age”,后端怎么接收?

答:常见的有三种方式:

直接在方法参数里写对应名称,比如publicStringlogin(Stringusername,Integerage),SpringMVC会自动按参数名匹配前端传的值(注意前端参数名要和后端一致);

用@RequestParam注解,比如@RequestParam(user_name)Stringusername,适合前端参数名和后端不一致的情况(比如前端传user_name,后端用username);

用实体类接收,比如定义一个User类,有username和age属性,方法参数写publicStringlogin(Useruser),SpringMVC会自动把参数值赋给User对象的对应属性。

三、区别与场景题

MVC和MVP、MVVM的主要区别是什么?实际项目中怎么选?

答:核心区别在“View和Model的交互方式”以及“是否有中间层”:

MVC:View可以直接访问Model(比如JSP里用EL表达式取Model数据),Controller是调度者;

MVP:View不能直接碰Model,必须通过Presenter(Presenter相当于增强版Controller),Presenter里写所有交互逻辑,适合需要严格分离视图和业务的场景(比如桌面应用);

MVVM:View和Model通过ViewModel双向绑定(比如Vue的v-model),ViewModel处理数据转换和逻辑,不用手动操作DOM,适合前端单页应用(SPA);

选的话:后端Java项目常用MVC(SpringMVC),前端Vue/React项目常用MVVM,复杂

文档评论(0)

151****9429 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档