[JAVA] Spring5 MVC-Webanwendungsentwicklung mit Visual Studio-Code Hello World Creation

Einführung

Hello World wird in der Vorlage erstellt, die in [hier] erstellt wurde (https://qiita.com/t_skri/items/aafb1b1c4942ae644f58).

Umgebung

OS:Windows 10 Pro 64bit Editor:Visual Studio Code 1.42.1 JDK:AdoptOpenJDK 11.0.6+10 x64 Apache Maven:v3.6.3 Apache Tomcat:v9.0.31

pom.xml Fügen Sie das für Spring MVC erforderliche Repository zu pom.xml hinzu.

Die Repository-Suche verwendet MVN REPOSITORY. https://mvnrepository.com/

Zu Eigenschaften hinzufügen

<spring.version>5.2.4.RELEASE</spring.version>
<!-- web.Führen Sie build auch ohne XML aus-->
<failOnMissingWebXml>false</failOnMissingWebXml>

Zu Abhängigkeiten hinzufügen

<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-webmvc</artifactId>
	<version>${spring.version}</version>
	<scope>compile</scope>
</dependency>

<dependency>
    	<groupId>org.springframework</groupId>
    	<artifactId>spring-context-support</artifactId>
    	<version>${spring.version}</version>
    	<scope>compile</scope>
</dependency>

<dependency>
	<groupId>org.thymeleaf</groupId>
	<artifactId>thymeleaf-spring5</artifactId>
	<version>3.0.11.RELEASE</version>
	<scope>compile</scope>
</dependency>

<dependency>
  	<groupId>org.thymeleaf.extras</groupId>
    	<artifactId>thymeleaf-extras-springsecurity5</artifactId>
    	<version>3.0.4.RELEASE</version>
    	<scope>compile</scope>
</dependency>

<dependency>
	<groupId>javax.servlet</groupId>
	<artifactId>javax.servlet-api</artifactId>
	<version>4.0.1</version>
	<scope>provided</scope>
</dependency>

<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
	<version>1.18.10</version>
	<scope>provided</scope>
</dependency>

Die gesamte pom.xml.

pom.xml


<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>com.example</groupId>
	<artifactId>hello</artifactId>
	<version>1.0-SNAPSHOT</version>
	<packaging>war</packaging>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<java.version>11</java.version>
		<spring.version>5.2.4.RELEASE</spring.version>
        <!-- web.Führen Sie build auch ohne XML aus-->
        <failOnMissingWebXml>false</failOnMissingWebXml>
	</properties>

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.1</version>
				<configuration>
					<source>${java.version}</source>
					<target>${java.version}</target>
				</configuration>
			</plugin>
		</plugins>
	</build>
	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.11</version>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>${spring.version}</version>
			<scope>compile</scope>
		</dependency>

		<dependency>
    		<groupId>org.springframework</groupId>
    		<artifactId>spring-context-support</artifactId>
    		<version>${spring.version}</version>
    		<scope>compile</scope>
		</dependency>

		<dependency>
			<groupId>org.thymeleaf</groupId>
			<artifactId>thymeleaf-spring5</artifactId>
			<version>3.0.11.RELEASE</version>
			<scope>compile</scope>
		</dependency>

		<dependency>
			<groupId>org.thymeleaf.extras</groupId>
			<artifactId>thymeleaf-extras-java8time</artifactId>
			<version>3.0.4.RELEASE</version>
			<scope>compile</scope>
		</dependency>

		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<version>4.0.1</version>
			<scope>provided</scope>
		</dependency>

		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<version>1.18.10</version>
			<scope>provided</scope>
		</dependency>
	</dependencies>
</project>

MvcConfig.java Erstellen Sie es unter "D: \ JAVA \ Project \ hello \ src \ main \ java \ com \ example \ web \ config". Wenn der Ordner nicht vorhanden ist, erstellen Sie ihn.

MvcConfig.java


package com.example.web.config;

import java.nio.charset.StandardCharsets;

import org.springframework.context.MessageSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.support.ReloadableResourceBundleMessageSource;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.resource.VersionResourceResolver;
import org.thymeleaf.extras.java8time.dialect.Java8TimeDialect;
import org.thymeleaf.spring5.SpringTemplateEngine;
import org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver;
import org.thymeleaf.spring5.view.ThymeleafViewResolver;
import org.thymeleaf.templatemode.TemplateMode;

@EnableWebMvc //Aktivieren Sie Spring MVC
@Configuration
@ComponentScan(basePackages = {"com.example.web.controller"})
public class MvcConfig implements WebMvcConfigurer {
	@Bean
    public SpringResourceTemplateResolver templateResolver() {
        SpringResourceTemplateResolver templateResolver =
                new SpringResourceTemplateResolver();
        //Geben Sie den Namen des Ordners an, in dem Sie die Ansicht speichern möchten
        templateResolver.setPrefix("/WEB-INF/templates/");
        //Geben Sie die Ansichtserweiterung an
        templateResolver.setSuffix(".html");
        //Geben Sie den Vorlagenmodus in HTML an
        templateResolver.setTemplateMode(TemplateMode.HTML);
        //Geben Sie beim Laden der Vorlage den Zeichencode an
        templateResolver.setCharacterEncoding(StandardCharsets.UTF_8.name());

        templateResolver.setCacheable(false);
        return templateResolver;
    }

    @Bean
    public SpringTemplateEngine templateEngine(SpringResourceTemplateResolver templateResolver) {
        SpringTemplateEngine templateEngine = new SpringTemplateEngine();
        //Legen Sie SpringResourceTemplateResolver fest
        templateEngine.setTemplateResolver(templateResolver());
        //Aktivieren Sie den Compiler von SpEL, um die Leistung zu verbessern
        templateEngine.setEnableSpringELCompiler(true);
        //Dialekt hinzugefügt, um Datums- und Uhrzeit-APi zu verwenden
        templateEngine.addDialect(new Java8TimeDialect());
        return templateEngine;
    }

    @Bean
    public ThymeleafViewResolver viewResolver(SpringTemplateEngine templateEngine) {
        ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
        viewResolver.setTemplateEngine(templateEngine);
        //Geben Sie beim Exportieren der Ansicht den Zeichencode an
        viewResolver.setCharacterEncoding(StandardCharsets.UTF_8.name());
        return viewResolver;
    }

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/resources/**")
                .addResourceLocations("/resources/");
        registry.addResourceHandler("/webjars/**")
        		.addResourceLocations("classpath:/META-INF/resources/webjars/")
        		.resourceChain(false)
        		.addResolver(new VersionResourceResolver()
        				.addContentVersionStrategy("/**"));
    }

    //Einstellungen für die Nachrichtenquelle
    //Eigenschaftendateien können auf WEB-Seiten verwendet werden
    //Japanische Nachrichten: Nachrichten_ja.properties
    @Bean
    public MessageSource messageSource() {
        ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
        messageSource.setBasename("classpath:i18n/messages");

        //Wenn true festgelegt ist, wird der Schlüssel angezeigt, wenn der Nachrichtenschlüssel nicht vorhanden ist.
        //Wenn false, wird NoSuchMessageException ausgelöst
        messageSource.setUseCodeAsDefaultMessage(true);
        messageSource.setDefaultEncoding("UTF-8");
        // # -1 :Nicht neu laden, 0:Immer neu laden
        messageSource.setCacheSeconds(0);
        return messageSource;
    }
}

WebAppInitializer.java Erstellen Sie es unter "D: \ JAVA \ Project \ hello \ src \ main \ java \ com \ example \ web \ config". Wenn der Ordner nicht vorhanden ist, erstellen Sie ihn.

WebAppInitializer.java


package com.example.web.config;

import java.nio.charset.StandardCharsets;

import javax.servlet.Filter;

import org.springframework.web.filter.CharacterEncodingFilter;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
	/**
     *Gibt Java Config-Klassen für Nicht-Spring-MVC an, z. B. Geschäftslogik.
     */
    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class<?>[] {};
    }

    /**
     *Gibt die Java Config-Klasse für Spring MVC an.
     */
    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class<?>[] {MvcConfig.class};
    }

    /**
     *Geben Sie das URL-Muster für DispatcherServlet an.
     * "/"Durch Angabe empfängt DispatcherServlet alle Anforderungen.
     */
    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }

    /**
     *Geben Sie den Servlet-Filter an.
     *Wenn mehrere Filter vorhanden sind, werden sie in der im Array angegebenen Reihenfolge ausgeführt.
     */
    @Override
    protected Filter[] getServletFilters() {
        return new Filter[]{
                new CharacterEncodingFilter(StandardCharsets.UTF_8.name(), true)};
    }
}

