Qual è la differenza tra JSF, Servlet e JSP?


826

Ho alcune domande. Questi sono :

  1. In che modo JSP e Servlet sono collegati tra loro?
  2. JSP è una sorta di Servlet?
  3. In che modo JSP e JSF sono correlati tra loro?
  4. JSF è una sorta di JSP basato su UI pre-build come ASP.NET-MVC?

3
In JSF 2.0+, xml non è necessario.
Divyesh Kanzariya il

Risposte:


1229

JSP (pagine JavaServer)

JSP è una tecnologia di visualizzazione Java in esecuzione sul server che consente di scrivere testo modello in lingue lato client (come HTML, CSS, JavaScript, ect.). JSP supporta i taglibs , che sono supportati da pezzi di codice Java che consentono di controllare il flusso o l'output della pagina in modo dinamico. Un noto taglib è JSTL . JSP supporta anche Expression Language , che può essere utilizzato per accedere ai dati di backend (tramite attributi disponibili nella pagina, ambiti di richiesta, sessione e applicazione), principalmente in combinazione con taglibs.

Quando viene richiesto un JSP per la prima volta o all'avvio dell'app Web, il contenitore servlet lo compilerà in una classe che si estende HttpServlete lo utilizzerà durante la vita dell'app Web. È possibile trovare il codice sorgente generato nella directory di lavoro del server. Ad esempio in Tomcat , è la /workdirectory. Su una richiesta JSP, il contenitore servlet eseguirà la classe JSP compilata e invierà l'output generato (di solito solo HTML / CSS / JS) attraverso il server Web su una rete sul lato client, che a sua volta lo visualizza nel browser Web.

servlet

Servlet è un'API (Application Programming Interface) Java in esecuzione sul computer server, che intercetta le richieste fatte dal client e genera / invia una risposta. Un esempio ben noto è quello HttpServletche fornisce metodi per agganciare le richieste HTTP usando i popolari metodi HTTP come GETe POST. È possibile configurare HttpServlets per ascoltare un certo pattern URL HTTP, che è configurabile in web.xml, o più recentemente con Java EE 6 , con @WebServletannotazione.

Quando viene richiesto per la prima volta un Servlet o durante l'avvio dell'app Web, il contenitore servlet ne crea un'istanza e lo mantiene in memoria durante la vita dell'app Web. La stessa istanza verrà riutilizzata per ogni richiesta in arrivo il cui URL corrisponde allo schema URL del servlet. È possibile accedere ai dati della richiesta HttpServletRequeste gestire la risposta entro HttpServletResponse. Entrambi gli oggetti sono disponibili come argomenti di metodo all'interno di uno qualsiasi dei metodi sostituiti di HttpServlet, come doGet()e doPost().

JSF (JavaServer Faces)

JSF è un framework MVC basato su componenti che si basa sull'API Servlet e fornisce componenti tramite taglibs che possono essere utilizzati in JSP o in qualsiasi altra tecnologia di visualizzazione basata su Java come Facelets . Facelets è molto più adatto a JSF che a JSP. Fornisce in particolare grandi capacità di modello come componenti compositi , mentre JSP offre fondamentalmente solo il <jsp:include>modello in JSF, quindi sei costretto a creare componenti personalizzati con codice Java grezzo (che è un po 'opaco e un sacco di lavoro noioso) quando si desidera sostituire un gruppo ripetuto di componenti con un singolo componente. Da JSF 2.0, JSP è diventato obsoleto come tecnologia di visualizzazione a favore di Facelets.

Nota : JSP stesso NON è deprecato, solo la combinazione di JSF con JSP è deprecata.

Nota : JSP ha grandi capacità di templating tramite Taglibs, in particolare la variante ( Tag File ). Il modello JSP in combinazione con JSF è ciò che manca.

Come essere un MVC ( Model-View-Controller quadro), JSF fornisce il FacesServletcome unica richiesta-risposta del controller . Prende tutto il lavoro di richiesta / risposta HTTP standard e noioso dalle tue mani, come raccogliere l'input dell'utente, convalidarlo / convertirlo, metterlo in oggetti modello, invocare azioni e rendere la risposta. In questo modo si finisce sostanzialmente con una pagina JSP o Facelets (XHTML) per View e una classe JavaBean come modello . I componenti JSF sono usati per associare la vista al modello (come fa il tuo controllo web ASP.NET) e FacesServletusa l' albero dei componenti JSF per fare tutto il lavoro.

