[Introduction à Servlet] Un article dont vous n'avez jamais entendu parler

avant-propos

Dans le dernier article, nous avons appris la partie XML de Java Web. Si vous ne connaissez rien à XML, vous pouvez consulter cet article, qui peut vous permettre de démarrer rapidement avec XML.

Portail : Démarrage rapide vers XML

Ensuite, nous commençons officiellement à apprendre Servlet.

Présentation des servlets

concept de base

Servlet (Server Applet), le nom complet de Java Servlet. C'est un programme côté serveur écrit en Java. Sa fonction principale est de parcourir et de modifier les données de manière interactive et de générer du contenu Web dynamique. Servlet au sens étroit fait référence à une interface implémentée par le langage Java, et Servlet au sens large fait référence à toute classe qui implémente l'interface Servlet.En général, les gens comprennent Servlet comme cette dernière.

Ce concept est trop abstrait, apprenons servlet à partir du rôle de servlet !

Mode de fonctionnement du servlet :

(1) Le client envoie une requête au serveur
(2) Le serveur démarre et appelle la servlet, la servlet génère le contenu de la réponse en fonction de la requête du client et la transmet au serveur
(3) Le serveur renvoie la réponse au client

À partir de ce processus, nous pouvons savoir ce que fait le servlet.Ma propre compréhension est un hub clé pour l'interaction front-end et back-end dans le développement Web.

Matou

À ce stade, nous devons mentionner Tomcat, et nous ne pouvons pas nous en passer pour apprendre les servlets.

Tomcat est un serveur d'applications Web et un conteneur de servlet/JSP. En tant que conteneur de servlet, Tomcat est responsable du traitement des demandes des clients, de l'envoi des demandes aux servlets et du renvoi des réponses du servlet aux clients. Les servlets sont une sorte de servlet qui s'exécute en langage Java .composants sur le serveur.

Nous savons seulement que la demande envoyée par le client est la demande, et nous utilisons la réponse lorsque nous répondons. Je ne sais pas comment cela a changé dans ce processus, ignorez les détails, explorons-le maintenant.
insérez la description de l'image ici
De cette figure, nous savons:

(1) Tomcat reçoit et analyse le texte de la requête http, puis l'encapsule dans un objet de requête de type HttpServletRequest. Toutes les données d'en-tête HTTP peuvent être interrogées en appelant la méthode correspondante sur l'objet de requête.
(2) Tomcat encapsulera également les informations à répondre en tant qu'objet de réponse de type HttpServletResponse. En définissant l'attribut de réponse, vous pouvez contrôler le contenu à envoyer au navigateur, puis remettre la réponse à tomcat, et tomcat se transformera dans le format de texte de réponse envoyé au navigateur.

Alors, comment utilisons-nous les servlets ?

Comment utiliser le servlet :

Le cœur de la technologie des servlets est le servlet, qui est une interface que toutes les classes de servlet doivent implémenter directement ou indirectement. Lorsque vous écrivez une classe de servlet qui implémente un servlet, implémentez-la directement. Lorsque vous étendez une classe qui implémente cette interface, implémentez-la indirectement.

L'API Java Servlet est l'interface entre le conteneur de servlet (tomcat) et le servlet. Elle définit diverses méthodes de servlet, et définit également la classe d'objet que le conteneur de servlet transmet au servlet, dont les plus importantes sont ServletRequest et ServletResponse. Ainsi, lorsque nous écrivons un servlet, nous devons implémenter l'interface du servlet et fonctionner conformément à ses spécifications.

En plus de cela, nous devons installer tomcat pour transformer notre ordinateur en un micro serveur afin qu'il puisse répondre pendant votre pratique.

Tutoriel d'installation et de configuration de Tomcat

La première servlet

Après avoir installé le logiciel et configuré l'environnement, nous pouvons écrire notre premier servlet.

Nous créons une classe et héritons de la classe HttpServlet, puis réécrivons la méthode de service dans celle-ci. Dans ce processus, nous devons importer le package correspondant.

HttpServletRequest fait référence à la demande envoyée par le client au serveur, et HttpServletResponse fait référence à la réponse renvoyée par le serveur au client.

import java.io.IOException;
import java.io.PrintWriter;

import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

public class FirstServlet extends HttpServlet{
    
    
	@Override
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    
		//接受请求发来的参数
		String name = request.getParameter("name");
		//服务器返回的响应
		String html = "<h1 style='color:red'>hi,"+ name +"!</h1><hr/>";
		PrintWriter out = response.getWriter();
		out.println(html);
	}

Seul ce fichier Java ne suffit pas. Vous venez d'écrire ceci, et le service ne sait pas quelle est votre demande. Nous devons déclarer Servlet.

