Dieser Artikel bietet Ihnen eine detaillierte Einführung in den SpringMVC-Workflow (mit Code). Ich hoffe, dass er für Freunde hilfreich ist.
SpringMVC-Workflow:
Detailliertes Bild:
SpringMVC-Workflowbeschreibung
1. Der Benutzer sendet eine Nachricht an den Server Beim Senden einer Anfrage wird die Anfrage vom Spring-Front-End-Controller DispatcherServlet abgerufen, wie in der detaillierten Abbildung gezeigt. Schritt 1
2 DispatcherServlet analysiert die Anfrage-URL (zum Beispiel senden wir eine Wenn Sie eine Anfrage mit der folgenden URL stellen:
http://localhost:8080/SpringMVC/hello.action), erhalten Sie die Ressourcenkennung der Anfrage (URI, entspricht hello.action oben). Anschließend wird gemäß dem URI der Handler-Mapper (HandlerMapping) aufgerufen, um alle vom Handler konfigurierten zugehörigen Objekte abzurufen (einschließlich des Handler-Objekts und des dem Handler-Objekt entsprechenden Interceptors) und schließlich in Form eines HandlerExecutionChain-Objekts zurückzugeben.
3.DispatcherServlet ruft den oben zurückgegebenen Handler ab und wählt einen geeigneten HandlerAdapter aus. (Hinweis: Wenn der HandlerAdapter erfolgreich abgerufen wurde, wird die preHandler(...)-Methode des Interceptors zu diesem Zeitpunkt ausgeführt.)
4. Nach Auswahl des entsprechenden HandlerAdapters wird der Handler gestartet hingerichtet. Während des Ausfüllens der Eingabeparameter des Handlers erledigt Spring entsprechend der Konfiguration einige zusätzliche Arbeiten für Sie (wir müssen uns nicht darum kümmern):
EG:
HttpMessageConveter: Fordert die Nachricht (z. B. Json, XML und andere Daten) in ein Objekt an und konvertiert das Objekt in die angegebenen Antwortinformationen
Datenkonvertierung: Führen Sie eine Datenkonvertierung für die Anforderungsnachricht durch. Beispielsweise wird String in Integer, Double usw. umgewandelt.
Datenradikalisierung: Formatieren Sie die Daten der Anforderungsnachricht. Zum Beispiel das Konvertieren von Zeichenfolgen in formatierte Zahlen oder formatierte Datumsangaben usw.
Datenüberprüfung: Überprüfen Sie die Gültigkeit der Daten (Länge, Format usw.) und speichern Sie die Überprüfungsergebnisse in BindingResult oder Error
5 . Nachdem der Handler ausgeführt wurde, geben Sie ein ModelAndView-Objekt (einschließlich des Ansichtsnamens oder des Ansichtsnamens und des Modells) an DispatcherServlet zurück
6 Wählen Sie basierend auf dem zurückgegebenen ModelAndView-Objekt einen geeigneten ViewResolver aus und geben Sie ihn zurück es an DispatcherServlet;
7. ViewResolver kombiniert Modell und Ansicht, um die Ansicht zu rendern
Abschließend wird das Ergebnis des Ansichtsrenderings an den Client zurückgegeben
Erklärung des Komponentennomens:
1. DispatcherServlet: Der Front-End-Controller
entspricht dem vorherigen Controller und ist für den Aufruf anderer Komponenten verantwortlich
2. HandlerMapping: Der Prozessor-Mapper
ist für die Anforderung von Find the Handler (Prozessor) verantwortlich. In SpringMVC können verschiedene Zuordnungen implementiert werden, z. B. XML-Konfigurationsmethode, Annotationsmethode, Schnittstellenmethode. usw.
3. Handler: Backend-Controller
Spezifische Benutzeranfragen werden unter der Kontrolle des Front-End-Controllers verarbeitet, sodass Entwickler im Allgemeinen entsprechend den Anforderungen entwickeln müssen.
4.HandlerAdapter: Prozessoradapter
Die Handlerverarbeitung kann auf mehreren Prozessortypen ausgeführt werden. Dies ist die Anwendung des Adaptermusters.
5. ViewResolver
ist für die Generierung der Ansicht aus den Verarbeitungsergebnissen verantwortlich
nach Bedarf. Nachdem wir den SpringMVC-Workflow verstanden haben, implementieren wir unser Einstiegsprogramm gemäß den Prozessschritten:
1. Importieren Sie unser Spring-Framework-Paket (im Allgemeinen von der offiziellen Website herunterladen). häufiger verwendet)
2. Konfigurieren Sie den Front-End-Controller <servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<!-- 让servlet随服务启动 -->
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
und sprechen Sie darüber Unsere Abfangmethode hier:
1. URLs mit festen Suffixen abfangen: wie *.action, *.do
2. Alle abfangen: auf / setzen, aber diese Methode führt zu statischen Dateien (css, js.jpg ) wird abgefangen und kann nicht normal angezeigt werden, daher erfordert diese Methode eine spezielle Verarbeitung
Hinweis: Sie können nicht alle Abfangvorgänge auf /* setzen. Diese Methode ist falsch, denn wenn eine Aktion angefordert wird, wird dies der Fall sein wird erneut blockiert, wenn die Aktion zu jsp springt. Abfangen, Ausnahme tritt auf: Die Zuordnungsadresse
kann gemäß dem JSP-Pfad 3 nicht gefunden werden.Legen Sie die Konfigurationsdatei von fest springmvc
<servlet> <init-param> <param-name>contextConfigLocation</param-name> <param-value>WEB-INF/springmvc.xml</param-value> </init-param> </servlet>
4.Entwicklungsprozessor
public class Hello implements Controller{ @Override public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { List list = new ArrayList<>(); list.add("one"); list.add("two"); ModelAndView mv = new ModelAndView(); mv.addObject("list",list); return mv; } }
5.在springmvc.xml中配置、
<!-- 配置适配器 --> <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean> <!-- 处理器映射器 --> <!-- 根据bean的 name 查找Handler , 将action的URL 配置在bean的name中--> <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean> <!-- 配置处理器 --> <bean name="/hello.action" class="com.mt.controller.Hello"></bean> <!-- 配置视图解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"></bean>
6.视图开发 ,jsp文件
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> asdfadfadfa ${list } </body> </html>
测试结果: 开启服务器后, 发送 http://localhost:8080/SpringMVC/hello.action的请求
页面显示:
对应理解springMVC 的流程即可。
Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in den SpringMVC-Workflow (mit Code). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!