Domande correlate


8
@Shashank: non del tutto. Solo il <c:forEach>tag proviene da JSTL. Vedere anche stackoverflow.com/tags/jstl/info
BalusC

1
Sì. <mytag:doesSomething/>sembra un tag personalizzato e <jsp:attribute>un tag jsp.
Shashank Kadne,

3
Dal momento che questa è una risposta estremamente popolare, voglio aggiungere un bit molto importante, ovvero i file tag JSP che consentono la creazione di tag personalizzati per la composizione e il layout della pagina senza scrivere codice Java. Questa funzione è estremamente utile ed è stata parte dello standard per molti anni, ma rimane sottoutilizzata.
jiggy,

1
@johnny Facelets è stata la tecnologia di visualizzazione preferita da quando Java EE 6 è stato rilasciato nel 2009 ( docs.oracle.com/javaee/6/tutorial/doc/giepx.html ). Il set minimo di tecnologie per sviluppare app Web Java non è superiore alla maggior parte delle altre lingue, ma ci sono molte più opzioni e concorrenti, il che è fonte di confusione per i nuovi arrivati. Sviluppo Web in Ruby? La prima scelta è ovvia.
DavidS,

1
@BalusC +1 per una spiegazione dettagliata. La mia risposta preferita
Anish B.

84

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

La tecnologia JSP fa parte della famiglia di tecnologie Java. Le pagine JSP sono compilate in servlet e possono chiamare componenti JavaBeans (bean) o componenti Enterprise JavaBeans (bean enterprise) per eseguire l'elaborazione sul server. Pertanto, la tecnologia JSP è un componente chiave in un'architettura altamente scalabile per applicazioni basate sul web.

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

A: La tecnologia JavaServer Faces è un framework per la creazione di interfacce utente per applicazioni Web. La tecnologia JavaServer Faces include:

Una serie di API per: rappresentare i componenti dell'interfaccia utente e gestirne lo stato, gestire eventi e convalida degli input, definire la navigazione della pagina e supportare l'internazionalizzazione e l'accessibilità.

Una libreria di tag personalizzata JavaServer Pages (JSP) per esprimere un'interfaccia JavaServer Faces all'interno di una pagina JSP.

JSP è un tipo specializzato di servlet.

JSF è un insieme di tag che è possibile utilizzare con JSP.


6
"JSP è un tipo specializzato di servlet. JSF è un insieme di tag che è possibile utilizzare con JSP." Questa affermazione descrive meglio la relazione tra i tre!
gratuito l'

34

Dal punto di vista Browser / Client

JSP e JSF sembrano entrambi uguali. Secondo i requisiti dell'applicazione, JSP è più adatto per applicazioni basate su richiesta.

JSF è destinato a applicazioni Web basate su eventi più ricche. Vedo l'evento molto più granulare della richiesta / risposta.

Dal punto di vista del server

La pagina JSP viene convertita in servlet e ha solo un comportamento minimo.

La pagina JSF viene convertita nell'albero dei componenti (da FacesServlet specializzato) e segue il ciclo di vita dei componenti definito dalle specifiche.


23

Servlet:

L'API Servlet Java consente agli sviluppatori Java di scrivere codice sul lato server per fornire contenuti Web dinamici. Come altre API del server Web proprietario, l'API Servlet Java ha offerto prestazioni migliorate rispetto al CGI; tuttavia, presenta alcuni vantaggi aggiuntivi chiave. Poiché i servlet sono stati codificati in Java, forniscono un approccio alla progettazione orientata agli oggetti (OO) e, cosa più importante, sono in grado di funzionare su qualsiasi piattaforma. Pertanto, lo stesso codice era portatile per qualsiasi host che supportava Java. I servlet hanno contribuito notevolmente alla popolarità di Java, in quanto è diventata una tecnologia ampiamente utilizzata per lo sviluppo di applicazioni Web lato server.

JSP:

JSP è basato su servlet e offre una soluzione più semplice, basata su pagine, per generare grandi quantità di contenuto HTML dinamico per le interfacce utente Web. JavaServer Pages consente agli sviluppatori e ai progettisti Web di modificare semplicemente le pagine HTML con tag speciali per le porzioni dinamiche di Java. JavaServer Pages funziona con un servlet speciale noto come contenitore JSP, che è installato su un server Web e gestisce tutte le richieste di visualizzazione della pagina JSP. Il contenitore JSP traduce un JSP richiesto in codice servlet che viene quindi compilato ed eseguito immediatamente. Le richieste successive alla stessa pagina invocano semplicemente il servlet di runtime per la pagina. Se viene apportata una modifica a JSP sul server, una richiesta per visualizzarla avvia un'altra traduzione, compilazione e riavvio del servlet di runtime.

