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 vonjstlan.
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.
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.htmangefordert wird, verarbeitet der Controller vonHelloWorldControllerdie 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 Applicationmvc-dispatcher
org.springframework.web.servlet.DispatcherServlet
1mvc-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.
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.