Exemple de Spring Boot Hello World - JSP
Un exemple d'application WebSpring Boot, utilisantembedded Tomcat + JSP template et le package comme fichier WAR exécutable.
Technologies utilisées:
-
Spring Boot 1.4.2.RELEASE
-
Spring 4.3.4.RELEASE
-
Tomcat Embed 8.5.6
-
Maven 3
-
Java 8
1. Répertoire des projets
Créez manuellement les dossiers suivants:

2. Dépendances du projet
Exemple Maven. Lisez les commentaires pour s'expliquer d'eux-mêmes.
pom.xml
4.0.0 spring-boot-web-jsp war Spring Boot Web JSP Example Spring Boot Web JSP Example https://www.example.com 1.0 org.springframework.boot spring-boot-starter-parent 1.4.2.RELEASE 1.8 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-tomcat provided javax.servlet jstl org.apache.tomcat.embed tomcat-embed-jasper provided org.eclipse.jdt.core.compiler ecj 4.6.1 provided org.webjars bootstrap 3.3.7 org.springframework.boot spring-boot-maven-plugin
Afficher les dépendances du projet:
$ mvn dependency:tree [INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building Spring Boot Web JSP Example 1.0 [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- maven-dependency-plugin:2.10:tree (default-cli) @ spring-boot-web-jsp --- [INFO] org.springframework.boot:spring-boot-web-jsp:war:1.0 [INFO] +- org.springframework.boot:spring-boot-starter-web:jar:1.4.2.RELEASE:compile [INFO] | +- org.springframework.boot:spring-boot-starter:jar:1.4.2.RELEASE:compile [INFO] | | +- org.springframework.boot:spring-boot:jar:1.4.2.RELEASE:compile [INFO] | | +- org.springframework.boot:spring-boot-autoconfigure:jar:1.4.2.RELEASE:compile [INFO] | | +- org.springframework.boot:spring-boot-starter-logging:jar:1.4.2.RELEASE:compile [INFO] | | | +- ch.qos.logback:logback-classic:jar:1.1.7:compile [INFO] | | | | +- ch.qos.logback:logback-core:jar:1.1.7:compile [INFO] | | | | \- org.slf4j:slf4j-api:jar:1.7.21:compile [INFO] | | | +- org.slf4j:jcl-over-slf4j:jar:1.7.21:compile [INFO] | | | +- org.slf4j:jul-to-slf4j:jar:1.7.21:compile [INFO] | | | \- org.slf4j:log4j-over-slf4j:jar:1.7.21:compile [INFO] | | +- org.springframework:spring-core:jar:4.3.4.RELEASE:compile [INFO] | | \- org.yaml:snakeyaml:jar:1.17:runtime [INFO] | +- org.hibernate:hibernate-validator:jar:5.2.4.Final:compile [INFO] | | +- javax.validation:validation-api:jar:1.1.0.Final:compile [INFO] | | +- org.jboss.logging:jboss-logging:jar:3.3.0.Final:compile [INFO] | | \- com.fasterxml:classmate:jar:1.3.3:compile [INFO] | +- com.fasterxml.jackson.core:jackson-databind:jar:2.8.4:compile [INFO] | | +- com.fasterxml.jackson.core:jackson-annotations:jar:2.8.4:compile [INFO] | | \- com.fasterxml.jackson.core:jackson-core:jar:2.8.4:compile [INFO] | +- org.springframework:spring-web:jar:4.3.4.RELEASE:compile [INFO] | | +- org.springframework:spring-aop:jar:4.3.4.RELEASE:compile [INFO] | | +- org.springframework:spring-beans:jar:4.3.4.RELEASE:compile [INFO] | | \- org.springframework:spring-context:jar:4.3.4.RELEASE:compile [INFO] | \- org.springframework:spring-webmvc:jar:4.3.4.RELEASE:compile [INFO] | \- org.springframework:spring-expression:jar:4.3.4.RELEASE:compile [INFO] +- org.springframework.boot:spring-boot-starter-tomcat:jar:1.4.2.RELEASE:provided [INFO] | +- org.apache.tomcat.embed:tomcat-embed-core:jar:8.5.6:provided [INFO] | +- org.apache.tomcat.embed:tomcat-embed-el:jar:8.5.6:provided [INFO] | \- org.apache.tomcat.embed:tomcat-embed-websocket:jar:8.5.6:provided [INFO] +- javax.servlet:jstl:jar:1.2:compile [INFO] +- org.apache.tomcat.embed:tomcat-embed-jasper:jar:8.5.6:provided [INFO] +- org.eclipse.jdt.core.compiler:ecj:jar:4.6.1:provided [INFO] \- org.webjars:bootstrap:jar:3.3.7:compile [INFO] \- org.webjars:jquery:jar:1.11.1:compile [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1.327 s [INFO] Finished at: 2016-11-28T16:57:00+08:00 [INFO] Final Memory: 20M/309M [INFO] ------------------------------------------------------------------------
3. Spring Spring
3.1 This SpringBootServletInitializer run a SpringApplication from a traditional WAR deployment
SpringBootWebApplication.java
package com.example;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.support.SpringBootServletInitializer;
@SpringBootApplication
public class SpringBootWebApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(SpringBootWebApplication.class);
}
public static void main(String[] args) throws Exception {
SpringApplication.run(SpringBootWebApplication.class, args);
}
}
3.2 A simple Spring controller class.
WelcomeController.java
package com.example;
import java.util.Map;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class WelcomeController {
// inject via application.properties
@Value("${welcome.message:test}")
private String message = "Hello World";
@RequestMapping("/")
public String welcome(Map model) {
model.put("message", this.message);
return "welcome";
}
}
4. JSP + Ressources + Fichiers statiques
4.1 For JSP files, put in src/main/webapp/WEB-INF/jsp/
src/main/webapp/WEB-INF/jsp/welcome.jsp
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
Spring Boot Web JSP Example
Message: ${message}
4.2 For static files like CSS or Javascript, put in /src/main/resources/static/
/src/main/resources/static/css/main.css
h1{
color:#0000FF;
}
h2{
color:#FF0000;
}
4.3 For properties files, put in /src/main/resources/
/src/main/resources/application.properties
spring.mvc.view.prefix: /WEB-INF/jsp/ spring.mvc.view.suffix: .jsp welcome.message: Hello Mkyong
Note
Spring Boot, convention sur la configuration, pas besoin de déclarer le mappage de ressources commethis. Le mappage de ressources gère simplement automatiquement - Lire cet article -Spring Boot Serving static content
5. Demo
5.1 Start the Spring Boot web app.
project$ mvn spring-boot:run //... . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v1.4.2.RELEASE) 2016-11-28 17:25:24.809 INFO 4696 --- [ main] com.example.SpringBootWebApplication : Starting SpringBootWebApplication on MKYONG-WIN10 with PID 4696 (C:\spring-boot\spring-boot-examples\spring-boot-web-jsp\target\classes started by example in C:\spring-boot\spring-boot-examples\spring-boot-web-jsp) 2016-11-28 17:25:24.812 INFO 4696 --- [ main] com.example.SpringBootWebApplication : No active profile set, falling back to default profiles: default 2016-11-28 17:25:24.861 INFO 4696 --- [ main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@69410cd3: startup date [Mon Nov 28 17:25:24 SGT 2016]; root of context hierarchy 2016-11-28 17:25:25.950 INFO 4696 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8080 (http) 2016-11-28 17:25:25.965 INFO 4696 --- [ main] o.apache.catalina.core.StandardService : Starting service Tomcat 2016-11-28 17:25:25.966 INFO 4696 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/8.5.6 2016-11-28 17:25:26.171 INFO 4696 --- [ost-startStop-1] org.apache.jasper.servlet.TldScanner : At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. 2016-11-28 17:25:26.180 INFO 4696 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2016-11-28 17:25:26.180 INFO 4696 --- [ost-startStop-1] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 1322 ms 2016-11-28 17:25:26.304 INFO 4696 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean : Mapping servlet: 'dispatcherServlet' to [/] 2016-11-28 17:25:26.312 INFO 4696 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'characterEncodingFilter' to: [/*] 2016-11-28 17:25:26.313 INFO 4696 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [/*] 2016-11-28 17:25:26.313 INFO 4696 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'httpPutFormContentFilter' to: [/*] 2016-11-28 17:25:26.314 INFO 4696 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'requestContextFilter' to: [/*] //... 2016-11-28 17:25:26.841 INFO 4696 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http) 2016-11-28 17:25:26.846 INFO 4696 --- [ main] com.example.SpringBootWebApplication : Started SpringBootWebApplication in 2.403 seconds (JVM running for 5.08)
5.2 Access http://localhost:8080

5.3 Maven package the project as an executable WAR file. Un fichier 18M ++WAR sera généré dans le dossiertarget.
project$ mvn clean package ... [INFO] Building war: ...\spring-boot-web-jsp\target\spring-boot-web-jsp-1.0.war [INFO] [INFO] --- spring-boot-maven-plugin:1.4.2.RELEASE:repackage (default) @ spring-boot-web-jsp --- [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------
Exécutez-le, accédez à nouveau àhttp://localhost:8080.
project$ java -jar target/spring-boot-web-jsp-1.0.war
JSP limitations
Vous ne pouvez pas créer un exécutablejar pour exécuter cet exemple Web Tomcat + JSP intégré, en raison d'un modèle de fichier codé en dur dans Tomcat. Lisez ceciSpring Boot – JSP limitation.
Télécharger le code source
Téléchargez-le -spring-boot-web-jsp.zip (8KB)