JSF:

JavaServer Faces è un framework Java standard per la creazione di interfacce utente per applicazioni Web. Soprattutto, semplifica lo sviluppo dell'interfaccia utente, che è spesso una delle parti più difficili e noiose dello sviluppo di applicazioni Web.
Sebbene sia possibile creare interfacce utente utilizzando le tecnologie Web Java di base (come i servlet Java e le pagine JavaServer) senza un framework completo progettato per lo sviluppo di applicazioni Web aziendali, queste tecnologie di base possono spesso portare a una varietà di problemi di sviluppo e manutenzione. Ancora più importante, quando gli sviluppatori raggiungeranno una soluzione di qualità di produzione, lo stesso insieme di problemi risolti da JSF sarà risolto in modo non standard. JavaServer Faces è progettato per semplificare lo sviluppo di interfacce utente per applicazioni Web Java nei seguenti modi:
• Fornisce un approccio di sviluppo incentrato sui componenti e indipendente dal client per la creazione di interfacce utente Web, migliorando così la produttività degli sviluppatori e la facilità d'uso.
• Semplifica l'accesso e la gestione dei dati dell'applicazione dall'interfaccia utente Web.
• Gestisce automaticamente lo stato dell'interfaccia utente tra più richieste e più client in modo semplice e discreto.
• Fornisce un framework di sviluppo che è amichevole per un pubblico di sviluppatori diversificato con diverse competenze.
• Descrive un insieme standard di motivi architettonici per un'applicazione Web.

[ Fonte: riferimento completo: JSF ]


3
Non sono stato io, ma immagino che sia perché hai praticamente copiato e incollato una risposta da un libro.
mawburn,

7
@Oberon: grazie per la risposta. Mi ci è voluto un po 'per trovare le parole esatte, quindi sono andato per il libro. Se non è appropriato, allora tu o qualcuno mi potete suggerire di prendere la risposta. Sarò felice di farlo.
Kishor Prakash,

18

Ci sono anche situazioni in cui puoi favorire JSP piuttosto che JSF. La natura dell'applicazione dovrebbe essere il fattore decisivo per scegliere la tecnologia.

Se si dispone di una ricca interazione con la GUI e sono necessari molti script Java, favorire JSF. Fondamentalmente se l'architettura della tua app GUI è orientata ai componenti e persino guidata come Swing, JSF è il migliore.

Se l'applicazione è solo una semplice presentazione, non è necessaria molta interazione con la GUI, allora JSP potrebbe fare bene se l'apprendimento di una nuova tecnologia è un sovraccarico e anche un framework complesso non è necessario.


13

Servlet: è il livello laterale del server Java.

  • JSP: è Servlet con HTML
  • JSF - i suoi componenti si basano sui tag libs
  • JSP: viene convertito in servlet una volta quando il server ha ricevuto la richiesta.

2
JSP viene convertito in servlet una volta quando il server ha ricevuto la richiesta.
ridacchiano

... quando il server ha ricevuto la PRIMA richiesta. Mente nella cache.
dbalakirev,

10

è vero che JSP viene convertito in servlet al momento dell'esecuzione e JSF è una novità assoluta al fine di rendere la pagina web più leggibile poiché JSF consente di scrivere tutte le strutture di programmazione sotto forma di tag.


6

La differenza di base tra Servlet e JSP è che in Servlet scriviamo codice java e nel fatto che incorporiamo codice HTML e c'è solo il caso inverso con JSP. In JSP scriviamo codice HTML e in quanto incorporiamo codice java usando i tag forniti da JSP.


5

Java Server Pages (JSP) è una tecnologia java che consente agli sviluppatori e ai progettisti Web di sviluppare rapidamente e gestire facilmente pagine Web dinamiche e ricche di informazioni che sfruttano i sistemi aziendali esistenti. La tecnologia JSP separa l'interfaccia utente dalla generazione di contenuti, consentendo ai progettisti di modificare il layout generale della pagina senza alterare il contenuto dinamico sottostante.

