每日五道java面试题之springMVC篇(二)

目录:

  • [第一题. 请描述Spring MVC的工作流程?描述一下 DispatcherServlet 的工作流程?](#第一题. 请描述Spring MVC的工作流程?描述一下 DispatcherServlet 的工作流程?)
  • [第二题. MVC是什么?MVC设计模式的好处有哪些?](#第二题. MVC是什么?MVC设计模式的好处有哪些?)
  • [第三题. 注解原理是什么?](#第三题. 注解原理是什么?)
  • [第四题. Spring MVC常用的注解有哪些?](#第四题. Spring MVC常用的注解有哪些?)
  • [第五题. SpingMvc中的控制器的注解一般用哪个,有没有别的注解可以替代?](#第五题. SpingMvc中的控制器的注解一般用哪个,有没有别的注解可以替代?)

第一题. 请描述Spring MVC的工作流程?描述一下 DispatcherServlet 的工作流程?

(1)用户发送请求至前端控制器DispatcherServlet;

(2) DispatcherServlet收到请求后,调用HandlerMapping处理器映射器,请求获取Handle;

(3)处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet;

(4)DispatcherServlet 调用 HandlerAdapter处理器适配器;

(5)HandlerAdapter 经过适配调用 具体处理器(Handler,也叫后端控制器);

(6)Handler执行完成返回ModelAndView;

(7)HandlerAdapter将Handler执行结果ModelAndView返回DispatcherServlet;

(8)DispatcherServlet将ModelAndView传给ViewResolver视图解析器进行解析;

(9)ViewResolver解析后返回具体View;

(10)DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)

(11)DispatcherServlet响应用户。

第二题. MVC是什么?MVC设计模式的好处有哪些?

mvc是一种设计模式(设计模式就是日常开发中编写代码的一种好的方法和经验的总结)。模型(model)-视图(view)-控制器(controller),三层架构的设计模式。用于实现前端页面的展现与后端业务数据处理的分离。

mvc设计模式的好处

1.分层设计,实现了业务系统各个组件之间的解耦,有利于业务系统的可扩展性,可维护性。

2.有利于系统的并行开发,提升开发效率。

第三题. 注解原理是什么?

注解本质是一个继承了Annotation的特殊接口,其具体实现类是Java运行时生成的动态代理类。我们通过反射获取注解时,返回的是Java运行时生成的动态代理对象。通过代理对象调用自定义注解的方法,会最终调用AnnotationInvocationHandler的invoke方法。该方法会从memberValues这个Map中索引出对应的值。而memberValues的来源是Java常量池。

第四题. Spring MVC常用的注解有哪些?

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

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

@ResponseBody:注解实现将conreoller方法返回对象转化为json对象响应给客户。

第五题. SpingMvc中的控制器的注解一般用哪个,有没有别的注解可以替代?

答:一般用@Controller注解,也可以使用@RestController,@RestController注解相当于@ResponseBody + @Controller,表示是表现层,除此之外,一般不用别的注解代替。

如果我的内容对你有帮助,请点赞,评论,收藏。创作不易,大家的支持就是我坚持下去的动力

相关推荐
无名-CODING5 分钟前
SpringMVC处理流程完全指南:从请求到响应的完整旅程
java·后端·spring
瑶山7 分钟前
Spring Cloud微服务搭建三、分布式任务调度XXL-JOB
java·spring cloud·微服务·xxljob
Re.不晚10 分钟前
深入底层理解HashMap——妙哉妙哉的结构!!
java·哈希算法
wWYy.13 分钟前
C++—集群聊天室(3)CMake详解
开发语言·c++
Serene_Dream14 分钟前
Java 内存区域
java·jvm
lsx20240615 分钟前
SciPy 稀疏矩阵
开发语言
小猪咪piggy17 分钟前
【Python】(6) 文件操作
开发语言·python
睡一觉就好了。24 分钟前
C++ 容器
开发语言·c++
你的代码我的心28 分钟前
微信开发者工具开发网页,不支持tailwindcss v4怎么办?
开发语言·javascript·ecmascript
爱吃山竹的大肚肚30 分钟前
文件上传大小超过服务器限制
java·数据库·spring boot·mysql·spring