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将渲染结果返回给客户端

相关文章
|
5月前
|
前端开发 Java 微服务
《深入理解Spring》:Spring、Spring MVC与Spring Boot的深度解析
Spring Framework是Java生态的基石,提供IoC、AOP等核心功能;Spring MVC基于其构建,实现Web层MVC架构;Spring Boot则通过自动配置和内嵌服务器,极大简化了开发与部署。三者层层演进,Spring Boot并非替代,而是对前者的高效封装与增强,适用于微服务与快速开发,而深入理解Spring Framework有助于更好驾驭整体技术栈。
|
12月前
|
前端开发 Java 测试技术
微服务——SpringBoot使用归纳——Spring Boot中的MVC支持——@RequestParam
本文介绍了 `@RequestParam` 注解的使用方法及其与 `@PathVariable` 的区别。`@RequestParam` 用于从请求中获取参数值(如 GET 请求的 URL 参数或 POST 请求的表单数据),而 `@PathVariable` 用于从 URL 模板中提取参数。文章通过示例代码详细说明了 `@RequestParam` 的常用属性,如 `required` 和 `defaultValue`,并展示了如何用实体类封装大量表单参数以简化处理流程。最后,结合 Postman 测试工具验证了接口的功能。
657 0
微服务——SpringBoot使用归纳——Spring Boot中的MVC支持——@RequestParam
|
12月前
|
JSON 前端开发 Java
微服务——SpringBoot使用归纳——Spring Boot中的MVC支持——@RequestBody
`@RequestBody` 是 Spring 框架中的注解,用于将 HTTP 请求体中的 JSON 数据自动映射为 Java 对象。例如,前端通过 POST 请求发送包含 `username` 和 `password` 的 JSON 数据,后端可通过带有 `@RequestBody` 注解的方法参数接收并处理。此注解适用于传递复杂对象的场景,简化了数据解析过程。与表单提交不同,它主要用于接收 JSON 格式的实体数据。
1200 0
|
12月前
|
前端开发 Java 微服务
微服务——SpringBoot使用归纳——Spring Boot中的MVC支持——@PathVariable
`@PathVariable` 是 Spring Boot 中用于从 URL 中提取参数的注解,支持 RESTful 风格接口开发。例如,通过 `@GetMapping(&quot;/user/{id}&quot;)` 可以将 URL 中的 `{id}` 参数自动映射到方法参数中。若参数名不一致,可通过 `@PathVariable(&quot;自定义名&quot;)` 指定绑定关系。此外,还支持多参数占位符,如 `/user/{id}/{name}`,分别映射到方法中的多个参数。运行项目后,访问指定 URL 即可验证参数是否正确接收。
723 0
|
12月前
|
JSON 前端开发 Java
微服务——SpringBoot使用归纳——Spring Boot中的MVC支持——@RequestMapping
@RequestMapping 是 Spring MVC 中用于请求地址映射的注解,可作用于类或方法上。类级别定义控制器父路径,方法级别进一步指定处理逻辑。常用属性包括 value(请求地址)、method(请求类型,如 GET/POST 等,默认 GET)和 produces(返回内容类型)。例如:`@RequestMapping(value = &quot;/test&quot;, produces = &quot;application/json; charset=UTF-8&quot;)`。此外,针对不同请求方式还有简化注解,如 @GetMapping、@PostMapping 等。
648 0
|
12月前
|
JSON 前端开发 Java
微服务——SpringBoot使用归纳——Spring Boot中的MVC支持——@RestController
本文主要介绍 Spring Boot 中 MVC 开发常用的几个注解及其使用方式,包括 `@RestController`、`@RequestMapping`、`@PathVariable`、`@RequestParam` 和 `@RequestBody`。其中重点讲解了 `@RestController` 注解的构成与特点:它是 `@Controller` 和 `@ResponseBody` 的结合体,适用于返回 JSON 数据的场景。文章还指出,在需要模板渲染(如 Thymeleaf)而非前后端分离的情况下,应使用 `@Controller` 而非 `@RestController`
458 0
|
9月前
|
设计模式 算法 架构师
京东二面:说下spring中常用的设计模式? (一个 深入骨髓的答案, 面试官跪下了)
京东二面:说下spring中常用的设计模式? (一个 深入骨髓的答案, 面试官跪下了)
京东二面:说下spring中常用的设计模式? (一个 深入骨髓的答案, 面试官跪下了)
|
前端开发 安全 Java
2025春招,Spring 面试题汇总
本文详细整理了2025年春招必备的Spring面试题,分为基础和高级两大部分,帮助求职者全面掌握Spring相关知识点,结合实际项目经验,提升面试成功率。内容涉及Spring框架、AOP、事务管理、数据库集成、Spring Boot、Spring Security、微服务架构等,助力你在春招中脱颖而出。
3025 0
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
462 2
|
8月前
|
前端开发 Java API
Spring Cloud Gateway Server Web MVC报错“Unsupported transfer encoding: chunked”解决
本文解析了Spring Cloud Gateway中出现“Unsupported transfer encoding: chunked”错误的原因,指出该问题源于Feign依赖的HTTP客户端与服务端的`chunked`传输编码不兼容,并提供了具体的解决方案。通过规范Feign客户端接口的返回类型,可有效避免该异常,提升系统兼容性与稳定性。
538 0