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.
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>
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);
}
}
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);
}
}
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
Spring Boot Reference Guide ServletRegistrationBean @ServletComponentScan
Recommended Posts