Controller erstellen

Erstellen Sie es unter "D: \ JAVA \ Project \ hello \ src \ main \ java \ com \ example \ web \ controller". Wenn der Ordner nicht vorhanden ist, erstellen Sie ihn.

RootController.java


package com.example.web.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class RootController {

    @GetMapping("/")
    public String root() {
        // "redirect:"Wenn Sie am Anfang hinzufügen, handelt es sich um eine Weiterleitung
        return "redirect:hello/index";
    }

}

HelloController.java


package com.example.web.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/hello")
public class HelloController {

    @GetMapping("/index")
    public String indexGet() {
        return "hello/index";
    }
}

Ansicht erstellen

Erstellen Sie es unter "D: \ JAVA \ Project \ hello \ src \ main \ webapp \ WEB-INF \ templates \ hello". Wenn der Ordner nicht vorhanden ist, erstellen Sie ihn.

index.html


<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
    <head>
        <meta charset="UTF-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>Hello World</title>
    </head>
    
    <body>
        <h1>Hello World</h1>
    </body>
</html>

kompilieren

Mit dem folgenden Befehl können Sie eine Kriegsdatei kompilieren und erstellen.

mvn package
D:\JAVA\Project\hello>mvn package
[INFO] Scanning for projects...
[INFO]
[INFO] -------------------------< com.example:hello >--------------------------
[INFO] Building hello 1.0-SNAPSHOT
[INFO] --------------------------------[ war ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ hello ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory D:\JAVA\Project\hello\src\main\resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ hello ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 4 source files to D:\JAVA\Project\hello\target\classes
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ hello ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory D:\JAVA\Project\hello\src\test\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ hello ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ hello ---
[INFO] 
[INFO] --- maven-war-plugin:2.2:war (default-war) @ hello ---
[INFO] Packaging webapp
[INFO] Assembling webapp [hello] in [D:\JAVA\Project\hello\target\hello-1.0-SNAPSHOT]
[INFO] Processing war project
[INFO] Copying webapp resources [D:\JAVA\Project\hello\src\main\webapp]
[INFO] Webapp assembled in [164 msecs]
[INFO] Building war: D:\JAVA\Project\hello\target\hello-1.0-SNAPSHOT.war
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  3.883 s
[INFO] Finished at: 2020-03-08T20:35:04+09:00
[INFO] ------------------------------------------------------------------------

Funktionsprüfung

Befehlspalette

Tomcat: Add Tomcat Server

Das Dialogfeld zur Auswahl des Tomcat-Ordners wird angezeigt. Wählen Sie den Ordner aus, in den Sie Tomcat entpackt haben (D: \ JAVA \ Tomcat \ apache-tomcat-9.0.31).

Befehlspalette

Tomcat: Run on Tomcat Server

Das Dialogfeld zur Auswahl der Kriegsdatei wird angezeigt. Wählen Sie die Kriegsdatei (D: \ JAVA \ Project \ SpringSample01 \ target \ hello-1.0-SNAPSHOT.war) aus, die von "mvn package" erstellt wurde.

Bitte greifen Sie auf "[http: // localhost: 8080 /](http: // localhost: 8080 /)" zu. Abhängig von den Einstellungen wird der Browser automatisch gestartet. tomcat2.jpg

Klicken Sie auf Hallo-1.0-SNAPSHOT.

"Hallo Welt" wird angezeigt. tomcat3.jpg

Diese Beispielquelle

Auf GitHub hochgeladen. https://github.com/t-skri1/SpringSample01

Referenzquelle

Memo zur Entwicklung von Webanwendungen mit MVN, Tomcat, JSP / Servlet mit VScode https://qiita.com/harhogefoo/items/2fa52ecee90b7a25e4c9

Zusammenfassung

Dieses Beispiel ist nur Ansicht und Controller in MVC. Zum Hinzufügen eines Modells sind separate Einstellungen erforderlich. Ich werde die Einstellungsmethode im Verbindungsbeispiel an SQL Server senden.

Recommended Posts

Spring5 MVC-Webanwendungsentwicklung mit Visual Studio-Code Hello World Creation
Spring Boot2-Webanwendungsentwicklung mit Visual Studio Code Hello World-Erstellung
Entwicklung von Spring5 MVC-Webanwendungen mit Visual Studio Code Maven-Vorlagenerstellung
Spring 5 MVC-Webanwendungsentwicklung mit Visual Studio Code Spring Security-Verwendung 2/3 [Seitenerstellung 1/2]
Spring 5 MVC-Webanwendungsentwicklung mit Visual Studio Code Spring Security-Verwendung 3/3 [Seitenerstellung 2/2]
Spring 5 MVC-Webanwendungsentwicklung mit Visual Studio Code Spring Security-Nutzung 1/3 [Vorbereitung]
Spring5 MVC-Webanwendungsentwicklung mit Visual Studio Code SQL Server-Verbindung
Spring Boot2-Webanwendungsentwicklung mit Visual Studio Code SQL Server-Verbindung
Entwicklung von Spring5 MVC-Webanwendungen mit Visual Studio Code Environment-Konstruktion (Installation von JDK11 / Maven / Tomcat / Visual Studio Code)
Erstellen Sie eine Hello World-Webanwendung mit Spring Framework + Jetty
Erstellen Sie mit Java + Spring eine Web-APP-Entwicklungsumgebung mit Visual Studio Code
Erstellen Sie eine Java-Programmentwicklungsumgebung mit Visual Studio Code
Hallo Welt (Konsolen-App) mit Apache Camel + Spring Boot 2
Hallo Welt mit Spring Boot
Hallo Welt mit Spring Boot!
Hallo Welt mit VS Code!
Hallo Welt mit Spring Boot
Verwenden Sie PlantUML mit Visual Studio Code
Bis "Hallo Welt" mit Spring Boot
(Intellij) Hallo Welt mit Spring Boot
Hallo Welt mit Eclipse + Spring Boot + Maven
Starten Sie die Entwicklung von Webanwendungen mit Spring Boot
Java-Entwicklung mit Codenvy: Hello World! Run
Wie Spring Security mit Hello World funktioniert
(IntelliJ + gradle) Hallo Welt mit Spring Boot
Eine Aufzeichnung zum Einrichten einer Java-Entwicklungsumgebung mit Visual Studio Code
Erleben Sie .NET 5 mit Docker und Visual Studio Code
Hallo Welt! Mit Spring Boot (Marven + Texteditor)
Hallo Welt mit explosiver Geschwindigkeit mit Spring Initializr! !! !!
[Java] Hallo Welt mit Java 14 x Spring Boot 2.3 x JUnit 5 ~
Versuchen Sie, Hallo Welt mit Frühling + Gradle anzuzeigen
Erste Schritte mit Java-Programmen mit Visual Studio Code
Hallo Welt (REST API) mit Apache Camel + Spring Boot 2
Warum können Sie Java mit Visual Studio Code entwickeln?
Hallo Welt mit Micronaut
Erstellung einer Java-Webanwendungsentwicklungsumgebung mit VS-Code (struts2)
So erhalten Sie eine leere Anfrage mit Spring Web MVC @RequestBody
Java-Konfiguration mit Spring MVC
[Spring Boot] Erstellung von Webanwendungen
Java mit Visual Studio Code
Hallo Welt mit SpringBoot / Gradle
Hallo Welt, mit Asakusa Framework!
Verwendung von PlantUML mit Visual Studio Code (erstellt am 30. Oktober 2020)
Bis Sie Hello World of JavaFX mit VSCode + Gradle ausführen
Vergleiche Hallo Welt! Mit Spring Boot mit Java, Kotlin und Groovy
[Mit Beispielcode] Grundlagen von Spring JDBC mit der Blog-App gelernt
Was ich aus Java gelernt habe, funktioniert mit Visual Studio Code
Konstruktion der Minecraft Mod-Entwicklungsumgebung (IntelliJ IDEA + Minecraft Forge 1.15.2) + Hello World Mod-Erstellung