Was ist der Unterschied zwischen JSF, Servlet und JSP?

826

Ich habe ein paar Fragen. Diese sind :

  1. Wie hängen JSP und Servlet zusammen?
  2. Ist JSP eine Art Servlet?
  3. Wie hängen JSP und JSF zusammen?
  4. Ist JSF eine Art Pre-Build UI-basierte JSP wie ASP.NET-MVC?
Cheung
quelle
3
In JSF 2.0+ ist XML nicht erforderlich.
Divyesh Kanzariya

Antworten:

1229

JSP (JavaServer Pages)

JSP ist eine Java-View-Technologie, die auf dem Server ausgeführt wird und es Ihnen ermöglicht, Vorlagentext in clientseitigen Sprachen (wie HTML, CSS, JavaScript usw.) zu schreiben. JSP unterstützt Taglibs , die von Java-Code unterstützt werden , mit denen Sie den Seitenfluss steuern oder dynamisch ausgeben können. Eine bekannte Taglib ist JSTL . JSP unterstützt auch die Ausdruckssprache , mit der auf Backend-Daten zugegriffen werden kann (über Attribute, die auf den Seiten-, Anforderungs-, Sitzungs- und Anwendungsbereichen verfügbar sind), hauptsächlich in Kombination mit Taglibs.

Wenn eine JSP zum ersten Mal angefordert wird oder wenn die Webanwendung gestartet wird, kompiliert der Servlet-Container sie in eine Klasse, HttpServletdie sie erweitert und während der Lebensdauer der Webanwendung verwendet. Sie finden den generierten Quellcode im Arbeitsverzeichnis des Servers. In Tomcat ist es beispielsweise das /workVerzeichnis. Bei einer JSP-Anforderung führt der Servlet-Container die kompilierte JSP-Klasse aus und sendet die generierte Ausgabe (normalerweise nur HTML / CSS / JS) über den Webserver über ein Netzwerk an die Clientseite, die sie wiederum im Webbrowser anzeigt.

Servlets

Servlet ist eine Java Application Programming Interface (API), die auf dem Server ausgeführt wird. Sie fängt vom Client gestellte Anforderungen ab und generiert / sendet eine Antwort. Ein bekanntes Beispiel ist das HttpServlet, das Methoden zum Verknüpfen von HTTP- Anforderungen mit den gängigen HTTP-Methoden wie GETund bereitstellt POST. Sie können HttpServlets so konfigurieren , dass ein bestimmtes HTTP-URL-Muster, das in web.xmloder in jüngerer Zeit mit Java EE 6 konfiguriert werden kann , mit @WebServletAnmerkungen abgehört wird.

Wenn ein Servlet zum ersten Mal oder während des Starts der Web-App angefordert wird, erstellt der Servlet-Container eine Instanz davon und speichert sie während der Lebensdauer der Web-App im Speicher. Dieselbe Instanz wird für jede eingehende Anforderung wiederverwendet, deren URL mit dem URL-Muster des Servlets übereinstimmt. Sie können auf die Anforderungsdaten von zugreifen HttpServletRequestund die Antwort von verarbeiten HttpServletResponse. Beide Objekte sind als Methodenargumente in einer der überschriebenen Methoden von verfügbar HttpServlet, z. B. doGet()und doPost().

JSF (JavaServer Faces)

JSF ist ein komponentenbasiertes MVC-Framework , das auf der Servlet-API basiert und Komponenten über Taglibs bereitstellt , die in JSP oder einer anderen Java-basierten Ansichtstechnologie wie Facelets verwendet werden können . Facelets eignet sich viel besser für JSF als für JSP. Es bietet nämlich hervorragende Vorlagenfunktionen wie zusammengesetzte Komponenten , während JSP im Grunde nur die <jsp:include>Vorlagen für JSF-Vorlagen bietet , sodass Sie gezwungen sind, benutzerdefinierte Komponenten mit rohem Java-Code zu erstellen (was etwas undurchsichtig und mit viel mühsamer Arbeit verbunden ist), wenn Sie möchten eine wiederholte Gruppe von Komponenten durch eine einzelne Komponente ersetzen. Seit JSF 2.0 ist JSP als View-Technologie zugunsten von Facelets veraltet.

