Der Inhalt dieses Artikels befasst sich mit der Frage, warum Spring MVC auf HTTP-Anfragen antworten kann. (Ausführliche Erläuterung der Gründe), es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird Ihnen hilfreich sein.
Viele Java-Interviewer stellen gerne diese Frage:
In einer Spring MVC-Projektdatei hat der Entwickler kein eigenes Servlet entwickelt, sondern nur die Methode Home-Funktion durch die Annotation definiert @RequestMapping Auf Anfragen an /mvc/test1 antworten.
Wenn Sie zum Testen die URL http://localhost:9098/MavenSandbox/mvc/test1 verwenden, können Sie die von der Home-Methode zurückgegebene Zeichenfolge beobachten . Dahinter steckt Wie funktioniert es?
Wir antworten durch unsere eigene Forschung. Setzen Sie einen Haltepunkt in Zeile 53 des obigen Codes. Besuchen Sie die URL http://localhost:9098/MavenSandbox/mvc/test1 erneut und der Haltepunkt wird ausgelöst. Wir beobachten den Aufrufstapel und stellen fest, dass es einen Stapelrahmen DispatcherServlet.doService (HttpServletRequest, HttpServletResponse) gibt. Dieses Servlet ist dafür verantwortlich, die Rückgabezeichenfolge in der mit @RequestMapping annotierten Methode zur HttpServletResponse hinzuzufügen. Aus diesem Grund können wir die Rückgabezeichenfolge im Browser sehen.
Mal sehen, ob die HttpServletResponse in DispatcherServlet.doService die erwartete Ausgabezeichenfolge enthält. Erweitern Sie die Antwortvariable im Debugger:
response->outputBuffer->bb->buff, Sie können dies im Buff-String sehen Array-Puffer:
104 ist der ASCII-Code von H, 101 ist der ASCII-Code von e und 108 ist der ASCII-Code von l, also Es ist bewiesen, dass die Antwort die vom Entwickler in der Home-Methode zurückgegebene Zeichenfolge enthält: Hallo, das ist ein sehr einfaches Beispiel
Woher kommt schließlich das DispatcherServlet?
Es befindet sich im Eclipse-Debugger und ist ein Standard-Servlet des Spring-Frameworks:
org.springframework.web.servlet.DispatcherServlet
Dieses Servlet ist genau das Servlet, das wir in der web.xml-Datei im WEB-INF-Ordner haben.
Die Antwort an den Interviewer lautet also: Das Spring MVC-Framework erfordert immer noch Servlet, aber dieses Servlet wird vom Spring-Framework bereitgestellt und muss von Anwendungsentwicklern nicht wiederholt implementiert werden.
Das obige ist der detaillierte Inhalt vonWarum kann Spring MVC auf HTTP-Anfragen antworten? (Detaillierte Begründung). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!