`
JerryWang_SAP
  • 浏览: 1001493 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

Spring MVC能响应HTTP请求的原因?

阅读更多

很多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的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:

 

 
 
0
0
分享到:
评论

相关推荐

    Spring MVC请求参数与响应结果全局加密和解密详解

    Spring MVC请求参数与响应结果全局加密和解密详解 在本文中,我们将详细介绍Spring MVC请求参数与响应结果全局加密和解密的相关知识点,包括请求参数的加密和解密、响应结果的加密和解密、ContentType的处理等。 ...

    Spring MVC 4.2.3

    Spring MVC通过DispatcherServlet作为入口点,接收HTTP请求,然后根据请求映射信息分发到相应的处理器。 在Spring MVC 4.2.3中,主要包含了以下关键特性: 1. **类型安全的路径变量**:这个版本引入了类型安全的...

    最全最经典spring-mvc教程

    它作为Spring框架的一部分,提供了一种优雅的方式来处理HTTP请求和响应,使得开发者可以专注于业务逻辑而不是底层实现。在这个"最全最经典spring-mvc教程"中,我们可以期待深入探讨Spring MVC的各个方面。 首先,...

    Spring MVC 教程快速入门 深入分析

    四、Spring MVC DispatcherServlet说明:DispatcherServlet是Spring MVC的核心,它负责接收HTTP请求并将其分发给合适的处理器,并且与Spring IoC容器整合,利用容器的功能来管理组件。 五、Spring MVC双亲上下文的...

    springmvc+spring线程池处理http并发请求数据同步控制问题

    在现代Web应用开发中,Spring MVC作为主流的MVC框架,常常被用来处理HTTP请求。同时,Spring框架提供的线程池功能则可以帮助我们优化多线程环境下的性能,特别是处理并发请求时。在这个主题中,我们将深入探讨如何...

    最全的Spring MVC注解例子,异步请求,错误处理

    它在Spring框架的基础上,提供了一种优雅的方式来处理HTTP请求和响应。在这个“最全的Spring MVC注解例子”中,我们将深入探讨Spring MVC的核心注解,以及如何实现异步请求处理和错误管理。 1. **Spring MVC核心...

    Spring MVC使用Demo

    它是Spring MVC的前端控制器,接收所有HTTP请求,然后根据请求信息选择合适的HandlerMapping找到对应处理器(Controller方法)。处理器执行后,通过HandlerAdapter将结果转换为ModelAndView对象,最后由ViewResolver...

    spring mvc 4.0

    8. **异步处理**:Spring MVC 4.0引入了异步请求处理,通过@ControllerAdvice和@Async注解,可以实现后台任务的异步执行,提高响应速度。 9. **多Part文件上传**:支持多文件上传,利用MultipartFile接口处理上传...

    Spring mvc5.0.3 所有jar包

    14. **MessageConverter**: Spring MVC使用MessageConverter处理HTTP请求和响应的转换,支持JSON、XML等多种格式。 15. **模板引擎**: Spring MVC支持多种模板引擎,如FreeMarker、Thymeleaf等,这些引擎可以将模型...

    Mastering Spring MVC 4(2015.09)源码

    此外,Spring MVC 4还支持RESTful风格的Web服务,通过@RequestMapping注解的produces和consumes属性,可以处理不同格式的HTTP请求和响应,如JSON、XML等。 总的来说,"Mastering Spring MVC 4(2015.09)源码"提供了...

    基于Spring MVC接收并处理HTTP请求

    本篇将深入探讨基于Spring MVC如何接收并处理HTTP请求,以及相关知识点。 1. **Spring MVC架构** Spring MVC是一个模型-视图-控制器(MVC)架构的实现,它通过DispatcherServlet作为前端控制器,处理所有的HTTP...

    Spring mvc 教程

    - **异步请求的处理**:Spring MVC 支持异步处理,可以提高应用的响应性和性能。 - **对控制器测试**:Spring 提供了工具和支持来方便地测试控制器的行为。 #### 处理器映射 (Handler Mapping) - **使用 ...

    spring mvc 整合包

    Spring MVC 是一个强大的Java Web应用程序开发框架,是Spring框架的一部分,专注于处理Web请求和返回响应。它提供了模型-视图-控制器(MVC)架构,帮助开发者构建灵活、可维护的Web应用。在这个"spring mvc 整合包...

    Spring MVC 简单Demo

    Spring MVC是Spring框架的一部分,用于处理HTTP请求和响应。它采用Model-View-Controller(MVC)设计模式,将业务逻辑、数据和用户界面分离,提高了代码的可维护性和可测试性。 2. **核心组件** - **...

    Spring MVC 基础实例源码01

    Spring MVC 是一个基于Java的轻量级Web应用框架,它是Spring框架的重要组成部分,...对于初学者来说,动手实践是最有效的学习方式,你可以尝试运行这些示例,观察它们如何响应不同请求,逐步掌握Spring MVC的基础知识。

    基本的spring mvc + spring security实现的登录(无数据库)

    Spring MVC是Spring框架的一部分,用于处理Web应用程序的请求-响应模型,而Spring Security则是一个强大的安全管理框架,提供了认证和授权功能,帮助开发者保护应用免受恶意攻击。 1. **Spring MVC**: - **核心...

    spring mvc 3_demo

    Spring MVC是Spring框架的一个核心模块,专门用于处理Web应用程序的请求和响应。在这个"Spring MVC 3_demo"中,我们重点探讨的是使用注解来实现Spring MVC 3的应用。注解在Spring MVC中扮演着重要角色,它们简化了...

    一个实用了spring mvc和ajax异步请求的例子

    结合Spring MVC,我们可以创建一个Controller方法来响应Ajax请求。例如,有一个`getPosts()`方法,它返回JSON格式的博客文章列表,而不是传统的HTML。前端JavaScript代码可以监听用户的事件(如点击按钮),然后发送...

Global site tag (gtag.js) - Google Analytics