面试题一Spring MVC
面试题一Spring MVC
-
Spring MVC是什么?
Spring MVC是一个基于Java实现了MVC设计模式的请求驱动类型的轻量级Web框架。通过把model、view、controller分离,将Web层进行解耦,把负责的Web应用分成逻辑清晰的几部分,简化开发、减少出错、方便组内开发人员之间的配合。
-
Spring MVC的执行流程?
第一步:发起请求到前端控制器(DispatcherServlet)
第二步:前端控制器请求HandlerMapping查找 Handler。可以根据xml配置、注解进行查找
第三步:处理器映射器HandlerMapping向前端控制器返回Handler.
第四步:前端控制器调用处理器适配器去执行Handler
第五步:Handler执行完成给适配器返回ModelAndView
第六步:处理器适配器向前端控制器返回ModelAndView
第七步:前端控制器请求视图解析器去进行视图解析。根据逻辑视图名解析成真正的视图(jsp)
第八步:视图解析器向前端控制器返回View
第九步:前端控制器进行视图渲染,视图渲染将模型数据(在ModelAndView对象中)填充到request域
第十步:前端控制器向用户响应结果
-
Spring MVC的优点?
- 可以支持各种视图技术,而不仅仅局限于JSP
- 与Spring框架集成
- 清晰的角色分配:前端控制器(dispatcherServlet) , 请求到处理器映射(handlerMapping), 处理器适配器(HandlerAdapter), 视图解析器(ViewResolver)。
- 支持各种请求资源的映射策略。
-
Spring MVC的主要组件?
(1)前端控制器 DispatcherServlet(不需要程序员开发)
作用:接收请求、响应结果,相当于转发器,有了DispatcherServlet 就减少了其它组件之间的耦合度。
(2)处理器映射器HandlerMapping(不需要程序员开发)
作用:根据请求的URL来查找Handler
(3)处理器适配器HandlerAdapter
注意:在编写Handler的时候要按照HandlerAdapter要求的规则去编写,这样适配器HandlerAdapter才可以正确的去执行Handler。
(4)处理器Handler(需要程序员开发)
(5)视图解析器 ViewResolver(不需要程序员开发)
作用:进行视图的解析,根据视图逻辑名解析成真正的视图(view)
(6)视图View(需要程序员开发jsp)
View是一个接口, 它的实现类支持不同的视图类型(jsp,freemarker,pdf等等)
-
Spring MVC和Struts2的区别有哪些?
- Spring MVC的入口是一个servlet即前端控制器(DispachServlet),而Strutes2入口时一个filter过滤器(StrutsPrepareAndExecuteFilter)。
- springmvc是基于方法开发(一个url对应一个方法),请求参数传递到方法的形参,可以设计为单例或多例(建议单例),struts2是基于类开发,传递参数是通过类的属性,只能设计为多例。
- Struts采用值栈存储请求和响应的数据,通过OGNL存取数据,springmvc通过参数解析器是将request请求内容解析,并给方法形参赋值,将数据和视图封装成ModelAndView对象,最后又将ModelAndView中的模型数据通过reques域传输到页面。Jsp视图解析器默认使用jstl。