Java经典面试题汇总:Spring MVC

 更新时间:2021年07月21日 11:32:18   作者:让程序飞  
本篇总结的是Spring MVC框架相关的面试题,后续会持续更新,希望我的分享可以帮助到正在备战面试的实习生或者已经工作的同行,如果发现错误还望大家多多包涵,不吝赐教,谢谢

1. 什么是Spring MVC ?

Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建WEB 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的Spring MVC框架或集成其他MVC开发框架,该框架通过把Model,View,Controller分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分,简化了开发。

2. Spring MVC 有哪些组件?

  • 前置控制器 DispatcherServlet。
  • 映射控制器 HandlerMapping。
  • 处理器 Controller。
  • 模型和视图 ModelAndView。
  • 视图解析器 ViewResolver。

3. 说一下 Spring MVC 运行流程?

(1)用户发送请求至前端控制器DispatcherServlet;

(2)DispatcherServlet收到请求后,调用HandlerMapping处理器映射器,请求获取Handler;

(3)处理器映射器根据请求url找到具体的处理器Handler,生成处理器对象及处理器拦截器(如果有则生成),一并返回给DispatcherServlet;

(4)DispatcherServlet 调用 HandlerAdapter处理器适配器,请求执行Handler;

(5)HandlerAdapter 经过适配调用 具体处理器进行处理业务逻辑;

(6)Handler执行完成返回ModelAndView;

(7)HandlerAdapter将Handler执行结果ModelAndView返回给DispatcherServlet;

(8)DispatcherServlet将ModelAndView传给ViewResolver视图解析器进行解析;

(9)ViewResolver解析后返回具体View;

(10)DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)

(11)DispatcherServlet响应用户。

4. Spring MVC的优点:

  • 它是基于组件技术的。全部的应用对象,无论控制器和视图,还是业务对象之类的都是 java组件.并且和Spring提供的其他基础结构紧密集成
  • 不依赖于Servlet API(目标虽是如此,但是在实现的时候确实是依赖于Servlet的)
  • 可以任意使用各种视图技术,而不仅仅局限于JSP
  • 支持各种请求资源的映射策略

5. @RequestMapping 的作用是什么?

将 http 请求映射到相应的类/方法上。

6. 如果在拦截请求中,我想拦截get方式提交的方法,怎么配置?

可以在@RequestMapping注解里面加上method=RequestMethod.GET,或者使用@GetMapping。

7. SpringMVC常用的注解有哪些?

@RequestMapping:用于处理请求 url 映射的注解,可用于类或方法上。用于类上,则表示类中的所有响应请求的方法都是以该地址作为父路径。

@RequestBody:注解实现接收http请求的json数据,将json转换为java对象。

@ResponseBody:注解实现将conreoller方法返回对象转化为json对象响应给客户。

8. SpingMvc中的控制器的注解一般用那个,有没有别的注解可以替代?

用@Conntroller注解,表示是表现层,不能用用别的注解代替。

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

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

10. 怎么样在方法里面得到Request,或者Session

在方法的形参中声明request,SpringMvc就会自动把request对象传入

相关文章

  • springboot vue 跨域问题的解决

    springboot vue 跨域问题的解决

    这篇文章主要介绍了springboot vue 跨域问题的解决,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-10-10
  • mybatis自动填充时间字段示例代码

    mybatis自动填充时间字段示例代码

    这篇文章主要给大家介绍了关于mybatis自动填充时间字段的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-01-01
  • Mybatis参数处理的几种方法小结

    Mybatis参数处理的几种方法小结

    在Mybatis中如何处理参数是一个非常重要的环节,本文将详细介绍 Mybatis 的参数处理机制,包括传入参数和返回参数的处理方式,具有一定的参考价值,感兴趣的可以了解一下
    2023-08-08
  • MyBatis实现MySQL批量插入的示例代码

    MyBatis实现MySQL批量插入的示例代码

    本文主要介绍了MyBatis实现MySQL批量插入的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • Spring学习笔记之RestTemplate使用小结

    Spring学习笔记之RestTemplate使用小结

    这篇文章主要给大家介绍了关于Spring学习笔记之RestTemplate使用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-08-08
  • 获取Spring的上下文环境ApplicationContext的最简单方式

    获取Spring的上下文环境ApplicationContext的最简单方式

    这篇文章主要介绍了获取Spring的上下文环境ApplicationContext的最简单方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • Java基础之面向对象机制(多态、继承)底层实现

    Java基础之面向对象机制(多态、继承)底层实现

    这篇文章主要介绍了Java基础之面向对象机制(多态、继承)底层实现,文中有非常详细的代码示例,对正在学习java的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04
  • RocketMQ消息发送流程源码剖析

    RocketMQ消息发送流程源码剖析

    这篇文章主要为大家介绍了RocketMQ消息发送流程源码剖析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • @CacheEvict + redis实现批量删除缓存

    @CacheEvict + redis实现批量删除缓存

    这篇文章主要介绍了@CacheEvict + redis实现批量删除缓存方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • 详解java中的阻塞队列

    详解java中的阻塞队列

    这篇文章主要介绍了java中的阻塞队列的相关知识,文中代码非常详细,供大家参考和学习,感兴趣的朋友可以了解下
    2020-06-06

最新评论