每日五道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,表示是表现层,除此之外,一般不用别的注解代替。

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

相关推荐
bug总结2 小时前
前端开发中为什么要使用 URL().origin 提取接口根地址
开发语言·前端·javascript·vue.js·html
北漂IT民工_程序员_ZG2 小时前
SpringBean生命周期,动态代理
java·spring boot·spring
晨曦夜月2 小时前
笔试强训day7
开发语言·c++·算法
Kurbaneli2 小时前
先啃C语言还是直奔目标?
开发语言
老华带你飞2 小时前
建筑材料管理|基于springboot 建筑材料管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·学习·spring
木心爱编程2 小时前
【Qt 5.14.2 新手实战】QTC++入门筑基——按钮与标签联动:QPushButton + QLabel 实现图片切换器
java·c++·qt
weixin_307779132 小时前
Jenkins Pipeline 完全指南:核心概念、使用详解与最佳实践
开发语言·ci/cd·自动化·jenkins·etl
kk”2 小时前
c++红黑树
开发语言·c++
Gomiko3 小时前
JavaScript DOM 原生部分(二):元素内容修改
开发语言·javascript·ecmascript
Z_W_H_3 小时前
【C#】C#中值类型和引用类型参数传递的区别
开发语言·c#