Spring MVC面试题

本文详细解析了SpringMVC的工作流程,包括DispatcherServlet如何处理请求,HandlerMapping、HandlerAdapter的角色,以及ModelAndView在视图渲染过程中的作用。同时,深入探讨了Controller的单例模式及其线程安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SpringMvc 常见面试题整理

 

不容易理解的几个handler

1.HandlerMapping ---> Handler(Controller) --->  HandlerAdapter(RequestMapping)

2.DispatcherServlet在找到controller(Handler)之前需要经过handlerMapping,handler是根据注解找到对应的controller。具体可以参看详解SpringMVC请求的时候是如何找到正确的Controller

3.HandlerMapping 可以拆解来看A:Handler(controller)  B:mapping(RequestMapping)

 

4.DispatcherServlet类似于微服务的网关Zuul

5.http请求是通过ip+端口找到对应的应用程序,我暂时理解为tomcat容器

 

1、用户向服务器发送请求,根据IP+端口号找到对应ip的机器和端口对应的tomcat容器。请求被SpringMVC的前端控制器DispatcherServlet截获。
2、DispatcherServlet对请求的URL(统一资源定位符)进行解析,得到URI(请求资源标识符),
然后根据该URI,调用HandlerMapping获得该Handler配置的所有相关的对象,
包括Handler对象以及Handler对象对应的拦截器,这些对象都会被封装到一个HandlerExecutionChain对象当中返回。
3、DispatcherServlet根据获得的Handler,选择一个合适的HandlerAdapter。HandlerAdapter的设计符合面
向对象中的单一职责原则,代码结构清晰,便于维护,最为重要的是,代码的可复制性高。
HandlerAdapter会被用于处理多种Handler,调用Handler实际处理请求的方法。
4、
提取请求中的模型数据,开始执行Handler(Controller)。在填充Handler的入参过程中,根据配置,
spring将帮助做一些额外的工作
 
5、Handler执行完成后,向DispatcherServlet返回一个ModelAndView对象,ModelAndView对象中应该包含视图名或视图模型。
6、根据返回的ModelAndView对象,选择一个合适的ViewResolver(视图解析器)返回给DispatcherServlet。
7、ViewResolver结合Model和View来渲染视图。
8、将视图渲染结果返回给客户端。

 

工作流程:
1. 用户发送请求至前端控制器DispatcherServlet
2. DispatcherServlet收到请求调用HandlerMapping。
3. 通过HandlerMapping得到HandlerAdapter.
4. 调用handle()方法返回ModelAndVIew
5. DispatcherServlet将ModelAndView送给ViewResolver视图解析器处理,解析返回具体的view
6. 将Model渲染到view视图
7. 最后向用户response响应

 

 

springmvc的controller是单例还是多例的? 

答:是单例的,只要controller里面不定义属性,线程就是安全的。主要是单例性能好。 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值