Hinweis : JSP selbst ist NICHT veraltet, nur die Kombination von JSF mit JSP ist veraltet.

Hinweis : JSP verfügt mithilfe von Taglibs über hervorragende Vorlagenfunktionen, insbesondere die Variante ( Tag File ). Es fehlt an JSP-Vorlagen in Kombination mit JSF.

Als MVC - Framework ( Model-View-Controller ) bietet JSF FacesServletden einzigen Request-Response- Controller . Sie müssen alle üblichen und langwierigen HTTP-Anforderungs- / Antwortarbeiten erledigen, z. B. Benutzereingaben sammeln, validieren / konvertieren, in Modellobjekte einfügen, Aktionen aufrufen und die Antwort rendern. Auf diese Weise erhalten Sie im Grunde eine JSP- oder Facelets-Seite (XHTML) für View und eine JavaBean-Klasse als Modell . Die JSF-Komponenten werden verwendet, um die Ansicht mit dem Modell zu verbinden (wie dies bei Ihrem ASP.NET-Websteuerelement der Fall ist), und FacesServletdie JSF-Komponentenstruktur verwendet die gesamte Arbeit.

Verwandte Fragen

BalusC
quelle
8
@ Shashank: Nicht ganz. Nur das <c:forEach>Tag stammt von JSTL. Siehe auch stackoverflow.com/tags/jstl/info
BalusC
1
Ja. <mytag:doesSomething/>sieht aus wie ein benutzerdefiniertes Tag und <jsp:attribute>ein JSP-Tag.
Shashank Kadne
3
Da dies eine äußerst beliebte Antwort ist, möchte ich ein sehr wichtiges Bit hinzufügen, nämlich JSP-Tag-Dateien, mit denen benutzerdefinierte Tags für die Seitenzusammensetzung und das Seitenlayout erstellt werden können, ohne Java-Code zu schreiben. Diese Funktion ist äußerst nützlich und seit vielen Jahren Teil des Standards, wird jedoch weiterhin nicht ausreichend genutzt.
Jiggy
1
@johnny Facelets ist seit der Veröffentlichung von Java EE 6 im Jahr 2009 die bevorzugte Ansichtstechnologie ( docs.oracle.com/javaee/6/tutorial/doc/giepx.html ). Das Mindestmaß an Technologien zur Entwicklung von Java-Webanwendungen ist nicht höher als in den meisten anderen Sprachen, aber es gibt viel mehr Optionen und Konkurrenten, was für Neulinge verwirrend ist. Webentwicklung in Ruby? Die erste Wahl liegt auf der Hand.
DavidS
1
@BalusC +1 für eine detaillierte Erklärung. Meine Lieblingsantwort.
Anish B.
84

Siehe http://www.oracle.com/technetwork/java/faq-137059.html

Die JSP-Technologie ist Teil der Java-Technologiefamilie. JSP-Seiten werden zu Servlets kompiliert und können JavaBeans-Komponenten (Beans) oder Enterprise JavaBeans-Komponenten (Enterprise Beans) aufrufen, um die Verarbeitung auf dem Server durchzuführen. Daher ist die JSP-Technologie eine Schlüsselkomponente in einer hoch skalierbaren Architektur für webbasierte Anwendungen.

Siehe https://jcp.org/en/introduction/faq

A: Die JavaServer Faces-Technologie ist ein Framework zum Erstellen von Benutzeroberflächen für Webanwendungen. Die JavaServer Faces-Technologie umfasst:

Eine Reihe von APIs für: Darstellen von UI-Komponenten und Verwalten ihres Status, Behandeln von Ereignissen und Eingabevalidierung, Definieren der Seitennavigation sowie Unterstützen der Internationalisierung und Zugänglichkeit.

Eine benutzerdefinierte Tag-Bibliothek für JavaServer Pages (JSP) zum Ausdrücken einer JavaServer Faces-Schnittstelle innerhalb einer JSP-Seite.

JSP ist eine spezielle Art von Servlet.

JSF ist eine Reihe von Tags, die Sie mit JSP verwenden können.

S.Lott
quelle
6
"JSP ist eine spezielle Art von Servlet. JSF ist eine Reihe von Tags, die Sie mit JSP verwenden können." Diese Aussage beschreibt am besten die Beziehung zwischen den drei!
Kostenlos
34

Aus Browser- / Client-Perspektive

