Dans quelle mesure la technologie des servlets Java Web Programming est-elle?
1. SERVLET BASICS <BR /> Pour le développement de la technologie des servlet, Sun Company fournit quelques interfaces et classes de colonnes, dont la plus importante est l'interface Javax.servlet.servlet. Les deux packages importants sont Javax.servlet et Javax.servlet.http. Le servlet est une classe qui implémente l'interface servlet. Il est appelé et créé par un conteneur Web (Tomcat / Jetty, etc.) pour recevoir et répondre aux demandes des utilisateurs. 5 Les méthodes abstraites sont définies dans l'interface servlet:
La structure de la classe de niveau supérieur du servlet est la suivante:
2. Le premier programme de servlet
Créez un nouveau projet Web Java, puis créez une nouvelle classe Hello. Le code source Hello.java est le suivant:
Package zzz; import java.io.ioexception; import java.io.printwriter; importer javax.servlet.http.httpservlet; import javax.servlet.http.httpservletRequest; classe publique HELLO HELL DOGET (demande HttpServLetRequest, réponse httpservletResponse) lève ioException {// set Response Message Encoding Response.SetContentType ("text / html; charset = utf-8"); Printwriter out = réponse.getWriter (); Out.println ("Hello World"); } @Override public void doPost (demande httpservletRequest, réponse httpservletResponse) lève ioException {this.doget (request, réponse); }}Le fichier de configuration web.xml est le suivant:
<? 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 http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1. id = "webApp_id" version = "3.1"> <splay-name> zzz </ display-name> <servlet> <! - Registre servlet -> <servlet-name> Bonjour </vrlet-name> <! - Spécifiez le nom du servlet -> <Servlet-Class> zzz.hello </ serflet-class> <! - Spécifie le servlet Classe complète -> </fervlet> Path d'accès externe -> <servlet-name> Bonjour </ servlet-name> <! - Spécifiez le nom du servlet -> <url-sattern> / bonjour </url-sattern> <! - Spécifiez le chemin virtuel pour accéder au servlet -> </ servlet-mapping> </ Web-App>
Démarrage et exécution du navigateur Affichages comme suit:
3. Cycle de vie du servlet
Le cycle de vie du servlet est à peu près divisé en 3 étapes, l'étape d'initialisation, l'étape de l'opération et le stade de destruction . Voici des descriptions détaillées de chaque étape:
Phase d'initialisation: lorsque le client fait une demande au conteneur servlet pour accéder au servlet, le conteneur analyse d'abord la demande pour vérifier si l'objet servlet est en mémoire et s'il est utilisé directement; Sinon, créez l'objet servlet, puis appelez la méthode init (). Notez que init () ne sera appelé qu'une seule fois pendant l'ensemble du cycle de déclaration du servlet.
Étape de course: C'est l'étape la plus importante du servlet. À ce stade, le conteneur construira un objet ServLetRequest et ServletResponse en tant que paramètres et le transmet dans la méthode Servlet Service (). Pour chaque accès d'un servlet, le conteneur servlet appellera la méthode Service () une fois. La méthode Service () sera appelée plusieurs fois pendant tout le cycle de vie du servlet
Étape de destruction: Lorsque le serveur est fermé ou que l'application Web est supprimée du conteneur, cette étape sera entrée. À l'heure actuelle, la méthode destrust () sera appelée. Pendant tout le cycle de vie, la méthode de destruction () ne sera appelée qu'une seule fois. Lorsque le client accède pour la première fois au servlet, le conteneur créera l'objet servlet, mais parfois on espère que l'objet servlet sera démarré dès le démarrage de Tomcat. Comment gérer cela? À l'heure actuelle, vous n'avez qu'à utiliser l'élément <onde-on-startup> dans web.xml. La configuration de l'exemple est la suivante:
<servlet> <servlet-name>Hello</servlet-name> <servlet-class>zzz.Hello</servlet-class> <!-- Automatic loading of servlet program--> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Hello</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping>
4. ServletConfig et ServletContext
Pendant l'interface ServletConfig , si certaines informations auxiliaires sont nécessaires, telles que l'encodage de fichiers, les entreprises utilisant des servlets, etc., ces informations peuvent être configurées à l'aide de l'élément <Init-Param> dans web.xml. Lorsque Tomcat initialise un servlet, les informations de configuration du servlet seront encapsulées dans un objet ServletConfig et transmises au servlet via init (ServletConfig Config). ServletConfig définit une série de méthodes pour obtenir des informations de configuration:
Ensuite, prenez getInitAmter () comme exemple pour expliquer l'utilisation de cette méthode:
Le fichier de configuration Web.xml est le suivant:
<? 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 http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1. id = "webApp_id" version = "3.1"> <splay-name> zzz </ display-name> <servlet> <servlet-name> bonjour </ servlet-name> <Servlet-Class> zzz.hello </ servlet-class> dahua </ paramname> société </ param-name> <param-valu> dahua </ param-ovalue> <servlet-mapping> <servlet-name> Bonjour </ servlet-name> <url-sattern> / bonjour </url-stern> </ servlet-mapping> </ web -pp>
Hello.java Le fichier est le suivant:
Package zzz; import java.io.ioException; import java.io.printwriter; import javax.servlet.servletconfig; import javax.servlet.http.httpservlet; import javax.servlet.http.httpletsvletRegres; HttpServlet {@Override public void doGet (httpsservletRequest request, httpservletResponse réponse) lève ioException {// set la réponse de réponse en codage de réponse.setContentType ("text / html; charset = ut-8"); Printwriter out = réponse.getWriter (); ServletConfig config = this.getServletConfig (); String param = config.getInitParameter ("Company"); out.println ("Compagnie:" + param); } @Override public void doPost (demande httpservletRequest, réponse httpservletResponse) lève ioException {this.doget (request, réponse); }} Interface ServletContext
Lorsque le conteneur servlet est démarré, un objet ServletContext unique est créé pour chaque application Web pour représenter l'application Web actuelle. Cet objet résume non seulement toutes les informations de l'application Web, mais implémente également le partage de données entre plusieurs objets de servlet. Dans web.xml, vous pouvez non seulement configurer les informations d'initialisation du servlet, mais également configurer les informations d'initialisation de l'ensemble de l'application Web. La méthode de configuration est la suivante:
<Touxet-Param> <Am param-name> Name </ Param-name> <Am param-Value> Luoxn28 </ Param-Value> </ Context-Param> <Touxet-Param> <AmAm-Name> Company </ Param-Name> <Amvin-Value> Dahua </Aram-Value> </fetteft-Param>
Remarque: il ne peut y avoir qu'un seul <Am param-name> et <param-Value> dans un élément <ftext-param>, et la configuration ci-dessus est configurée sous <Web-App> dans web.xml. Hello.java Le fichier est le suivant:
package zzz; importer java.io.ioexception; import java.io.printwriter; importer java.util.enumeration; import javax.servlet.servletContext; import javax.servlet.httpservletservlet; import javax.servlet.http.httpservlet javax.servlet.http.httpservletResponse; classe publique Hello étend httpservlet {@Override public void doget (httpservletRequest request, httpservletResponse réponse) lance ioException {// se définir le message de réponse à la réponse. Printwriter out = réponse.getWriter (); ServletContext context = this.getServletContext (); Énumération <string> paramNames = context.getInitParameTames (); while (paramNames.hasmoreElements ()) {String name = paramNames.Nexttelement (); String Value = context.getInitParameter (name); out.println (nom + ":" + valeur + "<br/>"); }} @Override public void doPost (request httpServleRequest, httpservletResponse réponse) lève ioException {this.doget (request, réponse); }}Étant donné que tous les servlets d'une application Web partagent un objet ServletContext, les propriétés du domaine de l'objet ServletContext sont accessibles par tous les servlets de l'application Web. Dans l'interface ServletContext, quatre méthodes sont définies pour ajouter, supprimer et définir les propriétés du domaine ServletContext:
Grâce à la méthode ci-dessus, vous pouvez réaliser le partage de données entre plusieurs servlets. Cet exemple spécifique ne sera pas publié avec le code. Il existe de nombreuses informations qui peuvent être référencées en ligne, telles que le clic:
Javaweb Servlet Development Résumé (II)
Ce qui précède est tout sur cet article, et j'espère qu'il sera utile pour tout le monde de comprendre la technologie des servlets de Java Web.
Références
1. "Introduction à Java Web Program Development" Servlet Technology Chapter