JAVAWEB-Introduction au servlet, à l'API de servlet, à la configuration xml du servlet, à l'objet ServletConfig

1. Introduction à Servlet

  1. concept

Servlet est une applet Java exécutée sur le serveur. Sun fournit un ensemble de spécifications (interfaces) pour traiter les demandes des clients et répondre aux ressources dynamiques du navigateur. Mais l'essence du servlet est le code java, qui génère dynamiquement du contenu vers le client via l'API java

  1. Spécification du servlet: contient trois points techniques
  • technologie de servlet
  • filtre technologie-filtre
  • auditeur technologie-auditeur

Deux, API Servlet (cycle de vie)

  1. Méthode d'interface de servlet
  • Quand init (ServletConfig config)
    est-il exécuté: il est exécuté lorsque l'objet servlet est créé. Certaines informations de configuration que nous écrivons généralement dans web.xml peuvent être obtenues dans la méthode init.
    ServletConfig: représente les informations de configuration de l'objet servlet
  • Lorsque le service (requête ServletRequest, réponse ServletResponse)
    est exécuté: chaque requête sera exécutée
    ServletRequest : Au nom de la requête, la ServletRequest encapsule les informations de la requête http
    ServletResponse: Au nom de la réponse que l'information à encapsuler est la réponse
  • Lorsque destroy ()
    est exécuté: exécuté lorsque le servlet est détruit
  1. Méthodes de la classe HttpServlet
  • init ()
  • doGet (requête HttpServletRequest, réponse HttpServletResponse)
  • doPost (requête HttpServletRequest, réponse HttpServletResponse)
  • détruire()

3) Trois questions pour l'entrevue:

  • Quand le servlet a été créé
    L'objet est créé lorsque le servlet est accédé pour la première fois par défaut
  • Quand le servlet est-il détruit
    Le servlet est détruit à la fermeture du serveur
  • Une méthode qui doit être exécutée à chaque visite
    service (ServletRequest req, ServletResponse res) 方法
    Pour les paramètres entrants, veuillez consulter les premières informations ci-dessus pour plus de détails.

Trois, configuration de servlet

Nous web.xmlécrivons d' abord des éléments couramment utilisés dans

<servlet>
    <servlet-name>ASD</servlet-name>
    <servlet-class>servlet.QuickStartServlet</servlet-class>
    <init-param>
        <param-name>url</param-name>
        <param-value>jdbc:mysql://sort</param-value>
    </init-param>
