java面试题之个人对SpringMvc的原理实现理解

简介: java面试题之个人对SpringMvc的原理实现理解

只要用到了Spring,就肯定涉及到了web端,那就难免不涉及到SpringMvc,即使用SpringBoot,也不过是将mvc模块封装进了spring-mvc(一个依赖包)中,,使得xml不用配置,基于注解确实简单,但是面试官确认你会不会这个Spring的Web端的依据那就是问你面试题啦,一般都会问到SpringMvc的原理实现。

理解原理,首先一定要知道(不一定理解,知道做什么的就可以)以下几个组件:

1.DispatcherServlet:(Dispatcher Server Applet)调度服务程序,这个组件充当的作用就是一个中央调度器(调度的意思可以百度)的作用,负责接收前端传过来的url和参数,返回结果给前端,调度一下各种组件的功能。

2.HandlerMapping:处理器映射器(这个组件只负责查找),功能主要是查找Spring的Xml配置的或者是以注解形式声明的处理器(controller)和拦截器(interceptor),并返回到DispatcherServlet。

3.HandlerAdapter:处理器适配器(这个组件负责调用),功能是调用controller和intercepter,intercepter一般用来拦截请求和js,css什么的,执行完拦截器之后,将可执行的controller进行执行,执行完的controller返回的ModelAndView(模型和视图,可能是一个页面的路径,也可能是一种格式的数据,也可能是字符串)返回给DispatcherServlet。

4.Handler:具体的处理器(controller),用来处理具体的业务并返回ModelAndView。

5.ViewResolver:视图解析器,解析ModelAndView,可解析Freemaker(静态资源模板技术),jsp(集成html代码的java页面),excel等等成View视图返回给DispatcherServlet。

6.View :视图,View是一个接口,实现类支持不同的View类型(json、jsp、freemarker、excel...)

7.HandlerExecutionChain:执行链,是HandlerMapping根据xml配置或注解形式找到的Handler和Handler拦截器以之执行链的形式返回给DispatcherServlet。

知道了上边的几个组件,那么原理步骤就很容易解释了,几乎几句话就可以概括:

首先是前端的请求,DispatcherServlet接收到请求后,将url指向的地址转发并调度HandlerMapping进行查找处理器(此时查不到将

抛出路径不正确异常),HandlerMapping将查找到的处理器和拦截器返回给DispatcherServlet;

DispatcherServlet接收到处理器和拦截器后调用HandlerAdapter,HandlerAdapter执行完拦截器后(拦截器三个方法,第一个方法

preHandle负责拦截访问controller的请求,如果拦截器拦截了该controller,则404,另外两个方法自行百度)继续执行通过拦截器

的controller,执行完controller返回ModelAndView给DispatcherServlet。

DispatcherServlet接收到了ModelAndView,调用ViewResolver去解析ModelAndView,解析成的具体View再返回给

DispatcherServlet。

最后DispatcherServlet将View返回给前端处理。

如果你看了至少两遍,是不是感觉很好理解?最重要的DispatcherServlet一直充当一个调度员,调度器的角色,他就好比一个程序员在调用各种类的各种方法一样,本次博客全是本人理解,若有不当之处,还请指出。

相关文章
|
2月前
|
算法 Java
50道java集合面试题
50道 java 集合面试题
|
4月前
|
监控 Java API
现代 Java IO 高性能实践从原理到落地的高效实现路径与实战指南
本文深入解析现代Java高性能IO实践,涵盖异步非阻塞IO、操作系统优化、大文件处理、响应式网络编程与数据库访问,结合Netty、Reactor等技术落地高并发应用,助力构建高效可扩展的IO系统。
144 0
|
3月前
|
前端开发 Java 开发者
Java新手指南:在Spring MVC中使用查询字符串与参数
通过结合实际的需求和业务逻辑,开发者可以灵活地利用这些机制,为用户提供更丰富而高效的Web应用体验。
153 15
|
4月前
|
Java 数据库连接 数据库
Java 相关知识点总结含基础语法进阶技巧及面试重点知识
本文全面总结了Java核心知识点,涵盖基础语法、面向对象、集合框架、并发编程、网络编程及主流框架如Spring生态、MyBatis等,结合JVM原理与性能优化技巧,并通过一个学生信息管理系统的实战案例,帮助你快速掌握Java开发技能,适合Java学习与面试准备。
228 2
Java 相关知识点总结含基础语法进阶技巧及面试重点知识
|
2月前
|
算法 Java
50道java基础面试题
50道java基础面试题
|
4月前
|
JSON 前端开发 Java
Java新手指南:如何在Spring MVC中处理请求参数
处理Spring MVC中的请求参数是通过控制器方法中的注解来完成的。这些注解包括 `@RequestParam`, `@PathVariable`, `@ModelAttribute`, `@RequestBody`, `@RequestHeader`, `@Valid`, 和 `@RequestMapping`。使用这些注解可以轻松从HTTP请求中提取所需信息,例如URL参数、表单数据或者JSON请求体,并将其转换成Java对象以供进一步处理。
473 17
|
4月前
|
存储 缓存 安全
深入讲解 Java 并发编程核心原理与应用案例
本教程全面讲解Java并发编程,涵盖并发基础、线程安全、同步机制、并发工具类、线程池及实际应用案例,助你掌握多线程开发核心技术,提升程序性能与响应能力。
212 0
|
4月前
|
缓存 Java 关系型数据库
Java 面试经验总结与最新 BAT 面试资料整理含核心考点的 Java 面试经验及最新 BAT 面试资料
本文汇总了Java面试经验与BAT等大厂常见面试考点,涵盖心态准备、简历优化、面试技巧及Java基础、多线程、JVM、数据库、框架等核心技术点,并附实际代码示例,助力高效备战Java面试。
170 0
下一篇
oss云网关配置