Wie sind JSP und Servlet miteinander verwandt? Ist JSP eine Art von Servlet? Wie sind JSP und JSF miteinander verwandt? Ist JSF eine Art von vorgefertigtem UI-basiertem JSP wie ASP.NET-MVC?
JSP ist eine Java-Ansichtstechnologie, die auf dem Serverrechner läuft und es Ihnen ermöglicht, Textvorlagen in clientseitigen Sprachen (wie HTML, CSS, JavaScript usw.) zu schreiben. JSP unterstützt taglibs, die durch Java-Code unterstützt werden, mit dem Sie den Seitenfluss oder die Ausgabe dynamisch steuern können. Eine bekannte Taglib ist JSTL. JSP unterstützt auch die Expression Language, die für den Zugriff auf Backend-Daten verwendet werden kann (über Attribute, die im Seiten-, Anfrage-, Sitzungs- und Anwendungsbereich verfügbar sind), meist in Kombination mit Taglibs.
Wenn ein JSP zum ersten Mal angefordert wird oder wenn die Webanwendung startet, kompiliert der Servlet-Container es in eine Klasse, die HttpServlet
erweitert, und verwendet es während der Lebensdauer der Webanwendung. Den generierten Quellcode finden Sie im Arbeitsverzeichnis des Servers. Bei Tomcat ist das zum Beispiel das Verzeichnis /work
. Bei einer JSP-Anfrage führt der Servlet-Container die kompilierte JSP-Klasse aus und sendet die generierte Ausgabe (in der Regel nur HTML/CSS/JS) durch den Webserver über ein Netzwerk an die Client-Seite, die sie wiederum im Webbrowser anzeigt.
Ein Servlet ist eine Java-Anwendungsprogrammierschnittstelle (API), die auf dem Server läuft und die vom Client gestellten Anfragen abfängt und eine Antwort generiert bzw. sendet. Ein bekanntes Beispiel ist das HttpServlet
, das Methoden zum Abfangen von HTTP -Anfragen unter Verwendung der gängigen HTTP-Methoden wie GET
und POST
bereitstellt. Sie können "HTTPServlets" so konfigurieren, dass sie auf ein bestimmtes HTTP-URL-Muster hören, das in der Datei "web.xml" konfiguriert werden kann, oder neuerdings, mit Java EE 6, mit der Annotation "@WebServlet".
Wenn ein Servlet zum ersten Mal angefordert wird oder während des Starts der Webanwendung, erstellt der Servlet-Container eine Instanz davon und behält sie während der Lebensdauer der Webanwendung im Speicher. Dieselbe Instanz wird für jede eingehende Anfrage, deren URL mit dem URL-Muster des Servlets übereinstimmt, wiederverwendet. Sie können auf die Anfragedaten mit HttpServletRequest
zugreifen und die Antwort mit HttpServletResponse
verarbeiten. Beide Objekte stehen als Methodenargumente in jeder der überschriebenen Methoden von HttpServlet
zur Verfügung, wie z.B. doGet()
und doPost()
.
JSF ist ein komponentenbasiertes MVC-Framework, das auf der Servlet-API aufbaut und über Taglibs Komponenten bereitstellt, die in JSP oder einer anderen Java-basierten Ansichtstechnologie wie Facelets verwendet werden können. Facelets ist viel besser für JSF geeignet als JSP. Es bietet nämlich großartige Templating-Fähigkeiten wie zusammengesetzte Komponenten, während JSP im Grunde nur die <jsp:include>
für das Templating in JSF bietet, so dass man gezwungen ist, benutzerdefinierte Komponenten mit rohem Java-Code zu erstellen (was etwas undurchsichtig und eine Menge mühsamer Arbeit ist), wenn man eine sich wiederholende Gruppe von Komponenten durch eine einzelne Komponente ersetzen möchte. Seit JSF 2.0 ist JSP als Ansichtstechnologie zugunsten von Facelets veraltet.
Anmerkung: JSP selbst ist NICHT veraltet, nur die Kombination von JSF mit JSP ist veraltet.
Anmerkung: JSP verfügt mit Hilfe von Taglibs, insbesondere der (Tag File)-Variante, über hervorragende Templating-Fähigkeiten. JSP-Templating in Kombination mit JSF ist das, was fehlt.
Als MVC (Model-View-Controller) Framework bietet JSF das FacesServlet
als einzigen Request-Response Controller. Es nimmt Ihnen die gesamte standardmäßige und mühsame HTTP-Anfrage/Antwort-Arbeit ab, wie z. B. das Sammeln von Benutzereingaben, deren Validierung/Konvertierung, das Einfügen in Modellobjekte, das Aufrufen von Aktionen und das Rendern der Antwort. Auf diese Weise erhalten Sie im Grunde eine JSP- oder Facelets-Seite (XHTML) als View und eine JavaBean-Klasse als Model. Die JSF-Komponenten werden verwendet, um die Ansicht mit dem Modell zu verbinden (so wie Ihr ASP.NET-Web-Steuerelement), und das FacesServlet
verwendet den JSF-Komponentenbaum, um die gesamte Arbeit zu erledigen.
Siehe http://www.oracle.com/technetwork/java/faq-137059.html
Die JSP-Technologie ist Teil der Java
Technologiefamilie. JSP-Seiten werden in Servlets kompiliert und können JavaBeans-Komponenten (Beans) oder Enterprise JavaBeans-Komponenten (Enterprise Beans) aufrufen, um Verarbeitung auf dem Server durchzuführen. Daher ist die JSP Technologie eine Schlüsselkomponente in einer hoch skalierbare Architektur für webbasierte Anwendungen.
Siehe https://jcp.org/en/introduction/faq
A: Die JavaServer Faces-Technologie ist ein Framework zur Erstellung von Benutzeroberflächen
für Webanwendungen. JavaServer Faces Technologie umfasst:
Eine Reihe von APIs für: die Darstellung von UI Komponenten und die Verwaltung ihres Zustands, Behandlung von Ereignissen und Eingabevalidierung, Definition der Seitennavigation, und Unterstützung von Internationalisierung und Barrierefreiheit.
Eine JavaServer Pages (JSP) Custom Tag Bibliothek für den Ausdruck einer JavaServer Faces-Schnittstelle innerhalb einer JSP-Seite.
JSP ist eine spezielle Art von Servlet.
JSF ist ein Satz von Tags, die Sie mit JSP verwenden können.