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

相关文章
|
9天前
|
JSON 前端开发 Java
SSM:SpringMVC
本文介绍了SpringMVC的依赖配置、请求参数处理、注解开发、JSON处理、拦截器、文件上传下载以及相关注意事项。首先,需要在`pom.xml`中添加必要的依赖,包括Servlet、JSTL、Spring Web MVC等。接着,在`web.xml`中配置DispatcherServlet,并设置Spring MVC的相关配置,如组件扫描、默认Servlet处理器等。然后,通过`@RequestMapping`等注解处理请求参数,使用`@ResponseBody`返回JSON数据。此外,还介绍了如何创建和配置拦截器、文件上传下载的功能,并强调了JSP文件的放置位置,避免404错误。
|
12天前
|
设计模式 缓存 Java
面试题:谈谈Spring用到了哪些设计模式?
面试题:谈谈Spring用到了哪些设计模式?
|
16天前
|
前端开发 Java 应用服务中间件
【Spring】Spring MVC的项目准备和连接建立
【Spring】Spring MVC的项目准备和连接建立
35 2
|
17天前
|
Java 程序员 Spring
Spring事务的1道面试题
每次聊起Spring事务,好像很熟悉,又好像很陌生。本篇通过一道面试题和一些实践,来拆解几个Spring事务的常见坑点。
Spring事务的1道面试题
|
1月前
|
缓存 前端开发 Java
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
Soring Boot的起步依赖、启动流程、自动装配、常用的注解、Spring MVC的执行流程、对MVC的理解、RestFull风格、为什么service层要写接口、MyBatis的缓存机制、$和#有什么区别、resultType和resultMap区别、cookie和session的区别是什么?session的工作原理
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
|
18天前
|
XML 前端开发 Java
Spring,SpringBoot和SpringMVC的关系以及区别 —— 超准确,可当面试题!!!也可供零基础学习
本文阐述了Spring、Spring Boot和Spring MVC的关系与区别,指出Spring是一个轻量级、一站式、模块化的应用程序开发框架,Spring MVC是Spring的一个子框架,专注于Web应用和网络接口开发,而Spring Boot则是对Spring的封装,用于简化Spring应用的开发。
54 0
Spring,SpringBoot和SpringMVC的关系以及区别 —— 超准确,可当面试题!!!也可供零基础学习
|
1月前
|
XML Java 开发者
经典面试---spring IOC容器的核心实现原理
作为一名拥有十年研发经验的工程师,对Spring框架尤其是其IOC(Inversion of Control,控制反转)容器的核心实现原理有着深入的理解。
80 3
|
1月前
|
XML 缓存 前端开发
springMVC02,restful风格,请求转发和重定向
文章介绍了RESTful风格的基本概念和特点,并展示了如何使用SpringMVC实现RESTful风格的请求处理。同时,文章还讨论了SpringMVC中的请求转发和重定向的实现方式,并通过具体代码示例进行了说明。
springMVC02,restful风格,请求转发和重定向
|
2月前
|
Java 数据库连接 Spring
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
文章是关于Spring、SpringMVC、Mybatis三个后端框架的超详细入门教程,包括基础知识讲解、代码案例及SSM框架整合的实战应用,旨在帮助读者全面理解并掌握这些框架的使用。
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
|
2月前
|
存储 缓存 Java
面试问Spring循环依赖?今天通过代码调试让你记住
该文章讨论了Spring框架中循环依赖的概念,并通过代码示例帮助读者理解这一概念。
面试问Spring循环依赖?今天通过代码调试让你记住