Spring MVC (面试篇)

目录

[什么是Spring MVC? 简单介绍下你对Spring MVC的理解?](#什么是Spring MVC? 简单介绍下你对Spring MVC的理解?)

SpringMVC的优点

[Spring MVC的主要组件?](#Spring MVC的主要组件?)

[Spring MVC常用的注解由哪些?](#Spring MVC常用的注解由哪些?)

@Controller注解的作用


加油兄弟们 ! ! !

什么是Spring MVC? 简单介绍下你对Spring MVC的理解?

Spring MVC是一个基于Java的实现了MVC模式的请求驱动类的轻量级Web框架,通过把模型-视图-控制器分离,将web层进行职责解耦,把复杂的web应用成分逻辑清晰的几部分,简化开发,减少出错,方便组内开发人员之间的配合。

SpringMVC的优点

  1. 可以支持各种视图技术,而不仅仅局限于JSP;

  2. 与Spring框架集成(如IOC容器,AOP等)

  3. 清晰的角色分配:前端控制器(dispatcherServlet),请求到处理映射(handlerMapping),处理器适配器(HandleAdapter),视图解析器(ViewResolver),视图解析器(ViewResolver)。

  4. 支持各种请求资源的映射策略。

Spring MVC的主要组件?

  1. 前端控制器DispatcherServlet(不需要程序员开发)

  2. 作用:接收请求,响应结果,相当于转发器,由DispatcherServlet就减少了其他组件间的耦合度。

  3. 处理器映射器HandlerMapping(不需要程序员开发)

  4. 作用:更具请求的URL的查找Handler。

  5. 处理器Handler(需要程序员开发)

  6. 视图解析器ViewResolver(不需要程序员开发)

  7. 作用:进行视图的解析,根据视图逻辑名解析成真正的视图(view)

  8. 视图view(需要程序员开发jsp)

  9. view是一个接口,它实现类支持不同的视图类型(jsp,freemaker,pdf等等)

Spring MVC常用的注解由哪些?

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

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

  3. @ReponseBody:注解实现将controller方法返回对象转换为json对象给客户端。

  4. @Controller:控制器的注解,标识表现层,不能用别的注解代替

@Controller注解的作用

  • 在Spring MVC中,控制器Controller负责处理由DispatcherServlet分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model,然后再把该Model返回给对应的View进行展示,再SpringMVC中提供了一个非常渐变的定义Controller的方法,你无需继承特定的类或实现特定的接口,只需要使用@Controller标记一个类是Controller,然后使用@RequestMapping 和@RequestParam 等一些注解用以定义URL 请求和Controller 方法之间的映射,这样的Controller就能被外界访问到。此外Controller 不会直接依赖于HttpServletRequest 和HttpServletResponse等HttpServlet 对象,它们可以通过Controller 的方法参数灵活的获取到。
  • @Controller 用于标记在一个类上,使用它标记的类就是一个Spring MVC Controller 对象。分发处理器将会扫描使用了该注解的类的方法,并检测该方法是否使用了@RequestMapping 注解。@Controller 只是定义了一个控制器类,而使用@RequestMapping 注解的方法才是真正处理请求的处理器。单单使用@Controller 标记在一个类上还不能真正意义上的说它就是Spring MVC 的一个控制器类,因为这个时候Spring 还不认识它。那么要如何做Spring 才能认识它呢?这个时候就需要我们把这个控制器类交给Spring 来管理。有两种方式:
  • 在Spring MVC 的配置文件中定义MyController 的bean 对象。
  • 在Spring MVC 的配置文件中告诉Spring 该到哪里去找标记为@Controller 的Controller 控制器。
相关推荐
马剑威(威哥爱编程)14 分钟前
MongoDB面试专题33道解析
数据库·mongodb·面试
独行soc2 小时前
#渗透测试#SRC漏洞挖掘#深入挖掘XSS漏洞02之测试流程
web安全·面试·渗透测试·xss·漏洞挖掘·1024程序员节
理想不理想v3 小时前
‌Vue 3相比Vue 2的主要改进‌?
前端·javascript·vue.js·面试
成富3 小时前
文本转SQL(Text-to-SQL),场景介绍与 Spring AI 实现
数据库·人工智能·sql·spring·oracle
sszmvb12344 小时前
测试开发 | 电商业务性能测试: Jmeter 参数化功能实现注册登录的数据驱动
jmeter·面试·职场和发展
测试杂货铺4 小时前
外包干了2年,快要废了。。
自动化测试·软件测试·python·功能测试·测试工具·面试·职场和发展
王佑辉4 小时前
【redis】redis缓存和数据库保证一致性的方案
redis·面试
真忒修斯之船4 小时前
大模型分布式训练并行技术(三)流水线并行
面试·llm·aigc
ZL不懂前端4 小时前
Content Security Policy (CSP)
前端·javascript·面试
鹿屿二向箔5 小时前
基于SSM(Spring + Spring MVC + MyBatis)框架的汽车租赁共享平台系统
spring·mvc·mybatis