Spring MVC Tutorial

** 1. Übersicht

**

Dies ist ein einfaches Spring MVC-Tutorial, in dem gezeigt wird, wie Sie ein Spring MVC-Projekt einrichten, sowohl mit einer Java-basierten Konfiguration als auch mit einer XML-Konfiguration.

Die Maven-Abhängigkeiten für ein Spring-MVC-Projekt werden im Artikel link/spring-with-maven # mvc[Spring-MVC-Abhängigkeiten]ausführlich beschrieben.

** 2. Spring MVC mit Java-Konfiguration

**

Um die Spring MVC-Unterstützung über eine Java-Konfigurationsklasse zu aktivieren, müssen Sie nur noch die Annotation @ EnableWebMvc hinzufügen.

@EnableWebMvc
@Configuration
public class ClientWebConfig {

   ///...
}

Dadurch wird die grundlegende Unterstützung eingerichtet, die wir für ein MVC-Projekt benötigen, z. B. das Registrieren von Controllern und Zuordnungen, Typkonverter, Validierungsunterstützung, Nachrichtenkonverter und die Ausnahmebehandlung.

  • Wenn Sie diese Konfiguration anpassen möchten, müssen Sie die Schnittstelle WebMvcConfigurer implementieren: **

@EnableWebMvc
@Configuration
public class ClientWebConfig implements WebMvcConfigurer {

   @Override
   public void addViewControllers(ViewControllerRegistry registry) {
      registry.addViewController("/index");
   }

   @Bean
   public ViewResolver viewResolver() {
      InternalResourceViewResolver bean = new InternalResourceViewResolver();

      bean.setViewClass(JstlView.class);
      bean.setPrefix("/WEB-INF/view/");
      bean.setSuffix(".jsp");

      return bean;
   }
}

In diesem Beispiel haben wir eine ViewResolver -Bean registriert, die .jsp -Views aus dem Verzeichnis /WEB-INF/view zurückgibt.

Sehr wichtig hierbei ist, dass wir View-Controller registrieren können, die eine direkte Zuordnung zwischen der URL und dem View-Namen erstellen, indem Sie __ViewControllerRegistry verwenden.

Wenn Sie auch Controller-Klassen definieren und scannen möchten, können Sie die Annotation @ ComponentScan mit dem Paket hinzufügen, das die Controller enthält:

@EnableWebMvc
@Configuration
@ComponentScan(basePackages = { "com.baeldung.web.controller" })
public class WebConfig implements WebMvcConfigurer {
   //...
}

Um eine Anwendung zu booten, die diese Konfiguration lädt, benötigen wir auch eine Initialisierungsklasse:

public class MainWebAppInitializer implements WebApplicationInitializer {
    @Override
    public void onStartup(final ServletContext sc) throws ServletException {

        AnnotationConfigWebApplicationContext root =
          new AnnotationConfigWebApplicationContext();

        root.scan("com.baeldung");
        sc.addListener(new ContextLoaderListener(root));

        ServletRegistration.Dynamic appServlet =
          sc.addServlet("mvc", new DispatcherServlet(new GenericWebApplicationContext()));
        appServlet.setLoadOnStartup(1);
        appServlet.addMapping("/");
    }
}

Beachten Sie, dass für Versionen vor Spring 5 die Klasse WebMvcConfigurerAdapter anstelle der Schnittstelle verwendet werden muss.

3. Spring MVC mit XML-Konfiguration

Alternativ zur obigen Java-Konfiguration können Sie auch eine reine XML-Konfiguration verwenden:

<context:component-scan base-package="com.baeldung.web.controller"/>
<mvc:annotation-driven/>

<bean id="viewResolver"
      class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/view/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

    <mvc:view-controller path="/" view-name="index"/>

</beans>

