Spring MVC Hallo Weltbeispiel

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:

  1. Frühling 2.5.6

  2. JDK 1.6

  3. Eclipse 3.6

  4. Maven 3

1. MVC Basic

In der Spring MVC-Webanwendung besteht sie aus 3 Standard-MVC-Komponenten (Model, Views, Controller):

  1. Modelle - Domänenobjekte, die von der Service-Schicht (Geschäftslogik) oder der persistenten Schicht (Datenbankoperation) verarbeitet werden.

  2. Ansichten - Daten anzeigen, normalerweise handelt es sich um eine JSP-Seite, die mit der Java Standard Tag Library (JSTL) geschrieben wurde.

  3. 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.

spring mvc concepts

Abbildung 1.2 - _Image wird aus diesem Buch kopiert:Spring Recipes_

spring-mvc-concepts-2

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.

spring2-mvc-hello-world

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.

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}
                ${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.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 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.

spring2-mvc-demo

Wie es funktioniert?

  1. http://localhost:8080/spring2/welcome.htm wird angefordert.

  2. Die URL endet mit der Erweiterung ".htm", sodass sie zu "DispatcherServlet" umleitet und Anforderungen an das Standard-BeanNameUrlHandlerMapping sendet.

  3. BeanNameUrlHandlerMapping gibt HelloWorldController an das DispatcherServlet zurück.

  4. DispatcherServlet leitet Anforderung an den HelloWorldController weiter.

  5. HelloWorldController verarbeitet es und gibt ein ModelAndView-Objekt mit dem Ansichtsnamen „HelloWorldPage“ zurück.

  6. Das DispatcherServlet hat das ModelAndView empfangen und den viewResolver aufgerufen, um es zu verarbeiten.

  7. viewResolver gibt die/WEB-INF/pages/HelloWorldPage.jsp an das DispatcherServlet zurück.

  8. 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)