|
|
Apr
13
2006
|
Servlet, se me méfier des objets PrintWriter |
|
|
|
Programmation -
J2EE/Java(script)
|
|
Ecrit par Kamal AOUDA
|
|
13-04-2006 |
|
Servlet, se me méfier des objets PrintWriter
Une des erreurs fréquemment commises
dans le codage des servlets consiste à utiliser la méthode println() de l’objet
PrintWriter pour générer le contenu HTML destiné au browser (cf. classe
Writer1). Avec une console , la méthode println() crée un séparateur pour
afficher les résultats sur une nouvelle ligne. Avec les pages HTML ce séparateur
est tout simplement ignoré parce que le browser n’interprète que les balises
HTML.
Classe Writer1
public class Writer1 extends HttpServlet {public void doGet (HttpServletRequest
req, HttpServletResponse res) throws ServletException, IOException {
res.setContentType("text/html");
PrintWriter out = res.getWriter();
out.println("<html>"); out.println("<head><title>Hello World</title></head>");
out.println("<body>"); for (int i = 0 ; i < 10; i++) { out.println("<h1>Hello
World 1</h1>");}
out.println("</body></html>");}}
En utilisant de façon interchangeable les méthodes println() et print() on
obtient les mêmes résultats mais pas le même niveau de performance. En fait le
traitement d’une méthode println(String s) équivaut en termes de performance au
traitement de la méthode suivante :
public void println(String s) { print(s); println();}
La méthode println() fait appel en arrière appel à la méthode print() qui à son
tour doit réaliser des conversions vers le format spécifié par la méthode
setContentType() de la classe HttpServletResponse. Ces conversions sont très
coûteuses en mémoire et en processeur pour des formats comme l’unicode. Pour
cette raison il faut essayer dans toute la mesure du possible de substituer des
objets comme ServletOutputStream à l’objet PrintWriter.
Cela dit les servlets ne sont pas optimisées pour implémenter la couche de
présentation. Comme nous l’avons vu dans la partie 4, elles sont plus
efficientes lorsqu’elles sont utilisées exclusivement dans l’implémentation du
contrôleur. A chaque fois que cela est possible, il faut évacuer des servlets
tout le code qui contribue directement à la génération de la vue. Autrement on
risque de créer des couplages qui peuvent s’avérer fatal pour le débit de
l’application.
|
|
Beginning PHP 5 and MySQL E-Commerce: From Novice to Professional |
|
New Page 2
Livre à
l'intention des développeurs déjà familiarisés avec PHP et MySQL. Il
contient plusieurs exemples qui montrent comment développer des
applications de commerce électronique de qualité. Outre les questions
relatives au design et à la programmation, ce livre donne des conseils
pour augmenter les ventes en ligne et diminuer le coût de traitement des
commandes grâce aux services web XML.
Lien sur le site d'Apress.
Références
http://www.apress.com/book/bookDisplay.html?bID=356
Cristian Darie,
Mihai Bucica ,
ISBN: 1-59059-392-8 ,
568 pp.,
Nov 2004
|
|
|