Wenn Sie eine reine XML-Konfiguration verwenden möchten, müssen Sie auch eine web.xml -Datei hinzufügen, um die Anwendung zu booten. Weitere Informationen zu diesem Ansatz finden Sie unter https://www.baeldung.com/spring-xml-vs-java-config (in unserem vorherigen Artikel).

4. Controller und Ansichten

Schauen wir uns ein Beispiel eines Basiscontrollers an:

@Controller
public class SampleController {
    @GetMapping("/sample")
    public String showForm() {
        return "sample";
    }

}

Die entsprechende JSP-Ressource ist die Datei sample.jsp :

<html>
   <head></head>

   <body>
      <h1>This is the body of the sample view</h1>
   </body>
</html>

Die JSP-basierten Ansichtsdateien befinden sich im Ordner/ WEB-INF des Projekts. Sie sind daher nur für die Spring-Infrastruktur und nicht durch direkten URL-Zugriff verfügbar.

5. Spring MVC mit Boot

Spring Boot ist eine Erweiterung der Spring Platform, mit der Sie ganz einfach loslegen und eigenständige Anwendungen in Produktionsqualität erstellen können.

  • Boot soll Spring nicht ersetzen, aber das Arbeiten damit schneller und einfacher machen. **

5.1. Spring Boot Starters

  • Das neue Framework bietet praktische Starter-Abhängigkeiten - dies sind Abhängigkeits-Deskriptoren ** , die alle erforderlichen Technologien für eine bestimmte Funktionalität einbringen können.

Diese haben den Vorteil, dass wir nicht länger für jede Abhängigkeit eine Version angeben müssen, sondern dem Starter die Verwaltung der Abhängigkeiten für uns ermöglichen.

Der schnellste Weg zum Einstieg ist das Hinzufügen des https://search.maven.org/classic/#search%7Cga%7C1%7Ca%3A%22spring-boot-starter-parent%22 ] pom.xml:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.0.RELEASE</version>
</parent>

Dies übernimmt das Abhängigkeitsmanagement.

** 5.2. Spring Boot Einstiegspunkt

**

Jede Anwendung, die mit Spring Boot erstellt wurde, muss lediglich den Haupteinstiegspunkt definieren. Dies ist normalerweise eine Java-Klasse mit der main -Methode, die mit @ SpringBootApplication kommentiert ist:

@SpringBootApplication
public class Application {
    public static void main(String[]args) {
        SpringApplication.run(Application.class, args);
    }
}

Diese Anmerkung fügt die folgenden weiteren Anmerkungen hinzu:

  • @ Configuration - markiert die Klasse als Bean-Quelle

Definitionen ** @ EnableAutoConfiguration - gibt dem Framework an, Beans hinzuzufügen

basierend auf den Abhängigkeiten vom Klassenpfad automatisch ** @ ComponentScan - sucht nach anderen Konfigurationen und Beans in

dasselbe Paket wie die Application -Klasse oder darunter

Mit Spring Boot können wir ein Frontend mit Thymeleaf oder JSPs einrichten, ohne ViewResolver zu verwenden, wie in Abschnitt 3 definiert.

Der Quellcode für die Boot-App ist wie immer verfügbar: https://github.com/eugenp/tutorials/tree/master/spring-boot-bootstrap

Wenn Sie sich für Spring Boot interessieren, werfen Sie einen Blick auf unseren Link:/spring-boot-start[Referenzintro hier].

6. Fazit

In diesem Beispiel haben wir ein einfaches und funktionales Spring MVC-Projekt mit Java-Konfiguration konfiguriert.

Die Implementierung dieses einfachen Spring MVC-Tutorials finden Sie unter https://github.com/eugenp/tutorials/tree/master/spring-mvc-java (GitHub-Projekt). Dies ist ein auf Eclipse basierendes Projekt einfach zu importieren und auszuführen, wie es ist.

Wenn das Projekt lokal ausgeführt wird, kann auf die Datei _sample.jsp zugegriffen werden http://localhost : 8080/spring-mvc-java/sample._