Home Java javaTutorial Why can Spring MVC respond to HTTP requests? (Detailed explanation of reasons)

Why can Spring MVC respond to HTTP requests? (Detailed explanation of reasons)

Oct 22, 2018 pm 03:14 PM
java servlet spring web

The content of this article is about why Spring MVC can respond to HTTP requests? (Detailed explanation of the reasons), it has certain reference value. Friends in need can refer to it. I hope it will be helpful to you.

Many Java interviewers like to ask this question:

In a Spring MVC project file, the developer did not develop his own Servlet, but only defined the method home function through the annotation @RequestMapping Respond to requests to /mvc/test1.

Why can Spring MVC respond to HTTP requests? (Detailed explanation of reasons)

Use the url http://localhost:9098/MavenSandbox/mvc/test1 to test and you can observe the string returned by the home method. Behind this How does it work?

Why can Spring MVC respond to HTTP requests? (Detailed explanation of reasons)

We answer through our own research. Set a breakpoint on line 53 of the above code. Visit the url http://localhost:9098/MavenSandbox/mvc/test1 again, and the breakpoint is triggered. We observe the call stack and find that there is a stack frame DispatcherServlet.doService(HttpServletRequest, HttpServletResponse). This Servlet will be responsible for adding the return string in the method annotated with @RequestMapping to the HttpServletResponse. This is why we can see the return string in the browser.

Why can Spring MVC respond to HTTP requests? (Detailed explanation of reasons)

Let’s see if the HttpServletResponse in DispatcherServlet.doService contains the output string we expect. Expand the response variable in the debugger:

Why can Spring MVC respond to HTTP requests? (Detailed explanation of reasons)

##response->outputBuffer->bb->buff, you can see this in buff String array buffer:

Why can Spring MVC respond to HTTP requests? (Detailed explanation of reasons)

104 is the ASCII code of H, 101 is the ASCII code of e, and 108 is the ASCII code of l, so it is proved The response does contain the string returned by the developer in the home method: hello this is a most simple example

Finally, where does the DispatcherServlet come from?

Found in the Eclipse debugger, it is a standard Servlet of the Spring framework:

org.springframework.web.servlet.DispatcherServlet

Why can Spring MVC respond to HTTP requests? (Detailed explanation of reasons)

This Servlet is exactly the Servlet in our web.xml file in the WEB-INF folder.

So the answer to the interviewer is: The Spring MVC framework still requires Servlet, but this Servlet is provided by the Spring framework and does not need to be implemented repeatedly by application developers.

Why can Spring MVC respond to HTTP requests? (Detailed explanation of reasons)

The above is the detailed content of Why can Spring MVC respond to HTTP requests? (Detailed explanation of reasons). For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot Article Tags

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Square Root in Java Square Root in Java Aug 30, 2024 pm 04:26 PM

Square Root in Java

Perfect Number in Java Perfect Number in Java Aug 30, 2024 pm 04:28 PM

Perfect Number in Java

Random Number Generator in Java Random Number Generator in Java Aug 30, 2024 pm 04:27 PM

Random Number Generator in Java

Armstrong Number in Java Armstrong Number in Java Aug 30, 2024 pm 04:26 PM

Armstrong Number in Java

Weka in Java Weka in Java Aug 30, 2024 pm 04:28 PM

Weka in Java

Smith Number in Java Smith Number in Java Aug 30, 2024 pm 04:28 PM

Smith Number in Java

Java Spring Interview Questions Java Spring Interview Questions Aug 30, 2024 pm 04:29 PM

Java Spring Interview Questions

Break or return from Java 8 stream forEach? Break or return from Java 8 stream forEach? Feb 07, 2025 pm 12:09 PM

Break or return from Java 8 stream forEach?

See all articles