JSP und JSF sehen beide gleich aus. Gemäß den Anwendungsanforderungen eignet sich JSP besser für Anwendungen, die auf Anforderungen und Antworten basieren.

JSF ist auf umfangreichere ereignisbasierte Webanwendungen ausgerichtet. Ich sehe das Ereignis als viel detaillierter als die Anfrage / Antwort.

Aus Serverperspektive

Die JSP-Seite wird in ein Servlet konvertiert und weist nur ein minimales Verhalten auf.

Die JSF-Seite wird (von einem speziellen FacesServlet) in einen Komponentenbaum konvertiert und folgt dem durch die Spezifikation definierten Komponentenlebenszyklus.

Vh24
quelle
23

Servlets:

Mit der Java-Servlet-API können Java-Entwickler serverseitigen Code für die Bereitstellung dynamischer Webinhalte schreiben. Wie andere proprietäre Webserver-APIs bot die Java-Servlet-API eine verbesserte Leistung gegenüber CGI. Es hat jedoch einige wichtige zusätzliche Vorteile. Da Servlets in Java codiert wurden, bieten sie einen objektorientierten Entwurfsansatz (OO) und können, was noch wichtiger ist, auf jeder Plattform ausgeführt werden. Daher war derselbe Code auf jeden Host portierbar, der Java unterstützte. Servlets trugen wesentlich zur Popularität von Java bei, da es zu einer weit verbreiteten Technologie für die serverseitige Entwicklung von Webanwendungen wurde.

JSP:

JSP basiert auf Servlets und bietet eine einfachere, seitenbasierte Lösung zum Generieren großer Mengen dynamischer HTML-Inhalte für Webbenutzeroberflächen. Mit JavaServer Pages können Webentwickler und Designer HTML-Seiten mit speziellen Tags für die dynamischen Java-Teile einfach bearbeiten. JavaServer Pages verfügt über ein spezielles Servlet, das als JSP-Container bezeichnet wird und auf einem Webserver installiert ist und alle JSP-Seitenaufrufanforderungen verarbeitet. Der JSP-Container übersetzt eine angeforderte JSP in Servlet-Code, der dann kompiliert und sofort ausgeführt wird. Nachfolgende Anforderungen an dieselbe Seite rufen einfach das Laufzeitservlet für die Seite auf. Wenn eine Änderung an der JSP auf dem Server vorgenommen wird, löst eine Anforderung zum Anzeigen eine weitere Übersetzung, Kompilierung und einen Neustart des Laufzeitservlets aus.

JSF:

JavaServer Faces ist ein Standard-Java-Framework zum Erstellen von Benutzeroberflächen für Webanwendungen. Am wichtigsten ist, dass es die Entwicklung der Benutzeroberfläche vereinfacht, was häufig einer der schwierigeren und langwierigeren Teile der Entwicklung von Webanwendungen ist.
Obwohl es möglich ist, Benutzeroberflächen mithilfe grundlegender Java-Webtechnologien (wie Java-Servlets und JavaServer Pages) ohne ein umfassendes Framework für die Entwicklung von Webanwendungen für Unternehmen zu erstellen, können diese Kerntechnologien häufig zu einer Vielzahl von Entwicklungs- und Wartungsproblemen führen. Noch wichtiger ist, dass bis die Entwickler eine Lösung in Produktionsqualität erreichen, die gleichen Probleme, die von JSF gelöst wurden, auf nicht standardmäßige Weise gelöst wurden. JavaServer Faces wurde entwickelt, um die Entwicklung von Benutzeroberflächen für Java-Webanwendungen auf folgende Weise zu vereinfachen:
• Es bietet einen komponentenorientierten, clientunabhängigen Entwicklungsansatz zum Erstellen von Webbenutzeroberflächen und verbessert so die Produktivität und Benutzerfreundlichkeit der Entwickler.
• Es vereinfacht den Zugriff und die Verwaltung von Anwendungsdaten über die Webbenutzeroberfläche.
• Der Status der Benutzeroberfläche zwischen mehreren Anforderungen und mehreren Clients wird auf einfache und unauffällige Weise automatisch verwaltet.
• Es bietet ein Entwicklungsframework, das für ein vielfältiges Entwicklerpublikum mit unterschiedlichen Fähigkeiten geeignet ist.
• Es beschreibt einen Standardsatz von Architekturmustern für eine Webanwendung.

