[JAVA] Développement d'applications Web Spring5 MVC avec Visual Studio Code Hello World Creation

introduction

Hello World sera créé dans le modèle créé en ici.

environnement

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 Ajoutez le référentiel requis pour Spring MVC à pom.xml.

MVN REPOSITORY est utilisé pour rechercher le référentiel. https://mvnrepository.com/

Ajouter aux propriétés

<spring.version>5.2.4.RELEASE</spring.version>
<!-- web.Exécutez la compilation même sans xml-->
<failOnMissingWebXml>false</failOnMissingWebXml>

Ajouter aux dépendances

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

L'ensemble du fichier 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.Exécutez la compilation même sans xml-->
        <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 Créez-le dans "D: \ JAVA \ Project \ hello \ src \ main \ java \ com \ example \ web \ config". Si le dossier n'existe pas, créez-le.

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 //Activer Spring MVC
@Configuration
@ComponentScan(basePackages = {"com.example.web.controller"})
public class MvcConfig implements WebMvcConfigurer {
	@Bean
    public SpringResourceTemplateResolver templateResolver() {
        SpringResourceTemplateResolver templateResolver =
                new SpringResourceTemplateResolver();
        //Spécifiez le nom du dossier dans lequel vous souhaitez enregistrer la vue
        templateResolver.setPrefix("/WEB-INF/templates/");
        //Spécifiez l'extension de vue
        templateResolver.setSuffix(".html");
        //Spécifier le mode modèle en HTML
        templateResolver.setTemplateMode(TemplateMode.HTML);
        //Spécifiez le code de caractère lors du chargement du modèle
        templateResolver.setCharacterEncoding(StandardCharsets.UTF_8.name());

        templateResolver.setCacheable(false);
        return templateResolver;
    }

    @Bean
    public SpringTemplateEngine templateEngine(SpringResourceTemplateResolver templateResolver) {
        SpringTemplateEngine templateEngine = new SpringTemplateEngine();
        //Définir SpringResourceTemplateResolver
        templateEngine.setTemplateResolver(templateResolver());
        //Activer le compilateur de SpEL pour améliorer les performances
        templateEngine.setEnableSpringELCompiler(true);
        //Ajout d'un dialecte pour utiliser la date et l'heure APi
        templateEngine.addDialect(new Java8TimeDialect());
        return templateEngine;
    }

    @Bean
    public ThymeleafViewResolver viewResolver(SpringTemplateEngine templateEngine) {
        ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
        viewResolver.setTemplateEngine(templateEngine);
        //Spécifiez le code de caractère lors de l'exportation de la vue
        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("/**"));
    }

    //Paramètres de source de message
    //Les fichiers de propriétés peuvent être utilisés sur les pages WEB
    //Messages japonais: messages_ja.properties
    @Bean
    public MessageSource messageSource() {
        ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
        messageSource.setBasename("classpath:i18n/messages");

        //Si défini sur true, la clé sera affichée si la clé de message n'existe pas.
        //Si faux, lancez NoSuchMessageException
        messageSource.setUseCodeAsDefaultMessage(true);
        messageSource.setDefaultEncoding("UTF-8");
        // # -1 :Ne pas recharger, 0:Recharger toujours
        messageSource.setCacheSeconds(0);
        return messageSource;
    }
}

WebAppInitializer.java Créez-le dans "D: \ JAVA \ Project \ hello \ src \ main \ java \ com \ example \ web \ config". Si le dossier n'existe pas, créez-le.

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 {
	/**
     *Spécifie les classes Java Config pour MVC non Spring, telles que la logique métier.
     */
    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class<?>[] {};
    }

    /**
     *Spécifie la classe Java Config pour Spring MVC.
     */
    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class<?>[] {MvcConfig.class};
    }

    /**
     *Spécifiez le modèle d'URL pour DispatcherServlet.
     * "/"En spécifiant, DispatcherServlet reçoit toutes les demandes.
     */
    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }

    /**
     *Spécifiez le filtre de servlet.
     *S'il y a plusieurs filtres, ils seront exécutés dans l'ordre spécifié dans le tableau.
     */
    @Override
    protected Filter[] getServletFilters() {
        return new Filter[]{
                new CharacterEncodingFilter(StandardCharsets.UTF_8.name(), true)};
    }
}

Créer un contrôleur

Créez-le dans "D: \ JAVA \ Project \ hello \ src \ main \ java \ com \ example \ web \ controller". Si le dossier n'existe pas, créez-le.

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:"Préfixe à rediriger
        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";
    }
}

Créer une vue

Créez-le dans "D: \ JAVA \ Project \ hello \ src \ main \ webapp \ WEB-INF \ templates \ hello". Si le dossier n'existe pas, créez-le.

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>

compiler

Vous pouvez compiler et créer un fichier war avec la commande suivante.

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] ------------------------------------------------------------------------

Contrôle de fonctionnement

Palette de commandes

Tomcat: Add Tomcat Server

