在线客服
扫描二维码
下载博学谷APP
扫描二维码
关注博学谷微信公众号
Spring MVC是spring框架的一个模块,是基于MVC的轻量级Web框架。Spring是目前Web开发中的一个很重要的部分。尤其在企业招聘相关开发者的时候,有大量的笔试和面试题目都与springMVC有关,下面是小编为大家整理的关于springMVC的一些面试题!

一、SpringMVC有什么优点?
SpringMVC是一个典型教科书式的MVC框架,对于初学者而言是非常好的。其他优点可以概括为:
1、SpringMVC可以支持各种试图技术,而不仅仅局限于JSP;
2、与Spring框架集成(如IoC容器、AOP等);
3、清晰的角色分配:前端控制器(dispatcherServlet) , 请求到处理器映射(handlerMapping), 处理器适配器(HandlerAdapter), 视图解析器(ViewResolver);
4、支持各种请求资源的映射策略;
二、SpringMVC的主要组件有什么?
(1)前端控制器 DispatcherServlet。接收请求、响应结果,相当于转发器,有了DispatcherServlet 就减少了其它组件之间的耦合度。
(2)处理器映射器HandlerMapping。根据请求的URL来查找Handler。
(3)处理器适配器HandlerAdapter。在编写Handler的时候要按照HandlerAdapter要求的规则去编写,这样适配器HandlerAdapter才可以正确的去执行Handler。
(4)处理器Handler。编写Handler时按照HandlerAdapter的要求去做,这样适配器才可以去正确执行Handler。
(5)视图解析器 ViewResolver。进行视图的解析,根据视图逻辑名解析成真正的视图(view)。
(6)视图View。View是一个接口, 它的实现类支持不同的视图类型(jsp,freemarker,pdf等等)。
三、SpringMVC和Struts2的区别有哪些?
1、springmvc的入口是一个servlet即前端控制器(DispatchServlet),而struts2入口是一个filter过虑器(StrutsPrepareAndExecuteFilter)。
2、springmvc是基于方法开发(一个url对应一个方法),请求参数传递到方法的形参,可以设计为单例或多例(建议单例),struts2是基于类开发,传递参数是通过类的属性,只能设计为多例。
3、Struts采用值栈存储请求和响应的数据,通过OGNL存取数据,springmvc通过参数解析器是将request请求内容解析,并给方法形参赋值,将数据和视图封装成ModelAndView对象,最后又将ModelAndView中的模型数据通过reques域传输到页面。Jsp视图解析器默认使用jstl。
四、SpringMVC的使用流程
(1)用户发送请求至前端控制器DispatcherServlet;
(2) DispatcherServlet收到请求后,调用HandlerMapping处理器映射器,请求获取Handle;
(3)处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet;
(4)DispatcherServlet 调用 HandlerAdapter处理器适配器;
(5)HandlerAdapter 经过适配调用 具体处理器(Handler,也叫后端控制器);
(6)Handler执行完成返回ModelAndView;
(7)HandlerAdapter将Handler执行结果ModelAndView返回给DispatcherServlet;
(8)DispatcherServlet将ModelAndView传给ViewResolver视图解析器进行解析;
(9)ViewResolver解析后返回具体View;
(10)DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)
(11)DispatcherServlet响应用户。
面试仅仅是进入企业的敲门砖,对于Java开发者而言,真正的实战技术才是职场晋升的保障。想学习更多SpringMVC相关实战技能,可以通过博学谷《Java开发全终端实战租房项目》学习,课程中包含目前主流后端技术框架SpringBoot、SpringMVC、Mybaits、Dubbo等来实现一个完整的租房项目。让你不仅仅掌握技术知识,更重要的是拥有实战能力。课程链接https://www.boxuegu.com/promote/detail-1234.html
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
Redis哨兵模式免费教程
哨兵(Sentinel)主要是为了解决在主从复制架构中从Redis宕机和主Redis宕机的情况。Redis-Sentinel是用于管理Redis集群:监控(Monitoring、提醒(Notification)、自动故障迁移(Automatic failover)。
5347
2019-12-04 11:26:30
分布式版本控制Git学习教程
Git可以理解为一种完全分布式的版本控制工具,它最大优势就是快速简单,强力支持非线性开发模式。因此,Git凭借着自身的魅力,得到了许多程序员和公司的喜爱。无论你是不是程序员,做不做程序开发,学习分布式版本控制系统Git都是有百利而无一害的。
5711
2020-01-08 19:44:10
Activity生命周期四种状态学习总结
随着Activiti的迅猛发展,很多人都开始学习Activiti的相关开发知识。相信了解过Activity生命周期的朋友都知道,其生命周期大致会有四种状态,即运行、暂停、停止和销毁。本文接下来将为大家归纳总结一下Activity生命周期的四种状态,并且为大家介绍一下Activie开发的相关学习课程,感兴趣的小伙伴赶紧看下去吧!
10835
2020-02-24 17:03:55
Java语言发展史及发展前景分析
Java语言发展史及发展前景分析,Java面向对象编程语言出生于1995年5月,Java功能强大和简单易用,应用领域非常广泛。Java语言具有安全、可靠等优势,且属于分布式、多线程和面向对象语言,对于这方面的人才需求量很大。
7132
2020-08-03 15:31:48
一个合格的Java程序员需要哪些东西?
Java程序员是一个技术岗位,从技术上和业务上都需要不断地提升自我,需要具备扎实的理论基础、有较强的自学能力、注重编码规范、注重团队精神和较好的沟通能力、较好的文档能力等。
4231
2021-06-08 14:06:37