Facelets è il primo linguaggio di dichiarazione delle pagine non JSP progettato per JSF (Java Server Faces) che ha fornito agli sviluppatori JSF un modello di programmazione più semplice e più potente rispetto a JSP. Risolve diversi problemi che si verificano in JSP per lo sviluppo di applicazioni Web.

Ecco una tabella che confronta le caratteristiche di script e facelet:

inserisci qui la descrizione dell'immagine fonte


0
JSP:means HTML+Java Code:

JSP ha il proprio ciclo di vita jsp_init () jsp_service () jsp_destroy

Dopo la prima richiesta, JSP viene convertito in file .java. Esistono tre tipi di tag che stiamo utilizzando
1.) Senza script

<%  %>

Qui lo sviluppatore può dichiarare tutte quelle cose che lo sviluppatore vuole prendere i dati

2.) Tag espressione

<%=  %>

Qui lo sviluppatore può utilizzare alcuni dati relativi alla stampa

3.) Dichiarazione

<!% %>

Qui lo sviluppatore può dichiarare alcuni dati relativi al metodo.

Servlet:

Servlet ha il suo ciclo di vita.

init()
service()
destroy()

Dopo la prima richiesta, il contenitore leggerà i dati dal file web.xml e successivamente verrà visualizzato il riempimento di benvenuto.
Ora, dopo aver eseguito l'azione, cercherà l'URL e dopo questo processo cercherà il servlet particolare lì stesso. verrà eseguita l'operazione di servizio.

JSF:

JSF ha la sua interfaccia utente e il suo ciclo di vita può funzionare in sei modi,

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

Per voi qui per la tabella qui stiamo usando la griglia del pannello e ci sono diverse facce per questo che è.

Rich Faces
Prime Faces.

-1

I JSP sono il componente View di MVC (Model View Controller). Il controller accetta la richiesta in arrivo e la passa al modello, che potrebbe essere un bean che accede al database. Il JSP quindi formatta l'output utilizzando HTML, CSS e JavaScript e l'output viene quindi inviato al richiedente.


-1

JSF è un framework avanzato in cui è molto semplice implementare l'architettura basata su Model-View-Controller (MVC) per i progetti. Il vantaggio principale di JSF rispetto a JSP è il rendering dinamico semplice dei componenti sul browser in base alle condizioni e alla facile integrazione degli eventi ajax.

Il front-end dell'applicazione JSF, ovvero i file xhtml sono quelli che vengono mostrati all'utente tramite browser. Questi file xhtml richiamano internamente bean gestiti, ad esempio controller in cui è scritta la logica dell'applicazione effettiva.

I controller invocano internamente vari servizi che comunicano con il database (usando Hibernate o API JPA). Ecco come avviene il flusso in breve.

JSF è anche usato in combinazione con RichFaces, che è un framework per dare un aspetto ricco alla tua applicazione web.

JSF + RichFaces + Hibernate / JPA è una buona tecnologia per imparare con certezza!


-2

Jsp ha anche un codice servlet incorporato che non necessita di alcuna compilazione esterna che può essere eseguito direttamente. Le modifiche avranno effetto in jsp direttamente in un browser.

Il servlet deve essere compilato (cioè avrà una creazione di classe specifica)

Jsf è un componente di visualizzazione di MVC Framework


-2

JSP sta per JAVA SERVER PAGE ........ jsp non è un servlet. Jsp utilizza codice e tag HTML sia in sé che non è necessario creare un HTML e un servlet separatamente. Jsp gioca un ruolo magnifico nell'applicazione web. Servlet è una classe Java che svolge un ruolo per rendere la tua pagina HTML da statica a dinamica.


2
I JSP vengono infatti convertiti in componenti Servlet. "I JSP vengono tradotti in servlet in fase di esecuzione". Fonte: en.wikipedia.org/wiki/JavaServer_Pages
dbalakirev

-2

I servlet sono i programmi java lato server che vengono eseguiti all'interno del contenitore Web. L'obiettivo principale del servlet è elaborare le richieste ricevute dal client.

Java Server Pages viene utilizzato per creare pagine Web dinamiche. Sono stati introdotti i jsp per scrivere codice java plus html in un singolo file che non era facile da fare nel programma servlet. E un file jsp viene convertito in un servlet java quando viene tradotto.

Java Server Faces è un framework Web MVC che semplifica lo sviluppo dell'interfaccia utente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.