[ Quelle: Vollständige Referenz: JSF ]

Kishor Prakash
quelle
3
Ich war es nicht, aber ich kann mir vorstellen, dass Sie einfach eine Antwort aus einem Buch kopiert und eingefügt haben.
Mawburn
7
@Oberon: Danke für die Antwort. Es dauerte eine Weile, bis ich die genauen Wörter gefunden hatte. Wenn es nicht angemessen ist, können Sie oder jemand mir vorschlagen, die Antwort zu notieren. Ich werde es gerne tun.
Kishor Prakash
18

Es gibt auch Situationen, in denen Sie JSP gegenüber JSF bevorzugen können. Die Art der Anwendung sollte der entscheidende Faktor für die Auswahl der Technologie sein.

Wenn Sie eine umfangreiche GUI-Interaktion haben und viel Java-Scripting benötigt, bevorzugen Sie JSF. Grundsätzlich ist JSF das Beste, wenn Ihre GUI-App-Architektur komponentenorientiert und sogar wie Swing gesteuert wird.

Wenn es sich bei der Anwendung nur um eine einfache Formularübermittlung handelt und nicht viel GUI-Interaktion erforderlich ist, kann JSP gut funktionieren, wenn das Erlernen einer neuen Technologie ein Overhead ist und auch ein komplexes Framework nicht erforderlich ist.

Karthi
quelle
13

Servlet - es ist Java Server Side Layer.

  • JSP - es ist Servlet mit HTML
  • JSF - Die Komponenten basieren auf Tag-Bibliotheken
  • JSP - Es wird einmal in ein Servlet konvertiert, wenn der Server eine Anfrage erhalten hat.
gackern
quelle
2
JSP wird einmal in ein Servlet konvertiert, wenn der Server eine Anforderung erhalten hat.
Gackern
... wenn der Server die erste Anfrage erhalten hat. Mind Caching.
Dbalakirev
10

Das stimmt, dass JSP zum Zeitpunkt der Ausführung in ein Servlet konvertiert wird und JSF völlig neu ist, um die Webseite besser lesbar zu machen, da JSF das Schreiben aller Programmierstrukturen in Form von Tags ermöglicht.

Mahesh
quelle
6

Der grundlegende Unterschied zwischen Servlets und JSP besteht darin, dass wir in Servlets Java-Code schreiben und HTML-Code einbetten, und dass es bei JSP nur einen umgekehrten Fall gibt. In JSP schreiben wir HTML-Code und binden Java-Code mithilfe von Tags ein, die von JSP bereitgestellt werden.

user3608245
quelle
5

Java Server Pages (JSP) ist eine Java-Technologie, mit der Webentwickler und -designer schnell informationsreiche, dynamische Webseiten entwickeln und einfach warten können, die vorhandene Geschäftssysteme nutzen. Die JSP-Technologie trennt die Benutzeroberfläche von der Inhaltserstellung und ermöglicht es Designern, das gesamte Seitenlayout zu ändern, ohne den zugrunde liegenden dynamischen Inhalt zu ändern.

Facelets ist die erste Nicht-JSP-Seitendeklarationssprache für JSF (Java Server Faces), die JSF-Entwicklern im Vergleich zu JSP ein einfacheres und leistungsfähigeres Programmiermodell bietet. Es behebt verschiedene Probleme, die in JSP für die Entwicklung von Webanwendungen auftreten.

Hier ist eine Tabelle, die die Merkmale von Scriplets und Facelets vergleicht:

Geben Sie hier die Bildbeschreibung ein Quelle

Yster
quelle
0
JSP:means HTML+Java Code:

JSP hat einen eigenen Lebenszyklus jsp_init () jsp_service () jsp_destroy

Nach der ersten Anforderung konvertiert JSP in eine Java-Datei. Es gibt drei Arten von Tags, die wir verwenden:
1.) Skriptlos

<%  %>

Hier kann der Entwickler all die Dinge deklarieren, die der Entwickler für die Daten verwenden möchte

2.) Ausdruckstag

<%=  %>

Hier kann der Entwickler einige druckbezogene Daten verwenden

3.) Erklärung

<!% %>

Hier kann der Entwickler einige methodenbezogene Daten deklarieren.

