很多Java面试官喜欢问这个问题:
一个Spring MVC的项目文件里,开发人员没有开发自己的Servlet,只通过注解@RequestMapping定义了方法home能响应发向 /mvc/test1的请求。
使用url http://localhost:9098/MavenSandbox/mvc/test1 测试,能观察到home方法返回的字符串,这背后的工作原理是什么?
我们通过自己的研究来回答。在上述代码第53行设置断点。再次访问url http://localhost:9098/MavenSandbox/mvc/test1,断点触发。我们观察调用栈,发现有一个栈帧DispatcherServlet.doService(HttpServletRequest, HttpServletResponse)。这个Servlet会负责将我们加了@RequestMapping注解的方法里return的字符串加到HttpServletResponse里,这就是为什么我们在浏览器里能看到return字符串的原因。
我们看下DispatcherServlet.doService里的HttpServletResponse里是否包含了我们期望的输出字符串。在调试器里展开response变量:
response->outputBuffer->bb->buff, 在buff里能看到这个字符串数组缓冲:
104是H的ASCII码,101是e的ASCII码,108是l的ASCII码,所以证明了response确实包含了开发人员在home方法里返回的字符串:hello this is a most simple example
最后,DispatcherServlet从哪里来的?
在Eclipse调试器里发现,它是Spring框架的标准Servlet:
org.springframework.web.servlet.DispatcherServlet
这个Servlet正是我们在WEB-INF文件夹的web.xml文件里的Servlet。
因此给面试官的答案为:Spring MVC框架仍然需要Servlet,但这个Servlet是由Spring框架提供,无需应用开发人员重复实现。
要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:
相关推荐
Spring MVC请求参数与响应结果全局加密和解密详解 在本文中,我们将详细介绍Spring MVC请求参数与响应结果全局加密和解密的相关知识点,包括请求参数的加密和解密、响应结果的加密和解密、ContentType的处理等。 ...
Spring MVC通过DispatcherServlet作为入口点,接收HTTP请求,然后根据请求映射信息分发到相应的处理器。 在Spring MVC 4.2.3中,主要包含了以下关键特性: 1. **类型安全的路径变量**:这个版本引入了类型安全的...
它作为Spring框架的一部分,提供了一种优雅的方式来处理HTTP请求和响应,使得开发者可以专注于业务逻辑而不是底层实现。在这个"最全最经典spring-mvc教程"中,我们可以期待深入探讨Spring MVC的各个方面。 首先,...
四、Spring MVC DispatcherServlet说明:DispatcherServlet是Spring MVC的核心,它负责接收HTTP请求并将其分发给合适的处理器,并且与Spring IoC容器整合,利用容器的功能来管理组件。 五、Spring MVC双亲上下文的...
它在Spring框架的基础上,提供了一种优雅的方式来处理HTTP请求和响应。在这个“最全的Spring MVC注解例子”中,我们将深入探讨Spring MVC的核心注解,以及如何实现异步请求处理和错误管理。 1. **Spring MVC核心...
在现代Web应用开发中,Spring MVC作为主流的MVC框架,常常被用来处理HTTP请求。同时,Spring框架提供的线程池功能则可以帮助我们优化多线程环境下的性能,特别是处理并发请求时。在这个主题中,我们将深入探讨如何...
它是Spring MVC的前端控制器,接收所有HTTP请求,然后根据请求信息选择合适的HandlerMapping找到对应处理器(Controller方法)。处理器执行后,通过HandlerAdapter将结果转换为ModelAndView对象,最后由ViewResolver...
8. **异步处理**:Spring MVC 4.0引入了异步请求处理,通过@ControllerAdvice和@Async注解,可以实现后台任务的异步执行,提高响应速度。 9. **多Part文件上传**:支持多文件上传,利用MultipartFile接口处理上传...
14. **MessageConverter**: Spring MVC使用MessageConverter处理HTTP请求和响应的转换,支持JSON、XML等多种格式。 15. **模板引擎**: Spring MVC支持多种模板引擎,如FreeMarker、Thymeleaf等,这些引擎可以将模型...
此外,Spring MVC 4还支持RESTful风格的Web服务,通过@RequestMapping注解的produces和consumes属性,可以处理不同格式的HTTP请求和响应,如JSON、XML等。 总的来说,"Mastering Spring MVC 4(2015.09)源码"提供了...
本篇将深入探讨基于Spring MVC如何接收并处理HTTP请求,以及相关知识点。 1. **Spring MVC架构** Spring MVC是一个模型-视图-控制器(MVC)架构的实现,它通过DispatcherServlet作为前端控制器,处理所有的HTTP...
- **异步请求的处理**:Spring MVC 支持异步处理,可以提高应用的响应性和性能。 - **对控制器测试**:Spring 提供了工具和支持来方便地测试控制器的行为。 #### 处理器映射 (Handler Mapping) - **使用 ...
Spring MVC 是一个强大的Java Web应用程序开发框架,是Spring框架的一部分,专注于处理Web请求和返回响应。它提供了模型-视图-控制器(MVC)架构,帮助开发者构建灵活、可维护的Web应用。在这个"spring mvc 整合包...
DispatcherServlet 是 Spring MVC 的前置控制器,它负责处理所有的 HTTP 请求。HandlerMapping 是一个接口,负责将 URL 映射到 Controller 中的方法上。HandlerAdapter 是一个接口,负责将 Controller 中的方法映射...
Spring MVC是Spring框架的一部分,用于处理HTTP请求和响应。它采用Model-View-Controller(MVC)设计模式,将业务逻辑、数据和用户界面分离,提高了代码的可维护性和可测试性。 2. **核心组件** - **...
Spring MVC 是一个基于Java的轻量级Web应用框架,它是Spring框架的重要组成部分,...对于初学者来说,动手实践是最有效的学习方式,你可以尝试运行这些示例,观察它们如何响应不同请求,逐步掌握Spring MVC的基础知识。
Spring MVC是Spring框架的一部分,用于处理Web应用程序的请求-响应模型,而Spring Security则是一个强大的安全管理框架,提供了认证和授权功能,帮助开发者保护应用免受恶意攻击。 1. **Spring MVC**: - **核心...
Spring MVC是Spring框架的一个核心模块,专门用于处理Web应用程序的请求和响应。在这个"Spring MVC 3_demo"中,我们重点探讨的是使用注解来实现Spring MVC 3的应用。注解在Spring MVC中扮演着重要角色,它们简化了...
结合Spring MVC,我们可以创建一个Controller方法来响应Ajax请求。例如,有一个`getPosts()`方法,它返回JSON格式的博客文章列表,而不是传统的HTML。前端JavaScript代码可以监听用户的事件(如点击按钮),然后发送...