[JAVA] Mappage du servlet Spring Boot

Sur cette page, nous examinerons un exemple de mappage de servlet Spring Boot. Le mappage de servlet peut être réalisé en utilisant le ServletRegistrationBean ou en utilisant l'annotation Spring Boot @ServletComponentScan. Le ServletRegistrationBean enregistre le Servlet en tant que Spring Bean. @ServletComponentScan scanne le servlet annoté avec @WebServlet. L'annotation @ServletComponentScan ne fonctionne qu'avec le serveur intégré de Spring Boot. Sur cette page, nous allons créer deux servlets et une classe Spring Controller. Voici un exemple d'utilisation des servlets par étapes à l'aide de ServletRegistrationBean et @ServletComponentScan.

Conditions préalables

  1. Java 9
  2. Spring 5.0.7.RELEASE
  3. Spring Boot 2.0.3.RELEASE
  4. Maven 3.5.2
  5. Eclipse Oxygen

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.concretepage</groupId>
		<artifactId>spring-boot-app</artifactId>
		<version>0.0.1-SNAPSHOT</version>
		<packaging>jar</packaging>
		<name>spring-boot-app</name>
		<description>Spring Boot Application</description>

		<parent>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-parent</artifactId>
			<version>2.0.3.RELEASE</version>
			<relativePath/>
		</parent>
		<properties>
			<java.version>9</java.version>
		</properties>
		<dependencies>
			<dependency>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-starter-web</artifactId>
			</dependency>
			<dependency>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-devtools</artifactId>
				<optional>true</optional>
			</dependency>
		</dependencies> 
		
		<build>
			<plugins>
				<plugin>
					<groupId>org.springframework.boot</groupId>
					<artifactId>spring-boot-maven-plugin</artifactId>
				</plugin>
			</plugins>
		</build>
	</project> 

Enregistrez le servlet en tant que Spring Bean à l'aide de ServletRegistrationBean

Le ServletRegistrationBean est utilisé pour enregistrer le servlet avec un conteneur Servlet 3.0 ou version ultérieure. Vous devez créer un Bean pour le ServletRegistrationBean dans JavaConfig. Trouvez quelques méthodes du ServletRegistrationBean utilisé pour configurer le servlet.

** setServlet () **: définit le servlet à enregistrer. ** addUrlMappings () **: ajoute des mappages d'URL de servlet. ** setLoadOnStartup **: définit la priorité de chargement du servlet au démarrage.

Il existe deux servlets, HelloCountryServlet et HelloStateServlet, qui sont enregistrés avec Spring Boot à l'aide du ServletRegistrationBean comme suit:

WebConfig.java


	package com.concretepage;
	import javax.servlet.http.HttpServlet;
	import org.springframework.boot.web.servlet.ServletRegistrationBean;
	import org.springframework.context.annotation.Bean;
	import org.springframework.context.annotation.Configuration;
	import com.concretepage.servlets.HelloCountryServlet;
	import com.concretepage.servlets.HelloStateServlet;

	@Configuration
	public class WebConfig {
	   @Bean	
	   public ServletRegistrationBean<HttpServlet> countryServlet() {
		   ServletRegistrationBean<HttpServlet> servRegBean = new ServletRegistrationBean<>();
		   servRegBean.setServlet(new HelloCountryServlet());
		   servRegBean.addUrlMappings("/country/*");
		   servRegBean.setLoadOnStartup(1);
		   return servRegBean;
	   }
	   @Bean	
	   public ServletRegistrationBean<HttpServlet> stateServlet() {
		   ServletRegistrationBean<HttpServlet> servRegBean = new ServletRegistrationBean<>();
		   servRegBean.setServlet(new HelloStateServlet());
		   servRegBean.addUrlMappings("/state/*");
		   servRegBean.setLoadOnStartup(1);
		   return servRegBean;
	   }   
	} 

Créez un bean ServletRegistrationBean pour chaque servlet. Les servlets HelloCountryServlet et HelloStateServlet sont accessibles à l'aide des URL ** / country ** et ** / state **, respectivement. Recherchez le servlet utilisé dans cet exemple.