Servlet:

Servlet hat seinen eigenen Lebenszyklus.

init()
service()
destroy()

Nach der ersten Anforderung liest der Container die Daten aus der Datei web.xml und nach der Begrüßung wird die Füllung angezeigt.
Nach dem Ausführen der Aktion wird nun die URL durchsucht und nach diesem Vorgang wird das jeweilige Servlet selbst durchsucht. Serviceoperation wird ausgeführt.

JSF:

JSF hat eine eigene Benutzeroberfläche und der Lebenszyklus kann auf sechs Arten ausgeführt werden:

A)Restore view phase
B)Apply request values phase
C)Process validations phase
D)Update model values phase
E)Invoke application phase
F)Render response phase

Für ui hier für Tabelle hier verwenden wir Panel-Gitter und es gibt verschiedene Flächen dafür, das heißt.

Rich Faces
Prime Faces.
Ankit
quelle
-1

JSPs sind die View-Komponente von MVC (Model View Controller). Der Controller nimmt die eingehende Anforderung entgegen und leitet sie an das Modell weiter. Dies kann eine Bean sein, die Datenbankzugriff ausführt. Die JSP formatiert die Ausgabe dann mit HTML, CSS und JavaScript, und die Ausgabe wird dann an den Anforderer zurückgesendet.

Metrangia
quelle
-1

JSF ist ein fortschrittliches Framework, bei dem die auf Model-View-Controller (MVC) basierende Architektur für Projekte sehr einfach zu implementieren ist. Der Hauptvorteil von JSF gegenüber JSP ist das einfache dynamische Rendern der Komponenten im Browser basierend auf den Bedingungen und der einfachen Integration von Ajax-Ereignissen.

Das Frontend der JSF-Anwendung, dh xhtml-Dateien, werden dem Benutzer über den Browser angezeigt. Diese xhtml-Dateien rufen intern verwaltete Beans auf, z. B. Controller, auf denen die eigentliche Anwendungslogik geschrieben ist.

Die Controller rufen intern verschiedene Dienste auf, die mit der Datenbank kommunizieren (unter Verwendung der Hibernate- oder JPA-API). So geschieht der Fluss in Kürze.

JSF wird auch in Kombination mit RichFaces verwendet, einem Framework, mit dem Sie Ihrer Webanwendung ein umfassendes Erscheinungsbild verleihen können.

JSF + RichFaces + Hibernate / JPA ist eine gute Technologie, um sicher zu lernen!

Nikhil
quelle
-2

Jsp hat auch eingebauten Servlet-Code, der keine externe Kompilierung benötigt. Er kann direkt ausgeführt werden. Änderungen werden in jsp direkt in einem Browser wirksam.

Servlet muss kompiliert werden (dh es wird eine bestimmte Klassenerstellung haben)

Jsf ist eine Ansichtskomponente von MVC Framework

Mahender Reddy Yasa
quelle
-2

JSP steht für JAVA SERVER PAGE ........ jsp ist kein Servlet. Jsp verwendet Code und HTML-Tag an sich. Sie müssen kein HTML und kein Servlet separat erstellen. Jsp spielen eine großartige Rolle in Webanwendungen. Servlet ist eine Java-Klasse, die eine Rolle spielt, um Ihre HTML-Seite von statisch zu dynamisch zu machen.

Roopam
quelle
2
JSPs werden tatsächlich in Servlet-Komponenten konvertiert. "JSPs werden zur Laufzeit in Servlets übersetzt". Quelle: en.wikipedia.org/wiki/JavaServer_Pages
dbalakirev
-2

Servlets sind die serverseitigen Java-Programme, die im Webcontainer ausgeführt werden. Das Hauptziel des Servlets besteht darin, die vom Client empfangenen Anforderungen zu verarbeiten.

Java Server Pages wird zum Erstellen dynamischer Webseiten verwendet. Jsp's wurden eingeführt, um Java plus HTML-Code in eine einzelne Datei zu schreiben, was im Servlet-Programm nicht einfach war. Und eine JSP-Datei wird bei der Übersetzung in ein Java-Servlet konvertiert.

Java Server Faces ist ein MVC-Webframework, das die Entwicklung der Benutzeroberfläche vereinfacht.

Hetal Rachh
quelle