La boîte de dialogue de sélection de dossier Tomcat s'affiche. Sélectionnez le dossier dans lequel vous avez décompressé Tomcat (D: \ JAVA \ Tomcat \ apache-tomcat-9.0.31).

Palette de commandes

Tomcat: Run on Tomcat Server

La boîte de dialogue de sélection de fichier war sera affichée. Sélectionnez le fichier war (D: \ JAVA \ Project \ SpringSample01 \ target \ hello-1.0-SNAPSHOT.war) créé par "mvn package".

Veuillez accéder à "[http: // localhost: 8080 /](http: // localhost: 8080 /)". En fonction des paramètres, le navigateur démarre automatiquement. tomcat2.jpg

Cliquez sur hello-1.0-SNAPSHOT.

"Hello World" s'affiche. tomcat3.jpg

Cette source d'échantillon

Téléchargé sur GitHub. https://github.com/t-skri1/SpringSample01

Source de référence

Mémo de développement d'applications Web avec MVN, Tomcat, JSP / Servlet avec VScode https://qiita.com/harhogefoo/items/2fa52ecee90b7a25e4c9

Résumé

Cet exemple est uniquement View et Controller dans MVC. Des paramètres distincts sont nécessaires pour ajouter un modèle. Je publierai la méthode de paramétrage dans l'exemple de connexion à SQL Server.

Recommended Posts

Développement d'applications Web Spring5 MVC avec Visual Studio Code Hello World Creation
Développement d'applications Web Spring Boot2 avec création de Visual Studio Code Hello World
Développement d'applications Web Spring5 MVC avec création de modèles Visual Studio Code Maven
Développement d'applications Web Spring 5 MVC avec Visual Studio Code Utilisation de Spring Security 2/3 [Création de page 1/2]
Développement d'applications Web Spring 5 MVC avec Visual Studio Code Utilisation de Spring Security 3/3 [Création de page 2/2]
Développement d'applications Web Spring 5 MVC avec Visual Studio Code Utilisation de Spring Security 1/3 [Préparation]
Développement d'applications Web Spring5 MVC avec connexion Visual Studio Code SQL Server
Développement d'applications Web Spring Boot2 avec connexion Visual Studio Code SQL Server
Développement d'applications Web Spring5 MVC avec construction de l'environnement de code Visual Studio (installation de JDK11 / Maven / Tomcat / Visual Studio Code)
Créez une application Web Hello World avec Spring Framework + Jetty
Créer un environnement de développement Web APP avec Java + Spring avec Visual Studio Code
Créer un environnement de développement de programme Java avec Visual Studio Code
Hello World (application console) avec Apache Camel + Spring Boot 2
Hello World avec Spring Boot
Bonjour tout le monde avec Spring Boot!
Bonjour tout le monde avec VS Code!
Hello World avec Spring Boot
Utiliser PlantUML avec Visual Studio Code
Jusqu'à "Hello World" avec Spring Boot
(Intellij) Hello World avec Spring Boot
Hello World avec Eclipse + Spring Boot + Maven
Démarrez le développement d'applications Web avec Spring Boot
Développement Java avec Codenvy: Hello World! Run
Comment Spring Security fonctionne avec Hello World
(IntelliJ + gradle) Hello World avec Spring Boot
Un enregistrement de la configuration d'un environnement de développement Java avec Visual Studio Code
Découvrez .NET 5 avec Docker et Visual Studio Code
Bonjour tout le monde! Avec Spring Boot (Marven + éditeur de texte)
Hello World à une vitesse explosive avec Spring Initializr! !! !!
[Java] Hello World avec Java 14 x Spring Boot 2.3 x JUnit 5 ~
Essayez d'afficher Hello World avec Spring + Gradle
Prise en main des programmes Java à l'aide de Visual Studio Code
Hello World (API REST) avec Apache Camel + Spring Boot 2
Pourquoi pouvez-vous développer Java avec Visual Studio Code?
Hello World avec Micronaut
Construction d'environnement de développement d'applications Web Java avec VS Code (struts2)
Pour recevoir une demande vide avec Spring Web MVC @RequestBody
Configuration Java avec Spring MVC
[Spring Boot] Création d'applications Web
Java avec Visual Studio Code
Hello World avec SpringBoot / Gradle
Bonjour tout le monde! Avec Asakusa Framework!
Comment utiliser PlantUML avec Visual Studio Code (créé le 30 octobre 2020)
Jusqu'à ce que vous exécutiez Hello World of JavaFX avec VSCode + Gradle
Comparez Hello, world! Avec Spring Boot avec Java, Kotlin et Groovy
[Avec un exemple de code] Les bases de Spring JDBC apprises avec l'application Blog
Ce que j'ai appris en travaillant Java avec Visual Studio Code
Construction de l'environnement de développement de Minecraft Mod (IntelliJ IDEA + Minecraft Forge 1.15.2) + Création de Hello World Mod