HelloCountryServlet.java


	package com.concretepage.servlets;
	import java.io.IOException;
	import java.io.PrintWriter;
	import javax.servlet.http.HttpServlet;
	import javax.servlet.http.HttpServletRequest;
	import javax.servlet.http.HttpServletResponse;

	public class HelloCountryServlet extends HttpServlet   {
		private static final long serialVersionUID = 1L;
		public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException{
		    doGet(request,response);
		}
	        public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
	            response.setContentType("text/html");
	            PrintWriter out = response.getWriter();
		    out.println("<h3>Hello India!</h3>");	
		}
	} 

HelloStateServlet.java


	package com.concretepage.servlets;
	import java.io.IOException;
	import java.io.PrintWriter;
	import javax.servlet.http.HttpServlet;
	import javax.servlet.http.HttpServletRequest;
	import javax.servlet.http.HttpServletResponse;

	public class HelloStateServlet extends HttpServlet   {
		private static final long serialVersionUID = 1L;
		public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException{
		   doGet(request,response);
		}
	        public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
	           response.setContentType("text/html");
	           PrintWriter out = response.getWriter();
		   out.println("<h3>Hello Uttar Pradesh!</h3>");	
		}
	} 

Le contrôleur utilisé dans cet exemple.

HelloWorldController.java


	package com.concretepage.controller;
	import org.springframework.web.bind.annotation.RequestMapping;
	import org.springframework.web.bind.annotation.RestController;

	@RestController
	public class HelloWorldController {     
		
	    @RequestMapping("/world")
	    public String helloMsg() {
	    	String msg = "Hello World!";
	        return msg;
	    }
	} 

Classe principale pour le lancement d'applications.

SpringBootAppStarter.java


	package com.concretepage;
	import org.springframework.boot.SpringApplication;
	import org.springframework.boot.autoconfigure.SpringBootApplication;

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

Exemple de servlet utilisant @ServletComponentScan

Le @ServletComponentScan de Spring Boot analyse les servlets annotés @WebServlet, les filtres annotés @WebFilter et les écouteurs annotés @WebListener. L'annotation @ServletComponentScan est utilisée au niveau de la classe JavaConfig. @ServletComponentScan analyse les servlets, les filtres et les écouteurs uniquement à l'aide du serveur Web intégré. C'est un servlet avec l'annotation @WebServlet.

HelloCountryServlet.java


	package com.concretepage.servlets;
	import java.io.IOException;
	import java.io.PrintWriter;
	import javax.servlet.annotation.WebServlet;
	import javax.servlet.http.HttpServlet;
	import javax.servlet.http.HttpServletRequest;
	import javax.servlet.http.HttpServletResponse;

	@WebServlet(urlPatterns = "/country/*", loadOnStartup = 1)
	public class HelloCountryServlet extends HttpServlet   {
		private static final long serialVersionUID = 1L;
		public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException{
		     doGet(request,response);
		}
	        public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
	             response.setContentType("text/html");
	             PrintWriter out = response.getWriter();
		     out.println("<h3>Hello India!</h3>");	
		}
	} 

HelloStateServlet.java


	package com.concretepage.servlets;
	import java.io.IOException;
	import java.io.PrintWriter;
	import javax.servlet.annotation.WebServlet;
	import javax.servlet.http.HttpServlet;
	import javax.servlet.http.HttpServletRequest;
	import javax.servlet.http.HttpServletResponse;

	@WebServlet(urlPatterns = "/state/*", loadOnStartup = 1)
	public class HelloStateServlet extends HttpServlet   {
		private static final long serialVersionUID = 1L;
		public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException{
		    doGet(request,response);
		}
	        public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
	            response.setContentType("text/html");
	            PrintWriter out = response.getWriter();
		    out.println("<h3>Hello Uttar Pradesh!</h3>");	
		}
	} 

Vous pouvez utiliser @ServletComponentScan comme suit:

SpringBootAppStarter.java


	package com.concretepage;
	import org.springframework.boot.SpringApplication;
	import org.springframework.boot.autoconfigure.SpringBootApplication;
	import org.springframework.boot.web.servlet.ServletComponentScan;

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

