Spring MVC Hallo Weltbeispiel
Note
Dieses Tutorial basiert auf Spring 2.5.6 und ist ziemlich veraltet. Probieren Sie die neuen Tutorials aus:
In diesem Tutorial zeigen wir Ihnen eine Spring MVC Hello World-Webanwendung.
Verwendete Technologien:
-
Frühling 2.5.6
-
JDK 1.6
-
Eclipse 3.6
-
Maven 3
1. MVC Basic
In der Spring MVC-Webanwendung besteht sie aus 3 Standard-MVC-Komponenten (Model, Views, Controller):
-
Modelle - Domänenobjekte, die von der Service-Schicht (Geschäftslogik) oder der persistenten Schicht (Datenbankoperation) verarbeitet werden.
-
Ansichten - Daten anzeigen, normalerweise handelt es sich um eine JSP-Seite, die mit der Java Standard Tag Library (JSTL) geschrieben wurde.
-
Controller - URL-Zuordnung und Interaktion mit der Serviceebene für die Geschäftsverarbeitung und Rückgabe eines Modells.
Die folgenden Abbildungen zeigen, wie die Spring MVC-Webanwendung eine Webanforderung verarbeitet.
Abbildung 1.1 - Das Bild wird vonSpring MVC reference mit leicht modifizierten Elementen kopiert.
Abbildung 1.2 - _Image wird aus diesem Buch kopiert:Spring Recipes_
Note
In Spring MVC ist die Kern-Dispatcher-KomponenteDispatcherServlet
, die als Front-Controller fungieren (Entwurfsmuster). Jede Webanforderung muss dieseDispatcherServlet
durchlaufen, und dieDispatcherServlet
senden die Webanforderung an geeignete Handler.
2. Verzeichnisaufbau
Eine Standard-Maven-Projektverzeichnisstruktur.
3. Maven
Deklariert die Abhängigkeit vonspring-webmvc
. Maven hilft Ihnen dabei, die transitiven Abhängigkeiten automatisch zu verwalten (laden Sie andere Abhängigkeiten herunter, die fürspring-webmvc
erforderlich sind, z. B.spring-context
oderspring-beans
).
Wenn Sie die JSP-Seite mit JSTL-Technologie verwenden, geben Sie auch die Abhängigkeit vonjstl
an.
pom.xml
4.0.0 com.example.common spring2-mvc-xml-hello-world war 1.0-SNAPSHOT Spring 2 MVC 1.6 2.5.6 1.2 2.5 org.springframework spring-webmvc ${spring.version} javax.servlet jstl ${jstl.version} javax.servlet servlet-api ${servletapi.version} provided org.apache.maven.plugins maven-compiler-plugin 3.3 ${jdk.version} org.eclipse.jetty jetty-maven-plugin 9.2.11.v20150529 10 /spring2 org.apache.maven.plugins maven-eclipse-plugin 2.9 true true 2.0 spring2
4. Federkontroller
Spring wird mit vielen Controllern geliefert. Normalerweise müssen Sie nur dieAbstractController
erweitern und diehandleRequestInternal()
-Methode überschreiben.
HelloWorldController.java
package com.example.common.controller; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.AbstractController; public class HelloWorldController extends AbstractController{ @Override protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception { ModelAndView model = new ModelAndView("HelloWorldPage"); model.addObject("msg", "hello world"); return model; } }
4.1 ModelAndView(“HelloWorldPage”) – To identify which view should return back to the user, in this example HelloWorldPage.jsp
will be returned.
4.2 model.addObject(“msg”, “hello world”) – Add a “hello world” string into a model named “msg”, later you can use EL ${msg}
to display the “hello world” string.
5. Ansicht (JSP-Seite)
In diesem Fall ist "Ansicht" eine JSP-Seite. Sie können den Wert "Hallo Welt" anzeigen, der im Modell "msg" über die Ausdruckssprache (EL) $ {msg} gespeichert ist.
HelloWorldPage.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>Spring MVC Hello World Example
${msg}
Note
Wenn $ {msg} so angezeigt wird, wie es ist, nicht der Wert im Modell "msg", kann dies durch den alten JSP 1.2-Deskriptor verursacht werden, wodurch die Ausdruckssprachen standardmäßig deaktiviert werden , siehesolution hier.
6. Spring XML-Konfiguration
6.1 Declared the Spring Controller and viewResolver.
mvc-dispatcher-servlet.xml
/WEB-INF/pages/ .jsp
1. Controller - Deklariert einen Bean-Namen/welcome.htm
und ordnet ihnHelloWorldController
zu. Wenn eine URL mit dem Muster von/welcome.htm
angefordert wird, verarbeitet der Controller vonHelloWorldController
die Anforderung.
2. viewResolver - Definieren Sie, wie Spring für die Ansichtsvorlage aussehen soll. In diesem Fall gibt der ControllerHelloWorldController
eine Ansicht mit dem NamenHelloWorldPage
zurück. Der viewResolver findet die Datei mit folgendem Mechanismus:prefix + view name + suffix, dh/WEB-INF/pages/HelloWorldPage.jsp
.
Note
Tatsächlich müssen SieBeanNameUrlHandlerMapping
nicht inweb.xml
definieren. Wenn keine Handlerzuordnung gefunden werden kann, erstellt das DispatcherServlet standardmäßig einBeanNameUrlHandlerMapping
automatisch. Weitere Informationen finden Sie in diesem Artikel -BeanNameUrlHandlerMapping example.
6.2 In web.xml
, declared a DispatcherServlet
servlet to act as the front-controller to handle all the entire web request which end with htm
extension.
web.xml
Spring Web MVC Application mvc-dispatcher org.springframework.web.servlet.DispatcherServlet 1 mvc-dispatcher *.htm
Note
Mitmvc-dispatcher
wird definiert, in welche Datei die Spring XML-Konfigurationen geladen werden sollen. Standardmäßig wird nach der Spring XML-Konfigurationsdatei gesucht, indem der Servlet-Namemvc-dispatcher
mit-servlet.xml
verknüpft wird.
In diesem Beispiel sucht Spring nach dieser Datei -mvc-dispatcher-servlet.xml
.
7. Demo
7.1 To run this project with Maven :
$ mvn jetty:run
7.2 To run this project in Eclipse IDE, create Eclipse project settings with the following Maven command :
$ mvn eclipse:eclipse
Importiert das Projekt manuell und startet mit dem Server-Plugin.
Wie es funktioniert?
-
http://localhost:8080/spring2/welcome.htm wird angefordert.
-
Die URL endet mit der Erweiterung ".htm", sodass sie zu "DispatcherServlet" umleitet und Anforderungen an das Standard-BeanNameUrlHandlerMapping sendet.
-
BeanNameUrlHandlerMapping gibt HelloWorldController an das DispatcherServlet zurück.
-
DispatcherServlet leitet Anforderung an den HelloWorldController weiter.
-
HelloWorldController verarbeitet es und gibt ein ModelAndView-Objekt mit dem Ansichtsnamen „HelloWorldPage“ zurück.
-
Das DispatcherServlet hat das ModelAndView empfangen und den viewResolver aufgerufen, um es zu verarbeiten.
-
viewResolver gibt die
/WEB-INF/pages/HelloWorldPage.jsp
an das DispatcherServlet zurück. -
Das DispatcherServlet gibt die Datei "HelloWorldPage.jsp" an den Benutzer zurück.
Quellcode herunterladen
Laden Sie es herunter -spring2-mvc-xml-hello-world.zip (14 KB)