Hello World wird in der Vorlage erstellt, die in [hier] erstellt wurde (https://qiita.com/t_skri/items/aafb1b1c4942ae644f58).
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)};
}
}
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";
}
}
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>
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] ------------------------------------------------------------------------
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.
Klicken Sie auf Hallo-1.0-SNAPSHOT.
"Hallo Welt" wird angezeigt.
Auf GitHub hochgeladen. https://github.com/t-skri1/SpringSample01
Memo zur Entwicklung von Webanwendungen mit MVN, Tomcat, JSP / Servlet mit VScode https://qiita.com/harhogefoo/items/2fa52ecee90b7a25e4c9
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