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对象传入

相关文章

  • Java编程语言特性和优势

    Java编程语言特性和优势

    这篇文章主要介绍了Java编程语言特性和优势,Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,同时也增加了垃圾回收机制,释放掉不被使用的内存空间,解决了管理内存空间的烦恼,下面来聊聊Java编程语言特性和优势吧
    2022-01-01
  • springboot 之jpa高级查询操作

    springboot 之jpa高级查询操作

    这篇文章主要介绍了springboot 之jpa高级查询操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • Java设计模式之策略模式示例详解

    Java设计模式之策略模式示例详解

    这篇文章主要为大家详细介绍了Java的策略模式,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • Java代理模式与动态代理之间的关系以及概念

    Java代理模式与动态代理之间的关系以及概念

    代理模式是开发中常见的一种设计模式,使用代理模式可以很好的对程序进行横向扩展。动态代理:代理类在程序运行时被创建的代理方式。关键在于动态,程序具有了动态特性,可以在运行期间根据不同的目标对象生成动态代理对象
    2023-02-02
  • 解决SpringBoot内嵌Tomcat并发容量的问题

    解决SpringBoot内嵌Tomcat并发容量的问题

    这篇文章主要介绍了解决SpringBoot内嵌Tomcat并发容量的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • Spring整合Mybatis的全过程

    Spring整合Mybatis的全过程

    这篇文章主要介绍了Spring整合Mybatis的全过程,包括spring配置文件书写映射器接口的实例代码,本文给大家介绍的非常详细,需要的朋友可以参考下
    2021-06-06
  • SpringCloud持久层框架MyBatis Plus的使用与原理解析

    SpringCloud持久层框架MyBatis Plus的使用与原理解析

    MyBatisPlus为MyBatis的增强版,专注于简化数据库操作,提供自动化CRUD、内置分页和乐观锁等功能,极大提升开发效率,在SpringCloud微服务架构中,MyBatisPlus通过插件机制和自动生成代码功能,有效支持企业级应用和分布式系统的开发
    2024-10-10
  • Maven中利用assembly插件打包jar包

    Maven中利用assembly插件打包jar包

    本文详细讲解了Maven中利用assembly插件打包jar包的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-12-12
  • java开发WMS仓库商品预警需求示例解析

    java开发WMS仓库商品预警需求示例解析

    这篇文章主要为大家介绍了java开发WMS仓库商品预警需求示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-04-04
  • Java分布式锁、分布式ID和分布式事务的实现方案

    Java分布式锁、分布式ID和分布式事务的实现方案

    在分布式系统中,分布式锁、分布式ID和分布式事务是常用的组件,用于解决并发控制、唯一标识和数据一致性的问题,本文将介绍Java中常用的分布式锁、分布式ID和分布式事务的实现方案,并通过具体的示例代码演示它们的用法和应用场景
    2023-06-06

最新评论