Ouvrez le fichier web.xml avec le chemin suivant
insérez la description de l'image ici
Nous devons écrire la déclaration à l'endroit suivant.
insérez la description de l'image ici
La déclaration est la suivante :

	 <!-- 声明Servlet -->
	<servlet>
	<!-- servelt的别名 -->
		<servlet-name>first</servlet-name>
		<servlet-class>com.imooc.servlet.FirstServlet</servlet-class>
	</servlet>
	
	<!-- 将Servlet与URL绑定 -->
	<servlet-mapping>
		<servlet-name>first</servlet-name>
		<url-pattern>/hi</url-pattern>
	</servlet-mapping>

insérez la description de l'image ici

Après l'avoir enregistré, nous pouvons le publier sur le serveur. Faites un clic droit sur notre Tomcat et sélectionnez Ajouter et supprimer.
insérez la description de l'image ici
Sélectionnez FirstServlet et cliquez sur Ajouter pour publier.
insérez la description de l'image ici
Après avoir constaté que FirstServlet atteint la droite, nous pouvons cliquer sur Finish.Après
insérez la description de l'image ici
avoir développé Tomcat, nous constaterons que notre FirstServlet se trouve sous son répertoire. Ensuite, nous sélectionnons tomcat, puis cliquez sur le petit bogue (debug) à droite.Lorsque
insérez la description de l'image ici
nous voyons ce qui suit, notre serveur démarre avec succès.
insérez la description de l'image ici
Ouvrez ensuite le navigateur et entrez localhost:8080/FirstServlet/hi?name=baibai

Où localhost:8080 représente le port local, FirstServlet est le nom de notre projet, hi est l'alias défini lorsque notre servlet est lié à l'URL, ? Il représente les paramètres derrière, et le nom est également la table de paramètres que nous avons écrite dans le fichier Java. Les paramètres que nous transmettons sont blancs.

Le serveur correspondant a également répondu selon le fichier Java que nous avons écrit.
insérez la description de l'image ici
insérez la description de l'image ici
Jusqu'à présent, notre premier servlet a été exécuté et publié avec succès.

Développement de servlet et configuration de base

Nous avons terminé avec succès notre premier servlet ci-dessus, alors quelles sont les étapes de base pour développer un servlet ? Laissez-vous dire tout d'un coup, vous êtes peut-être un peu brouillon, alors résumons-le !

En fait, nous venons de passer par les étapes suivantes lorsque nous avons écrit notre première servlet :

(1) Créer une classe Servlet, hériter de HttpServlet
(2) Réécrire la méthode de service de HttpServlet, écrire le code du programme
(3) Configurer web.xml, lier l'URL

Après avoir pris connaissance de ces étapes, vous revoyez le processus de développement de notre première servlet pour voir si c'est le cas.

Après avoir écrit la servlet, nous devons tous accéder à la servlet pour vérifier si la sortie est normale, alors comment y accéder ? Les méthodes d'accès suivantes sont ce que vous devez savoir.

(1) http://adresse IP : port/context-path/url-mapping
(2) L'accès à distance utilise l'adresse IP, l'accès local localhost (127.0.0.1)
(3) context-path devient "context path", la valeur par défaut est le nom de la construction

Comme avant,
insérez la description de l'image ici
après avoir lu ceci, vous devriez comprendre.

Cycle de vie des servlets

Dans un processus aussi court, Servlet a en fait traversé le processus de la naissance, du travail et de la mort comme un être humain. Parmi elles, init( ), service( ), destroy( )figurent les méthodes du cycle de vie des servlets.

Représente le processus de Servlet de la "naissance" au "travail" à la "mort". Un conteneur de servlet (tel que TomCat) appellera ces trois méthodes selon les règles suivantes :

(1) méthode init( ) : lorsque le servlet est demandé pour la première fois, le conteneur de servlet commencera à appeler cette méthode pour initialiser un objet servlet, mais cette méthode ne sera pas appelée par le conteneur de servlet dans les requêtes suivantes. Nous pouvons utiliser des init()méthodes pour effectuer le travail d'initialisation correspondant. Lors de l'appel de cette méthode, le conteneur de servlet transmettra ServletConfigun objet Servletpour initialiser l'objet.
(2) méthode service() : Chaque fois qu'une servlet est demandée, le conteneur de servlet appellera cette méthode. Lors de la première requête, le conteneur de servlet appellera d'abord la init()méthode pour initialiser un objet servlet, puis appellera sa service()méthode pour fonctionner, mais dans les requêtes suivantes, le conteneur de servlet n'appellera que la méthode de service.
(3) méthode destroy() : lorsque le servlet doit être détruit, le conteneur de servlet appellera cette méthode. Cela se produit lorsque l'application est désinstallée ou que le conteneur de servlet est fermé. Généralement, du code de nettoyage est écrit dans cette méthode.

Commençons par écrire une servlet simple pour vérifier son cycle de vie :

Nous venons de transformer directement la classe FirstServlet. Non seulement nous réécrivons la service()méthode, mais nous réécrivons également d'autres méthodes. Le code est le suivant :

import java.io.IOException;
import java.io.PrintWriter;

import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

public class FirstServlet extends HttpServlet{
    
    

