Je roule du code J2EE qui adhère au Servlet 2.5 et je me demande quelles sont les principales différences entre 2.5 et 3. Les pointeurs vers les documents officiels Sun et les expériences personnelles sont les plus appréciés.
Si je ne devais pas me préoccuper de 3 pour le moment, dites-le simplement. Merci!
java
servlets
jakarta-ee
Max A.
la source
la source
Réponses:
METTRE À JOUR
Juste à titre de mise à jour et pour être plus explicite, voici les principales différences entre les servlets 2.5 et 3 (je ne cherche pas à être exhaustif, je ne fais que mentionner les parties les plus intéressantes):
Annotations pour déclarer les servlets, les filtres et les écouteurs (facilité de développement)
Dans les servlets 2.5, pour déclarer un servlet avec un paramètre init, vous devez l'ajouter à web.xml :
Dans les servlets 3, web.xml est facultatif et vous pouvez utiliser des annotations au lieu de XML. Le même exemple:
Pour les filtres, vous devez ajouter ceci dans web.xml dans les servlets 2.5:
Équivalent à l'utilisation d'annotations dans les servlets 3:
Pour un écouteur (dans ce cas un ServletContextListener), dans les servlets 2.5:
La même chose en utilisant des annotations:
Modularisation de web.xml (Pluggability)
Enregistrement dynamique des servlets, des filtres et des écouteurs au moment de l'initialisation du contexte (Pluggabilité)
En servlets 3, un
ServletContextListener
peut ajouter dynamiquement des servlets, des filtres et des auditeurs à l' aide des méthodes suivantes ajoutées àSevletContext
:addServlet()
,addFilter()
etaddListener()
Support asynchrone
Exemple: disons que certains conteneurs de servlets ont cinq threads dans leur pool de threads, et qu'il y a un processus long à exécuter par requête (comme une requête SQL complexe).
Avec servlets 2.5 ce conteneur servlet court de threads disponibles si elle reçoit cinq demandes en même temps et les cinq threads disponibles commencer à faire le processus, parce que les fils ne rentreraient pas avant
service()
(oudoGet()
,doPost()
etc.) est exécutée depuis le début pour terminer et renvoie une réponse.Avec les servlets 3.0, ce processus de longue date peut être délégué à un autre thread et se terminer
service()
avant l'envoi de la réponse (la réponse sera maintenant envoyée par le dernier thread). De cette façon, le fil est libre de recevoir de nouvelles réponses.Un exemple de support asynchrone:
Servlets 2.5:
Servlets 3:
L'interface
AsyncContext
dispose également de méthodes pour obtenir l'objet de requête, l'objet de réponse et ajouter des écouteurs pour les avertir lorsqu'un processus est terminé.Connexion et déconnexion programmatiques (améliorations de la sécurité)
Dans les servlets 3, l'interface
HttpServletRequest
a été ajoutée deux nouvelles méthodes:login(username, password)
etlogout()
.Pour plus de détails, jetez un œil à l' API Java EE 6 .
la source
@ServletFilter
→@WebFilter
et@WebServletContextListener
→@WebListener
dans les spécifications officielles AFAICT.Servlet 3.0 n'est pas encore sorti, mais il semble que ce soit très proche. Les changements les plus importants de la version 3.0 sont: Pluggability, Facilité de développement, Servlet Async, Sécurité. Il m'est impossible de dire si ces éléments sont importants ou non pour vous.
Le plus important d'entre eux est probablement la prise en charge des servlets asynchrones. Voici un article qui décrit cela en détail. La spécification complète peut être téléchargée ici .
la source
Comme Don l'a mentionné, les principaux domaines d'améliorations et d'ajouts sont:
Consultez la présentation Javaone 2008 " API Java Servlet 3.0: Quoi de neuf et passionnant " pour plus de détails.
la source
Ce lien donnera suffisamment d'informations sur le Servlet 3
Servlet 3 prend en charge l'annotation pour éliminer
web.xml
la source