Application de test

Vous pouvez exécuter l'application Spring Boot des manières suivantes:

	mvn spring-boot:run
	mvn clean eclipse:eclipse

Cliquez sur puis mettez à jour le projet dans eclipse. Cliquez sur Exécuter en tant que -> Application Java pour exécuter la classe principale SpringBootAppStarter. Ensuite, le serveur Tomcat est démarré.

	mvn clean package

Obtenez un exécutable JAR ** spring-boot-app-0.0.1-SNAPSHOT.jar ** dans le dossier cible. Exécutez ce JAR comme suit.

	java -jar target / spring-boot-app-0.0.1-SNAPSHOT.jar

Le serveur Tomcat est démarré.

Vous êtes maintenant prêt à tester votre application.

L'URL pour exécuter HelloCountryServlet.

http://localhost:8080/country

URL pour exécuter HelloStateServlet.

http://localhost:8080/state

L'URL pour exécuter la méthode HelloWorldController.

http://localhost:8080/world

Les références

Spring Boot Reference Guide ServletRegistrationBean @ServletComponentScan

Site source

Spring Boot Servlet Mapping

Recommended Posts

Mappage du servlet Spring Boot
Défi Spring Boot
Forme de botte de printemps
Spring Boot Rappelez-vous
gae + botte à ressort
Fiche d'apprentissage SPRING BOOT 01
Botte de printemps + Heroku Postgres
Rédaction de mémo de démarrage de printemps (1)
Première botte à ressort (DI)
Fiche d'apprentissage SPRING BOOT 02
Aide-mémoire Spring Boot2
Gestion des exceptions Spring Boot
Environnement de développement-développement Spring Boot-
Procédure d'apprentissage Spring Boot
Utiliser le filtre de servlet avec Spring Boot [compatible Spring Boot 1.x, 2.x]
Apprentissage de Spring Boot [Début]
Rédaction de mémos de démarrage de printemps (2)
Résumé du document Spring Boot 2.2
[Spring Boot] DataSourceProperties $ DataSourceBeanCreationException
Disponibilité de l'application Spring Boot 2.3
Tutoriels Spring Boot Sujets
Télécharger avec Spring Boot
[Spring Boot] Construction de l'environnement (macOS)
Définir le paramètre contextuel dans Spring Boot
Essayez Spring Boot de 0 à 100.
Générer un code à barres avec Spring Boot
Hello World avec Spring Boot
Implémenter GraphQL avec Spring Boot
Calendrier des tâches du didacticiel Spring Boot
Spring 5 et Spring Boot 2 Procédure de préparation pratique
Démarrez avec Spring Boot
Bonjour tout le monde avec Spring Boot!
Multi-projets Spring Boot 2 avec Gradle
[Spring Boot] Création d'applications Web
Paramètres d'échange à chaud Spring Boot
[Java] Thymeleaf Basic (Spring Boot)
Introduction à Spring Boot ① ~ DI ~
Téléchargement de fichiers avec Spring Boot
Spring Boot commençant par copie
Introduction à Spring Boot ② ~ AOP ~
Application Java CICS-Run - (4) Application Spring Boot
Spring Boot à partir de Docker
Spring Boot + Springfox springfox-boot-starter 3.0.0 Utilisation
Conseils relatifs à Spring Boot DB
Hello World avec Spring Boot
Définir des cookies avec Spring Boot
[Spring Boot] Recette de processus de pagination facile
Utiliser Spring JDBC avec Spring Boot
Construction de l'environnement Docker × Spring Boot
Changements majeurs dans Spring Boot 1.5
Ajouter un module avec Spring Boot
Premiers pas avec Spring Boot
NoHttpResponseException dans Spring Boot + WireMock
[Spring Boot] Envoyer un e-mail
Paramètres liés aux performances de Spring Boot
Introduction à Spring Boot, partie 1
Priorité de réglage externe Spring Boot
Essayez d'utiliser Spring Boot Security
[Java] [Spring] Spring Boot 1.4-> 1.2 Note de rétrogradation
Essayez Spring Boot sur Mac