Servlets

"petits serveurs".

Besoin

Fournir une API Java pour réaliser de serveurs.

Analyse

Les servlets écoutent des requêtes et retournent des réponses.

Conception

Les servlets écoutent des requêtes réseau sur un port donné et retournent des réponses. Les requêtes attendues peuvent être de divers type mais dans les faits sont presque toujours de type Web. Dans ce cas les servlets sont des servlets particulières, adaptées au décodage de requêtes Web (protocole HTTP).

Implémentation

Servlets Web

C'est le cas le plus courant. Une servlet HTTP hérite de javax.servlet.http.HttpServlet. Elle en redéfinit :

Exemples

Des exemples de servlets sont :

Un exemple de code source de servlet est :

import <b>javax.servlet.http</b>.*; <span class="codeComment">// Classes nécessaires aux servlets Web (HTTP)</span><br> <br> public class MaServlet<br> extends <b>HttpServlet</b> {<br> <span class="codeComment"> /**<br> * Traitement des requêtes HTTP POST<br> * @param someRequest La requête HTTP POST<br> * @param someResponse La réponse HTTP que l'on va remplir<br> */ </span><br> public void <b>doPost</b> (<b>HttpServletRequest</b> someRequest, <b>HttpServletResponse</b> someResponse) {<br> someResponse.<b>setContentType</b> (<span class="codeString">"text/html"</span>); <span class="codeComment">// Type <a href="/tech/info/soft/proj/design/arch/web/MIME.html">MIME</a> d'une page <a href="/tech/info/soft/data/doc/html">HTML</a></span><br> java.io.PrintWriter output = someResponse.<b>getWriter</b>(); <span class="codeComment">// Flux d'écriture de la réponse</span><br> <br> output.println (<span class="codeString">"<html>"</span>);<br> output.println (<span class="codeString">" <head>"</span>); <br> output.println (<span class="codeString">" <title>Bienvenue !</title>"</span>); <br> output.println (<span class="codeString">" </head>"</span>); <br> output.println (<span class="codeString">" <body>"</span>); <br> <br> <span class="codeComment">// Valeur du paramètre "name" envoyé avec la requête ?</span> <br> String userName = someRequest.<b>getParameter</b> (<span class="codeString">"name"</span>); <br> <br> output.println (<span class="codeString">" Bienvenue "</span> + userName); <br> <br> output.println (<span class="codeString">" </body>"</span>); <br> output.println (<span class="codeString">"</html>"</span>); <br> }<br>}

Notes

Limitations

Voir