面试题一Spring MVC

面试题一Spring MVC

  1. Spring MVC是什么

    Spring MVC是一个基于Java实现了MVC设计模式的请求驱动类型的轻量级Web框架。通过把model、view、controller分离,将Web层进行解耦,把负责的Web应用分成逻辑清晰的几部分,简化开发、减少出错、方便组内开发人员之间的配合。

  2. Spring MVC的执行流程?
    面试题一Spring MVC

    第一步:发起请求到前端控制器(DispatcherServlet)

    第二步:前端控制器请求HandlerMapping查找 Handler。可以根据xml配置、注解进行查找

    第三步:处理器映射器HandlerMapping向前端控制器返回Handler.

    第四步:前端控制器调用处理器适配器去执行Handler

    第五步:Handler执行完成给适配器返回ModelAndView

    第六步:处理器适配器向前端控制器返回ModelAndView

    第七步:前端控制器请求视图解析器去进行视图解析。根据逻辑视图名解析成真正的视图(jsp)

    第八步:视图解析器向前端控制器返回View

    第九步:前端控制器进行视图渲染,视图渲染将模型数据(在ModelAndView对象中)填充到request域

    第十步:前端控制器向用户响应结果

  3. Spring MVC的优点?

    • 可以支持各种视图技术,而不仅仅局限于JSP
    • 与Spring框架集成
    • 清晰的角色分配:前端控制器(dispatcherServlet) , 请求到处理器映射(handlerMapping), 处理器适配器(HandlerAdapter), 视图解析器(ViewResolver)。
    • 支持各种请求资源的映射策略。
  4. 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等等)

  5. Spring MVC和Struts2的区别有哪些?

    • Spring MVC的入口是一个servlet即前端控制器(DispachServlet),而Strutes2入口时一个filter过滤器(StrutsPrepareAndExecuteFilter)。
    • springmvc是基于方法开发(一个url对应一个方法),请求参数传递到方法的形参,可以设计为单例或多例(建议单例),struts2是基于类开发,传递参数是通过类的属性,只能设计为多例。
    • Struts采用值栈存储请求和响应的数据,通过OGNL存取数据,springmvc通过参数解析器是将request请求内容解析,并给方法形参赋值,将数据和视图封装成ModelAndView对象,最后又将ModelAndView中的模型数据通过reques域传输到页面。Jsp视图解析器默认使用jstl。