Ich verwende J2EE-Code, der Servlet 2.5 entspricht, und frage mich, was die Hauptunterschiede zwischen 2.5 und 3 sind. Hinweise auf offizielle Sun-Dokumente und persönliche Erfahrungen werden am meisten geschätzt.
Wenn ich mich vorerst nicht mit 3 beschäftigen sollte, sag es einfach. Vielen Dank!
java
servlets
jakarta-ee
Max A.
quelle
quelle
Antworten:
AKTUALISIEREN
Nur als Update und um genauer zu sein, dies sind die Hauptunterschiede zwischen Servlets 2.5 und 3 (ich versuche nicht, erschöpfend zu sein, ich erwähne nur die interessantesten Teile):
Anmerkungen zum Deklarieren von Servlets, Filtern und Listenern (einfache Entwicklung)
Um in Servlets 2.5 ein Servlet mit einem Init-Parameter zu deklarieren, müssen Sie dies zu web.xml hinzufügen :
In Servlets 3 ist web.xml optional und Sie können Anmerkungen anstelle von XML verwenden. Das gleiche Beispiel:
Für Filter müssen Sie dies in web.xml in Servlets 2.5 hinzufügen :
Äquivalent unter Verwendung von Anmerkungen in Servlets 3:
Für einen Listener (in diesem Fall einen ServletContextListener) in Servlets 2.5:
Das gleiche mit Anmerkungen:
Modularisierung von web.xml (Pluggability)
Dynamische Registrierung von Servlets, Filtern und Listenern zur Kontextinitialisierungszeit (Pluggability)
In Servlets 3, ein
ServletContextListener
hinzufügen kann dynamisch Servlets, Filter und Zuhörer mit den folgenden Methoden hinzugefügtSevletContext
:addServlet()
,addFilter()
undaddListener()
Asynchrone Unterstützung
Beispiel: Angenommen, ein Servlet-Container hat fünf Threads in seinem Thread-Pool, und pro Anforderung muss ein zeitaufwändiger Prozess ausgeführt werden (wie bei einer komplexen SQL-Abfrage).
Mit Servlets 2.5 diese Servlet - Containern laufen würden aus verfügbaren Threads , wenn es zur gleichen Zeit fünf Anfragen erhält und die fünf verfügbar Threads starten Sie den Prozess zu tun, weil die Fäden bis nicht zurückkehren würden
service()
(oderdoGet()
,doPost()
usw.) wird von Anfang ausgeführt zu beenden und gibt eine Antwort zurück.Mit Servlets 3.0 kann dieser Langzeitprozess an einen anderen Thread delegiert und
service()
vor dem Senden der Antwort beendet werden (die Antwort wird jetzt vom neuesten Thread gesendet). Auf diese Weise kann der Thread neue Antworten erhalten.Ein Beispiel für asynchrone Unterstützung:
Servlets 2.5:
Servlets 3:
Die Schnittstelle
AsyncContext
verfügt auch über Methoden zum Abrufen des Anforderungsobjekts und des Antwortobjekts sowie zum Hinzufügen von Listenern, um sie zu benachrichtigen, wenn ein Prozess abgeschlossen ist.Programmatisches An- und Abmelden (Sicherheitsverbesserungen)
In Servlets 3 wurden der Schnittstelle
HttpServletRequest
zwei neue Methoden hinzugefügt:login(username, password)
undlogout()
.Weitere Informationen finden Sie in der Java EE 6-API .
quelle
@ServletFilter
→@WebFilter
und@WebServletContextListener
→@WebListener
in offiziellen Spezifikationen AFAICT.Servlet 3.0 wurde noch nicht veröffentlicht, aber es sieht so aus, als ob es sehr nahe ist. Die wichtigsten Änderungen in 3.0 sind: Steckbarkeit, einfache Entwicklung, asynchrones Servlet, Sicherheit. Ob diese für Sie wichtig sind oder nicht, kann ich nicht sagen.
Das wichtigste davon ist wahrscheinlich die Unterstützung für asynchrone Servlets. Hier ist ein Artikel , der dies ausführlich beschreibt. Die vollständige Spezifikation kann hier heruntergeladen werden .
quelle
Wie Don erwähnte, sind die Hauptbereiche der Verbesserungen und Ergänzungen:
Weitere Informationen finden Sie in der Javaone 2008-Präsentation " Java Servlet 3.0 API: Was ist neu und aufregend? ".
quelle
Dieser Link gibt genügend Informationen zu Servlet 3
Servlet 3 unterstützt Anmerkungen zum Eliminieren
web.xml
quelle