</servlet>
    <servlet-mapping>
        <servlet-name>ASD</servlet-name>
        <url-pattern>/quickStartServlet</url-pattern>
		<url-pattern>/aaa/bbb/ccc/*</url-pattern>

    </servlet-mapping>

Ici pour mentionner:L'ASD dans le nom de servlet dans le premier servlet et l'ASD dans le nom de servlet dans le second mappage de servlet doivent être identiques

1. Quelques précautions pour les informations de configuration:

1. <url-pattern></url-pattern>La méthode d'appariement

a) Seules les ressources accessibles par la correspondance exacte sont accessibles si elles sont exactement les mêmes que les ressources configurées

<url-pattern>/quickStartServlet</url-pattern>

Méthode d'accès standard

b) Format de correspondance de répertoire: / répertoire virtuel ... / , où * représente n'importe quel *

<url-pattern>/aaa/bbb/ccc/*</url-pattern

À ce stade, lorsque nous accédons à une servlet dans le navigateur, tant que nous entrons le bon / aaa / bbb / ccc. Tu peux entrer ce que tu veux

c) Format de correspondance d'extension: *. extension

<url-pattern>*.abcd</url-pattern>

À ce stade, lorsque nous accédons à un servlet dans le navigateur, il suffit de le saisir devant lui. Vous pouvez entrer .abcd plus tard

Remarque: ne mélangez pas /aaa/bbb/*.abcd pour les deuxième et troisième types (faux)

2. Le serveur commence à instancier la configuration du servlet

Premier examen: Quand le
servlet a-t-il été créé: Par défaut, il est créé lors de la première visite.

Si nous devons ajouter un <load-on-startup>objet de servlet de configuration à créer lorsque le serveur démarre au démarrage du serveur, lorsque le servlet est configuré .

<!--servlet在服务器启动时创建对象-->
<!--数字代表优先级 数字越小 优先级越高-->
<load-on-startup>1</load-on-startup>

C'est lorsque nous exécutons à nouveau le QuickServlet ci-dessus, lorsque nous ne sommes pas entrés sur le site Web, la méthode init est déjà en cours d'exécution sur le serveur.Parce que lorsque le serveur principal démarre, le servlet a été créé.

3. Le servlet par défaut

Vous pouvez configurer un / in url-pattern, ce qui signifie que le servlet est le servlet par défaut.
Quel est le servlet par défaut?

Lorsque tous les servlets de l'adresse de votre ressource d'accès ne correspondent pas, le servlet par défaut est responsable du traitement
En fait, la réponse de toutes les ressources de l'application Web est responsable du servlet, y compris les ressources statiques

4. Page de bienvenue

<welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

Par défaut, il accédera automatiquement aux fichiers jsp et html

2. Comment obtenir ces configurations dans Servlet?

public class QuickStratServlet implements Servlet{
    
    	
	@Override
	public void init(ServletConfig config) throws ServletException {
    
    
		
		//1、获得servlet的name----<servlet-name>ASD</servlet-name>
		String servletName = config.getServletName();
		System.out.println(servletName);//ASD
		//2、获得该servlet的初始化的参数
		String initParameter = config.getInitParameter("url");
		System.out.println(initParameter);
		//3、获得Servletcontext对象
		ServletContext servletContext = config.getServletContext();
		
		System.out.println("init running....");
	}
	@Override
	public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
    
    
		System.out.println("QuickStratServlet running....");
		res.getWriter().write("QuickStratServlet running....");
	}
	
	
	@Override
	public void destroy() {
    
    
		System.out.println("destroy running....");
	}
	@Override
	public ServletConfig getServletConfig() {
    
    
		// TODO Auto-generated method stub
		return null;
	}
	@Override
	public String getServletInfo() {
    
    
		// TODO Auto-generated method stub
		return null;
	}
}

Les résultats de sortie sontASDjdbc: mysql: // trilancer l'exécution…

Quatre, objet ServletContext

1. Qu'est-ce que l'objet
ServletContext ServletContext représente l' objet d' environnement (contexte) d'une application Web. L'encapsulation interne de l'objet ServletContext est l'information de l'application Web. L'objet ServletContext n'a qu'un seul
problème pour une application Web :

  • Une application Web a plusieurs objets servlet
  • Le cycle de vie de l'objet ServletContext?
    Créer: l'application Web est chargée (le serveur démarre ou publie l'application Web (prérequis, état de démarrage du serveur).
    Détruite: l'application Web est désinstallée (le serveur s'arrête, supprimer l'application Web)

2. Comment obtenir l'objet ServletContext

  • ServletContext servletContext = config.getServletContext ();
  • ServletContext servletContext = this.getServletContext ();

3. effet

  • Obtenez les paramètres d'initialisation globaux de l'application Web. Pour le
    moment, nous ne configurons pas dans le servlet, nous sommes dans le global

    Configurer les paramètres d'initialisation dans web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>WEB19</display-name>
  <!--配置全局的初始化参数-->
  <context-param>
  		<param-name>driver</param-name>
  		<param-value>com.mysql.jdbc.Driver</param-value>
  </context-param>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>

  </welcome-file-list>
  
</web-app>

Récupérez ensuite les paramètres via l'objet context

//获得ServletContext对象
ServletContext servletContext = getServletContext();
//1.获得初始化参数
String ininParamter = servletContext.getInitParameter("driver");
System.out.println(ininParamter);

Le résultat de l'impression est: le contenu de la valeur de paramètre com.mysql.jdbc.Driver

  • Obtenir le chemin absolu de toute ressource dans l'application Web (important important)

Méthode String path = context.getRealPath(相对于该web应用的相对地址):;

Notez que le chemin obtenu ici est relatif au projet publié sur Tomcat.

Cas : créez abcd.txt comme indiqué dans la figure. Obtenez son chemin absolu séparément
Insérez la description de l'image ici

ServletContext servletContext = getServletContext();
    //获得a.txt
    String  realPath_A = servletContext.getRealPath("a.txt");
    //获得b.txt
    String  realPath_B = servletContext.getRealPath("WEB-INF/b.txt");
    //获得c.txt
    String  realPath_C = servletContext.getRealPath("WEB-INF/classes/c.txt");
    //d获取不到
    //读src(classes)下的资源是通过类加载器专门加载的
    ContextServlet.class.getClassLoader().getResource("d.txt").getPath();

Expliquez: pourquoi d.txt est introuvable, car notre projet de publication consiste à publier le contenu sous WEB-CONTENT, et d.txt est un fichier sous le projet Web, pas le contenu sous WEB-CONTENT

  • ServletContext est un objet de domaine (important important)

  • Qu'est-ce qu'un objet de domaine? Qu'est-ce qu'un domaine?
    La zone de stockage des données est la portée de l'objet de domaine Objet de domaine
    ServletContext: l'ensemble de l'application Web (toutes les ressources Web peuvent accéder librement aux données du domaine servletcontext et les données peuvent être partagées)

    Méthodes générales d'objets domaine:
    setAtrribute(String name,Object obj);
    getAttribute(String name);
    removeAttribute(String name);

Je suppose que tu aimes

Origine blog.csdn.net/Mr_GYF/article/details/109143533
conseillé
Classement