Cet article partage le cycle de vie et le principe de travail du servlet pour votre référence. Le contenu spécifique est le suivant
Le cycle de vie du servlet est divisé en trois étapes:
1. Appelez la méthode init () au stade d'initialisation
2. Appelez la méthode Service () en réponse à l'étape de la demande du client
3. Call Detrère () Méthode au stade de terminaison
Phase d'initialisation du servlet:
Aux moments suivants, le conteneur servlet charge le servlet:
1. Lorsque le conteneur servlet commence, certains servlets sont automatiquement chargés. Pour l'implémenter, il vous suffit d'ajouter le code suivant entre <Serplet> </vrlet> dans le fichier web.xml:
<Hooton-startup> 1 </foftaron-startup>
2. Après le démarrage du conteneur servlet, le client envoie une demande au servlet pour la première fois
3. Une fois le fichier de classe de servlet mis à jour, rechargez le servlet
Une fois le servlet chargé, le conteneur servlet crée une instance de servlet et appelle la méthode init () du servlet pour l'initialisation. La méthode init () n'est appelée qu'une seule fois pendant toute la vie d'un servlet.
Comment fonctionnent les servlets:
Tout d'abord, expliquons brièvement le processus de réception et de réponse aux demandes des clients. Tout d'abord, le client envoie une demande. Le servlet appelle la méthode Service () pour répondre à la demande. Il peut être vu à travers le code source. La méthode Service () correspond à la méthode de demande. Sélectionnez pour appeler DoGet, DoPost et d'autres méthodes, puis entrez la méthode correspondante pour appeler la méthode de couche logique pour réaliser la réponse au client. Il n'y a pas de méthodes telles que DoGet, DoPost, etc. dans l'interface Servlet et GenericServlet. Ces méthodes sont définies dans le HttpServlet, mais elles renvoient toutes les informations d'erreur. Par conséquent, chaque fois que nous définissons un servlet, nous devons implémenter des méthodes telles que Doget ou DoPost.
Chaque servlet personnalisé doit implémenter l'interface servlet. Cinq méthodes sont définies dans l'interface du servlet, parmi lesquelles les trois méthodes les plus importantes impliquent le cycle de vie du servlet, à savoir les méthodes init (), service () et détruire () mentionnées ci-dessus. GenericServlet est un servlet général, non spécifique à aucun protocole, qui met en œuvre l'interface servlet. HttpServlet hérite de GenericServlet, de sorte que HttpServlet implémente également l'interface servlet. Ainsi, lorsque nous définissons un servlet, nous n'avons qu'à hériter du httpservlet.
L'interface de servlet et Genericservlet ne sont spécifiques à aucun protocole, tandis que HttpServlet est une classe spécifique au protocole HTTP, de sorte que la méthode Service () est mise en œuvre dans le HTTPServlet et le servletRequest et le servletresponse demandé à convertir le servletRequest et le service de servletponse à Httprequest et Httports.
Le service public void (ServletRequest Req, ServletResponse Res) lève ServletException, ioException {HttpRequest Request; Réponse HTTPResponse; Try {req = (httpRequest) request; res = (httpResponse) Réponse; } catch (classcastException e) {lancer un nouveau servletException ("Response de demande non-http"); } service (demande, réponse);}Le code appelle enfin la méthode propre service (demande, réponse) du HTTPServlet, puis appelle la méthode DOXXX correspondante en fonction de la demande, car la méthode DOXXX dans le httpservlet renvoie les informations d'erreur.
Protected void doGet (httpServletRequest Res, httpServletResponse resp) lève Servlexception, ioException {String protoCol = req.getProtoCol (); String msg = istrings.getString ("http.method_get_not_supported"); if (protoCol.equals ("1.1")) {resp.senDerror (httpServletResponse.sc.Method.not.Allowed, msg); } ESLE {resp.senSenderror (httpServletResponse.sc_bad_request, msg); }}Nous devons donc remplacer ces méthodes dans un servlet personnalisé!
Il n'y a pas de secret devant le code source!
Phase de demande de réponse au servlet:
Pour que les demandes de l'utilisateur atteignent le servlet, le conteneur servlet créera un objet ServLetRequest et un objet ServletResponse spécifique à cette demande, puis appelez la méthode du service de servlet. La méthode de service obtient des informations sur la demande du client de l'objet ServLetRequest, traite la demande et renvoie les informations de réponse au client via l'objet ServletResponse.
Pour Tomcat, il placera les paramètres passés dans un hashtable, et la définition du hashtable est:
La copie de code est la suivante: Private HashTable <String String []> paramhashStringArray = new HashTable <String String []> ();
Il s'agit d'une carte de valeur clé de String -> String [].
Le thread Hashmap n'est pas sûr, le thread hashable est sûr.
Phase de terminaison du servlet:
Lorsque l'application Web est résiliée, ou que le conteneur servlet se termine en cours d'exécution, ou que le conteneur de servlet recharge une nouvelle instance du servlet, le conteneur servlet appellera d'abord la méthode destruction () du servlet, qui peut libérer les ressources occupées par le servlet dans la méthode destruct ().
Quand un servlet est-il créé:
1. Par défaut, lorsque le client Web demande l'accès à un servlet pour la première fois, le conteneur Web créera une instance du servlet.
2. Lorsqu'un élément enfant <onde-startup> est spécifié dans l'élément <Servlet> du fichier web.xml, le conteneur servlet créera et initialise l'objet servlet dans l'ordre lors du démarrage du serveur Web.
Remarque: Dans le fichier web.xml, certains servlets n'ont que des éléments <serlvet> et n'ont pas d'éléments <Servlet-Mapping>, nous ne pouvons donc pas accéder à ces servlets via l'URL. Ce servlet configure généralement un élément enfant <onde-sur-startup> dans l'élément <Serplet>, de sorte que le conteneur charge automatiquement ces servlets et appelle la méthode init () lors de son démarrage, terminant certains travaux d'initialisation globaux.
Quand l'application Web sera-t-elle démarrée:
1. Lorsque le conteneur servlet est démarré, toutes les applications Web seront démarrées.
2. Le contrôleur démarre l'application Web
Comparaison entre servlet et jsp:
Il existe de nombreuses similitudes qui peuvent générer des pages Web dynamiques.
L'avantage de JSP est qu'il est bon dans la production de pages Web, et il est plus intuitif de générer des pages dynamiques, mais l'inconvénient est qu'il n'est pas facile de suivre et de dépanner.
Le servlet est un langage Java pur et est bon dans le traitement des processus et de la logique métier. L'inconvénient est qu'il n'est pas intuitif de générer des pages Web dynamiques.
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.