[JAVA] Spring Boot Servlet-Zuordnung

Auf dieser Seite sehen wir uns ein Beispiel für eine Spring Boot Servlet-Zuordnung an. Die Servlet-Zuordnung kann mithilfe der ServletRegistrationBean oder mithilfe der Annotation Spring Boot @ServletComponentScan erreicht werden. Die ServletRegistrationBean registriert das Servlet als Spring Bean. @ServletComponentScan scannt das mit @WebServlet kommentierte Servlet. Die Anmerkung @ServletComponentScan funktioniert nur mit dem integrierten Server von Spring Boot. Auf dieser Seite erstellen wir zwei Servlets und eine Spring Controller-Klasse. Hier ist ein Beispiel für die schrittweise Verwendung von Servlets mit ServletRegistrationBean und @ServletComponentScan.

Voraussetzungen

  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> 

Registrieren Sie das Servlet mit der ServletRegistrationBean als Spring Bean

Die ServletRegistrationBean wird verwendet, um das Servlet bei einem Servlet 3.0- oder höher-Container zu registrieren. Sie müssen eine Bean für die ServletRegistrationBean in JavaConfig erstellen. Hier finden Sie einige Methoden der ServletRegistrationBean, mit denen das Servlet konfiguriert wird.

** setServlet () **: Legt das zu registrierende Servlet fest. ** addUrlMappings () **: URL-Zuordnungen für das Servlet hinzufügen. ** setLoadOnStartup **: Legt die Priorität für das Laden des Servlets beim Start fest.

Es gibt zwei Servlets, HelloCountryServlet und HelloStateServlet, die wie folgt bei Spring Boot mithilfe der ServletRegistrationBean registriert werden:

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

Erstellen Sie für jedes Servlet eine ServletRegistrationBean-Bean. Auf die Servlets HelloCountryServlet und HelloStateServlet kann über die URLs ** / country ** bzw. ** / state ** zugegriffen werden. Suchen Sie das in diesem Beispiel verwendete Servlet.

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>");	
		}
	} 

Der in diesem Beispiel verwendete Controller.

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

Hauptklasse zum Starten von Anwendungen.

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);
	    }
	} 

Beispiel eines Servlets mit @ServletComponentScan

@ServletComponentScan von Spring Boot scannt mit @ WebServlet kommentierte Servlets, mit @ WebFilter kommentierte Filter und mit @ WebListener kommentierte Listener. Die Annotation @ServletComponentScan wird auf JavaConfig-Klassenebene verwendet. @ServletComponentScan scannt Servlets, Filter und Listener nur über den eingebetteten Webserver. Dies ist ein mit @WebServlet kommentiertes Servlet.

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>");	
		}
	} 

Sie können @ServletComponentScan wie folgt verwenden:

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);
	    }
	} 

Anwendung testen

Sie können die Spring Boot-Anwendung auf folgende Arten ausführen:

	mvn spring-boot:run
	mvn clean eclipse:eclipse

Klicken Sie auf und aktualisieren Sie das Projekt in Eclipse. Klicken Sie auf Ausführen als-> Java-Anwendung, um die Hauptklasse SpringBootAppStarter auszuführen. Dann wird der Tomcat-Server gestartet.

	mvn clean package

Holen Sie sich die ausführbare JAR ** spring-boot-app-0.0.1-SNAPSHOT.jar ** in den Zielordner. Führen Sie diese JAR wie folgt aus.

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

Der Tomcat-Server wird gestartet.

Jetzt können Sie Ihre Anwendung testen.

Die URL zum Ausführen von HelloCountryServlet.

http://localhost:8080/country

URL zum Ausführen von HelloStateServlet.

http://localhost:8080/state

Die URL zum Ausführen der HelloWorldController-Methode.

http://localhost:8080/world

Verweise

Spring Boot Reference Guide ServletRegistrationBean @ServletComponentScan

Quellseite

Spring Boot Servlet Mapping

Recommended Posts

Spring Boot Servlet-Zuordnung
Fordern Sie Spring Boot heraus
Spring Boot Form
Spring Boot Denken Sie daran
gae + frühlingsstiefel
SPRING BOOT Lernaufzeichnung 01
Frühlingsstiefel + Heroku Postgres
Schreiben von Frühlingsstiefel-Memos (1)
Erster Frühlingsstiefel (DI)
SPRING BOOT Lernprotokoll 02
Spring Boot2 Spickzettel
Spring Boot-Ausnahmebehandlung
Spring Boot Entwicklung-Entwicklungsumgebung-
Spring Boot-Lernverfahren
Servlet-Filter mit Spring Boot verwenden [Spring Boot 1.x, 2.x kompatibel]
Spring Boot lernen [Anfang]
Schreiben von Spring Boot-Memos (2)
Spring Boot 2.2 Dokumentzusammenfassung
[Spring Boot] DataSourceProperties $ DataSourceBeanCreationException
Spring Boot 2.3 Verfügbarkeit von Anwendungen
Spring Boot Tutorials Themen
Mit Spring Boot herunterladen
[Spring Boot] Umgebungskonstruktion (macOS)
Legen Sie den Kontextparameter in Spring Boot fest
Versuchen Sie Spring Boot von 0 bis 100.
Generieren Sie mit Spring Boot einen Barcode
Hallo Welt mit Spring Boot
Implementieren Sie GraphQL mit Spring Boot
Aufgabenplan für das Spring Boot Tutorial
Spring 5 & Spring Boot 2 Praktisches Vorbereitungsverfahren
Beginnen Sie mit Spring Boot
Hallo Welt mit Spring Boot!
Spring Boot 2 Multiprojekt mit Gradle
[Spring Boot] Erstellung von Webanwendungen
Spring Boot Hot Swapping-Einstellungen
[Java] Thymeleaf Basic (Spring Boot)
Einführung in Spring Boot ~ ~ DI ~
Datei-Upload mit Spring Boot
Spring Boot beginnt mit dem Kopieren
Einführung in Spring Boot ② ~ AOP ~
CICS-Java-Anwendung ausführen- (4) Spring Boot-App
Spring Boot beginnend mit Docker
Spring Boot + Springfox Springfox-Boot-Starter 3.0.0 Verwendung
Tipps zur Spring Boot DB
Hallo Welt mit Spring Boot
Setzen Sie Cookies mit Spring Boot
[Spring Boot] Einfaches Rezept für den Paging-Prozess
Verwenden Sie Spring JDBC mit Spring Boot
Aufbau der Docker x Spring Boot-Umgebung
Wichtige Änderungen in Spring Boot 1.5
Modul mit Spring Boot hinzufügen
Erste Schritte mit Spring Boot
NoHttpResponseException in Spring Boot + WireMock
[Spring Boot] Senden Sie eine E-Mail
Einstellungen für die Spring Boot-Leistung
Einführung in Spring Boot Teil 1
Spring Boot Externe Einstellungspriorität
Versuchen Sie es mit Spring Boot Security
[Java] [Spring] Spring Boot 1.4-> 1.2 Downgrade Hinweis
Versuchen Sie Spring Boot auf dem Mac