资讯专栏INFORMATION COLUMN

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

vboy1010 / 2854人阅读

摘要:很多面试官喜欢问这个问题一个的项目文件里,开发人员没有开发自己的,只通过注解定义了方法能响应发向的请求。再次访问,断点触发。因此给面试官的答案为框架仍然需要,但这个是由框架提供,无需应用开发人员重复实现。

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/71810.html

相关文章

  • SpringMVC入门笔记

    摘要:入门笔记简介是一种基于的实现了设计模式的请求驱动类型的轻量级框架,是系开源项目中的一个,和配合使用。配置在中需要添加使用的和映射规则。入门较快,而掌握起来相对较难。 SpringMVC入门笔记 1. 简介 Spring MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架 ,是Spring系开源项目中的一个,和IoC配合使用。通过策略接口,Spring...

    zhaochunqi 评论0 收藏0
  • Spring Boot 参考指南(端点)

    摘要:在发出经过身份验证的请求时,被认为是端点的输入,因此不会缓存响应。自定义端点对或的操作通过使用或通过自动公开。端点范围请求范围请求可以用于请求资源的一部分,当使用或时,操作将返回一个自动支持范围请求的。 50. 端点 Actuator端点让你监视和与应用程序交互,Spring Boot包含许多内置的端点,并允许你添加自己的端点。例如,health端点提供基本的应用程序健康信息。 可以启...

    mozillazg 评论0 收藏0
  • Spring Boot 2 快速教程:WebFlux 快速入门(二)

    摘要:响应式编程是基于异步和事件驱动的非阻塞程序,只是垂直通过在内启动少量线程扩展,而不是水平通过集群扩展。三特性常用的生产的特性如下响应式编程模型适用性内嵌容器组件还有对日志消息测试及扩展等支持。 摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! 02:WebFlux 快速入门实践 文章工程: JDK...

    gaara 评论0 收藏0
  • Spring Boot & Spring MVC 异常处理N种方法

    摘要:定制特定异常返回结果根据官方文档的例子,可以使用和对特定异常返回特定的结果。下面是用浏览器和访问的结果无输出注意上方表格的错误,产生这个的原因前面已经讲过。不过需要注意的是,无法通过设定,由或者容器决定里一律是。 github:https://github.com/chanjarste... 参考文档: Spring Boot 1.5.4.RELEASE Documentation ...

    h9911 评论0 收藏0
  • 面试题:SpringMVC和Struts2区别

    摘要:的入口是,而是这里要指出,和是不同的。以前认为是的一种特殊,这就导致了二者的机制不同,这里就牵涉到和的区别了。开发效率和性能高于。的实现机制有以自己的机制,用的是独立的方式。 1、Struts2是类级别的拦截, 一个类对应一个request上下文,SpringMVC是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,所以说从架构本身上SpringMVC...

    isaced 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<