	//构造方法
	public FirstServlet() {
    
    
		System.out.println("正在创建FirstServlet对象");
	}
	
	@Override//初始化方法
	public void init() throws ServletException {
    
    
		System.out.println("正在初始化FirstServlet对象");
	}

	@Override//响应方法
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    

		//接受请求发来的参数
		String name = request.getParameter("name");
		String html = "<h1 style='color:red'>hi,"+ name +"!</h1><hr/>";
		System.out.println("返回给浏览器的响应数据为:"+html);
		PrintWriter out = response.getWriter();
		out.println(html);
	}

	@Override//销毁方法
	public void destroy() {
    
    
		System.out.println("正在销毁FirstServlet对象");
	}
}

Après avoir écrit, enregistrez-le, puis continuez à démarrer le serveur. Pour le
insérez la description de l'image ici
moment, parce que nous n'avons pas envoyé de demande au serveur, nous n'avons donc pas encore créé d'objet. Après avoir envoyé une demande au serveur dans le navigateur :
insérez la description de l'image ici
ces trois sorties indiquent que la première classe de servlet a été créée. object, et appellent tour à tour la méthode de construction, la méthode d'initialisation et la méthode de service de FirstServlet.

Si nous apportons des modifications au contenu dans FirstServlet, cet objet sera détruit, comme suit :
insérez la description de l'image ici

Les annotations simplifient la configuration

Tout le monde aurait dû remarquer que chaque fois que nous créons une nouvelle classe de servlet, nous devons la configurer dans web.xml, ce qui est vraiment gênant, alors y a-t-il un moyen de simplifier l'opération ? La réponse est oui, c'est-à-dire utiliser des annotations.

Simplifiez la configuration des classes de servlet dans web.xml grâce aux annotations : avant d'utiliser les annotations, vous devez configurer dans web.xml chaque fois que vous créez une nouvelle classe de servlet, et vous n'avez pas besoin de configurer dans le fichier web.xml après utilisation.

Introduisons ensuite l'utilisation des annotations !

La fonctionnalité "Annotation Annotation" a été introduite après Servlet 3.x. Les annotations sont
utilisées pour simplifier le processus de configuration des applications Web.
Annotations de base du servlet : @WebServlet

Utiliser la démo :

import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

@WebServlet("/anno")//映射地址
public class AnnotationServlet extends HttpServlet{
    
    

	@Override
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    
		response.getWriter().println(" I'm annotation servlet!");
	}

}

Sortie :
insérez la description de l'image ici
dans le servlet ci-dessus, je ne suis pas allé sur web.xml pour le configurer, mais il publie toujours la sortie normalement car nous utilisons des annotations.

Charger le servlet au démarrage

Il est très courant de charger cette scène au démarrage. Par exemple, lorsque vous jouez à la gloire du roi, doit-elle être chargée pendant un certain temps après la sélection du héros pour commencer officiellement le tour du canyon ? C'est la même chose.

Pourquoi les servlets doivent-ils être chargés au démarrage ?

L'objet servlet est créé lors du premier accès et la méthode init est exécutée. Supposons que certaines opérations chronophages soient effectuées dans la méthode init (par exemple : certains fichiers de configuration sont chargés et l'analyse peut prendre 3 secondes). Lorsque le premier utilisateur accède au servlet pour la première fois, il doit attendre 3 secondes. Comment puis-je faire en sorte que la première visite du premier utilisateur ne prenne pas autant de temps ?

Quelle est la charge de démarrage d'une servlet ?

Par défaut, l'objet Servlet est créé lors du premier accès, désormais, via une configuration, le processus d'instanciation de la Servlet est mis en place au démarrage du serveur (laisser l'objet Servlet être créé au démarrage du serveur). Si vous le faites maintenant, le temps passé sera passé au démarrage du serveur. Pour l'utilisateur, il n'est pas nécessaire de passer ce temps supplémentaire.

Comment configurer la servlet pour qu'elle se charge au démarrage ?

Dans web.xmlla balise correspondant au fichier (dans la balise servlet où le nom et le chemin de classe complet sont définis) <servlet>. Vous pouvez configurer une étiquette qui est automatiquement chargée au démarrage. L' étiquette est <load-on-startup>5</load-on-startup>que ce fichier de classe sera chargé directement au démarrage du serveur. L'entier du milieu est : plus l'entier est petit, plus la priorité de chargement est élevée, généralement elle ne peut pas être inférieure à 2.

Cela peut être un peu déroutant après lecture, alors résumons !

web.xmlUtiliser <load-on-startup>les paramètres pour démarrer le chargement
Plage : <load-on-startup>0~9999 </load-on-startup>
La charge au démarrage est couramment utilisée pour le prétraitement du système au travail

Épilogue

Ce sont quelques utilisations de la fondation Servlet, et l'ensemble du système de connaissances sera progressivement amélioré à l'avenir, merci de votre lecture.

Continuellement mis à jour…

Je suppose que tu aimes

Origine blog.csdn.net/apple_51673523/article/details/122732956
conseillé
Classement