Spring MVC高频面试题

简介: 1.@Controller和@RestController的区别2.Spring MVC的常用注解有哪些?3.Spring MVC的组要组件有哪些?4.你对Spring MVC的理解5.Spring MVC怎么实现过滤器和拦截器

Spring MVC合集

@Controller和@RestController的区别?

 返回值不同

   @Controller返回的是一个视图,而@RestCobtroller返回的是一个对象

  默认响应类型不同

   @Controller默认响应类型是html,@RestController默认响应类型是JSON

  使用场景不同

  @Controller适合用于传统的web应用程序,而@RestController适合用于RESTful风格的web服务,尤其是前后端分离的web应用程序

Spring MVC常用的注解有哪些?

  @Controller

   用于标记一个类是Spring MVC的Controller,处理HTTP请求

  @RequestMapping

   用于映射http请求路径和请求方法

  @PathVariable

   用于获取请求url中的变量值

  @RequestParam

   用于获取请求参数的值

  @ResponseBody

   将Controller处理结果直接返回给客户端,而不是通过视图解析器进行视图渲染

  @ModelAttribute

   将请求参数绑定到Model中,使其在视图可以直接访问

  @ExceptionHandler

   用于定于全局异常处理方法

 Spring MVC的主要组件有哪些?

 DispatcherServlet

   DispatcherServlet是Spring MVC的核心组件,负责接收客户请求,并将请求转发给对应的控制器。同时DispatcherServlet也负责处理异常、执行过滤器、视图解析和渲染任务等

  HandleMapping

   HandlerMapping负责将客户端请求映射到对应的控制器进行处理。也实现了RequestMappingHandlerMapping

  Controller

   Controller负责处理客户端请求,进行业务逻辑处理,并返回响应结果

  ViewResolver

   ViewResolver负责将控制器处理后返回的数据映射到对应的视图渲染

  ModelAndView

   封装控制器返回的数据和视图

  HandlerInterceptor

   HandlerInterceptor负责在请求处理前、请求处理后和视图渲染前拦截请求

Spring MVC的理解

 组成

   Spring MVC是Spring Framework的一部分

  特点

  灵活性

    Spring MVC采用松耦合的设计,允许开发人员根据自己的需求来选择使用哪些组件

   可扩产性

    Spring MVC提供了很多扩展点,是开发人员轻松的添加自己的功能

  高能性

    Spring MVC采用基于注解的控制器(Controller),避免XML配置文件的解析和加载

   安全性

    Spring MVC提供了很多种安全机制,可以有效地保护应用程序的安全

 采用MVC模式

   模型

    表示应用程序的数据和业务逻辑,有javaBean组成,被控制器用于处理用户请求

   视图

    是用户界面,通常是一个html页面,用来展现模型中的数据

  控制器

    是应用程序的核心,负责接收和处理用户请求,并将请求转发给模型和视图,将处理结果返回给客户端

 应用场景

   RESTful服务

   前后端分离

Spring MVC怎么实现过滤器或者拦截器

 过滤器

   通过实现javax.servlet.Filter接口来实现过滤器。需要在web.xml中配置过滤器,即在<filter>标签中配置<filter-name>和<filter-class>,并在<filter-mapping>标签中配置过滤器的映射路径和顺序。

 拦截器

   通过实现org.springframework.web.servlet.HandlerInterceptor接口来实现拦截器。需要在Spring MVC配置文件中配置拦截器,即在mvc:interceptors标签中配置<bean>,并设置拦截器的顺序和映射路径。

用户请求到springMVC处理流程

  1.用户发起请求

 2. DispatcherServlet接收请求

 3. HandlerMapping进行请求映射

 4. Controller处理请求

 5.Controller返回ModelAndView

 6. DispatcherServle将ModolAndView交给ViewResolver进行视图解析

 7. View进行视图渲染

 8. DispatcherServlet将渲染结果返回给客户端

相关文章
|
1月前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
76 2
|
9天前
|
设计模式 前端开发 Java
步步深入SpringMvc DispatcherServlet源码掌握springmvc全流程原理
通过对 `DispatcherServlet`源码的深入剖析,我们了解了SpringMVC请求处理的全流程。`DispatcherServlet`作为前端控制器,负责请求的接收和分发,处理器映射和适配负责将请求分派到具体的处理器方法,视图解析器负责生成和渲染视图。理解这些核心组件及其交互原理,有助于开发者更好地使用和扩展SpringMVC框架。
24 4
|
22天前
|
存储 缓存 Java
Spring面试必问:手写Spring IoC 循环依赖底层源码剖析
在Spring框架中,IoC(Inversion of Control,控制反转)是一个核心概念,它允许容器管理对象的生命周期和依赖关系。然而,在实际应用中,我们可能会遇到对象间的循环依赖问题。本文将深入探讨Spring如何解决IoC中的循环依赖问题,并通过手写源码的方式,让你对其底层原理有一个全新的认识。
41 2
|
25天前
|
Java 关系型数据库 数据库
京东面试:聊聊Spring事务?Spring事务的10种失效场景?加入型传播和嵌套型传播有什么区别?
45岁老架构师尼恩分享了Spring事务的核心知识点,包括事务的两种管理方式(编程式和声明式)、@Transactional注解的五大属性(transactionManager、propagation、isolation、timeout、readOnly、rollbackFor)、事务的七种传播行为、事务隔离级别及其与数据库隔离级别的关系,以及Spring事务的10种失效场景。尼恩还强调了面试中如何给出高质量答案,推荐阅读《尼恩Java面试宝典PDF》以提升面试表现。更多技术资料可在公众号【技术自由圈】获取。
|
27天前
|
前端开发 Java 开发者
Spring MVC中的请求映射:@RequestMapping注解深度解析
在Spring MVC框架中,`@RequestMapping`注解是实现请求映射的关键,它将HTTP请求映射到相应的处理器方法上。本文将深入探讨`@RequestMapping`注解的工作原理、使用方法以及最佳实践,为开发者提供一份详尽的技术干货。
103 2
|
2月前
|
JSON 前端开发 Java
SSM:SpringMVC
本文介绍了SpringMVC的依赖配置、请求参数处理、注解开发、JSON处理、拦截器、文件上传下载以及相关注意事项。首先,需要在`pom.xml`中添加必要的依赖,包括Servlet、JSTL、Spring Web MVC等。接着,在`web.xml`中配置DispatcherServlet,并设置Spring MVC的相关配置,如组件扫描、默认Servlet处理器等。然后,通过`@RequestMapping`等注解处理请求参数,使用`@ResponseBody`返回JSON数据。此外,还介绍了如何创建和配置拦截器、文件上传下载的功能,并强调了JSP文件的放置位置,避免404错误。
|
2月前
|
设计模式 缓存 Java
面试题:谈谈Spring用到了哪些设计模式?
面试题:谈谈Spring用到了哪些设计模式?
|
2月前
|
前端开发 Java 应用服务中间件
【Spring】Spring MVC的项目准备和连接建立
【Spring】Spring MVC的项目准备和连接建立
65 2
|
3月前
|
缓存 前端开发 Java
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
Soring Boot的起步依赖、启动流程、自动装配、常用的注解、Spring MVC的执行流程、对MVC的理解、RestFull风格、为什么service层要写接口、MyBatis的缓存机制、$和#有什么区别、resultType和resultMap区别、cookie和session的区别是什么?session的工作原理
|
2月前
|
Java 程序员 Spring
Spring事务的1道面试题
每次聊起Spring事务,好像很熟悉,又好像很陌生。本篇通过一道面试题和一些实践,来拆解几个Spring事务的常见坑点。
Spring事务的1道面试题