Che cos'è Java Servlet?


277

Ho letto molti articoli per capire il servlet java ma non ci sono riuscito.

Potete per favore dare una breve introduzione dei servlet Java (in un linguaggio semplice). Ti piace cos'è servlet? Quali sono i vantaggi? E tutto questo.

Non riesco a capire la differenza tra linguaggi di programmazione lato server (PHP, ASP) e servlet.


38
Passa il servletstag sotto la domanda fino a quando viene visualizzata una finestra nera. Fai clic sul link informazioni .
BalusC,

1
Servlet Puoi vederlo. Penso che questo sia dettagli e autentico.
shohan,

Risposte:


336

Un servlet è semplicemente una classe che risponde a un particolare tipo di richiesta di rete, generalmente una richiesta HTTP. Fondamentalmente i servlet sono generalmente usati per implementare applicazioni web - ma ci sono anche vari framework che operano al di sopra dei servlet (ad es. Struts) per fornire un'astrazione di livello superiore rispetto al livello "ecco una richiesta HTTP, scrivi a questa risposta HTTP" che servlet fornire.

I servlet vengono eseguiti in un contenitore servlet che gestisce il lato di rete (ad es. Analisi di una richiesta HTTP, gestione della connessione ecc.). Uno dei più noti container servlet open source è Tomcat .


16
I servlet sono frammenti di codice java chiamati dal web server all'interno del web server stesso. Se vuoi qualcosa che assomigli a PHP o ASP hai bisogno di JSP (che sono un tipo speciale di servlet)
Thorbjørn Ravn Andersen,

3
Grazie per la risposta, ma ancora non riesco a ottenere il vero uso dei servlet, sarebbe meglio se tu potessi spiegare con l'esempio come sitution dove possiamo usare servlet. non capivo l'uso del servlet come quello che il servlet può fare che altri linguaggi di programmazione lato server non possono fare.
Hardik,

4
@Hardik: non è che possano fare qualsiasi cosa che non si possa fare in un altro modo. I servlet sono solo una tecnologia comune per il lavoro Java sul lato server. I servlet non sono una lingua e nemmeno ASPX. Entrambe sono piattaforme utilizzate in combinazione con un'altra lingua, in genere Java nel caso dei servlet.
Jon Skeet,

7
@Hardik: Come ho scritto nel mio post, i servlet sono classi che operano all'interno di un contenitore di servlet. Il contenitore servlet può ospitare più servlet contemporaneamente.
Jon Skeet,

5
@Hardik: Sì, esattamente. Il servlet può fornire l'HTML per visualizzare il modulo e agire anche sull'invio. I servlet possono anche essere utilizzati per implementare servizi Web. Essi possono essere utilizzati per altri protocolli HTTP a parte, ma HTTP è di gran lunga il più comune dei trasporti gestiti da servlet.
Jon Skeet,

102

Un servlet al suo interno è una classe java; che può gestire richieste HTTP. In genere la nitidezza interna della lettura di una richiesta HTTP e della risposta via cavo è gestita da contenitori come Tomcat. Questo viene fatto in modo che come sviluppatore lato server puoi concentrarti su cosa fare con la richiesta e le risposte HTTP e non preoccuparti di gestire il codice che si occupa della rete ecc. Il contenitore si occuperà di cose come avvolgere il tutto in un Oggetto risposta HTTP e inviarlo al client (ad esempio un browser).

Ora la prossima domanda logica da porsi è chi decide cosa dovrebbe fare un container? E la risposta è; Almeno nel mondo Java è guidato (nota che non ho usato la parola controllata) dalle specifiche. Ad esempio, le specifiche del servlet (Vedi risorsa 2) determinano cosa deve essere in grado di fare un servlet. Quindi, se riesci a scrivere un'implementazione per la specifica, congratulazioni hai appena creato un contenitore (tecnicamente anche i contenitori come Tomcat implementano altre specifiche e fanno cose complicate come caricatori di classe personalizzati ecc. Ma hai l'idea).

Supponendo che tu abbia un container, i tuoi servlet ora sono classi java il cui ciclo di vita sarà gestito dal container ma la tua reazione alle richieste HTTP in arrivo sarà decisa da te. Puoi farlo scrivendo cosa vuoi fare nei metodi predefiniti come init (), doGet (), doPost () ecc. Guarda Resource 3.

Ecco un esercizio divertente per te. Crea un servlet semplice come in Resource 3 e scrivi alcune istruzioni System.out.println () nel suo metodo di costruzione (Sì, puoi avere un costruttore di un servlet), init (), doGet (), doPost () ed esegui il servlet in tomcat. Vedere i registri della console e i registri tomcat.

Spero che questo aiuti, buon apprendimento.

risorse

  1. Guarda come appare il servlet HTTP qui (esempio Tomcat).

  2. Specifica servlet .

  3. Esempio di servlet semplice .

  4. Inizia a leggere il libro online / PDF Fornisce anche il download dell'intero libro. Potrebbe essere questo aiuterà. se hai appena iniziato i servlet potrebbe essere una buona idea leggere il materiale insieme all'API servlet. è un processo di apprendimento più lento, ma è molto più utile per chiarire le basi.


12
Le risposte di solo collegamento sono scoraggiate su Stack Overflow, poiché le risorse a cui si collegano potrebbero non essere disponibili in futuro o potrebbero cambiare. Valuta di riassumere il contenuto pertinente del link nella tua risposta per migliorarlo.

6
@Cupcake apprezza il tuo feedback costruttivo. Ho provato ad aggiungere un po 'di carne alla risposta. Grazie per aver migliorato la community.
Ayusman,

34

Oltre a quanto sopra, e solo per sottolineare l'evidente bleedin ...

Per molti questo è estremamente ovvio, ma per qualcuno abituato a scrivere app che vengono appena eseguite e poi terminano: un servlet passa la maggior parte del tempo a fare il giro in giro senza fare nulla ... in attesa di ricevere qualcosa, una richiesta e quindi rispondere ad essa . Per questo motivo un servlet ha una vita: viene inizializzato e quindi attende in giro, rispondendo a qualsiasi cosa gli venga lanciata, e viene quindi distrutto. Ciò implica che deve essere creato (e successivamente distrutto) da qualcos'altro (un framework), che viene eseguito nel proprio thread o processo e che non fa nulla se non richiesto. E anche che, in un modo o nell'altro, deve essere implementato un meccanismo in base al quale questa "entità" può "ascoltare" le richieste.

Suggerisco che leggere su thread, processi e socket farà luce su questo: è abbastanza diverso dal modo in cui funziona un'app di base "ciao mondo".

Si potrebbe sostenere che il termine "server" o "servlet" è un po 'eccessivo. Un nome più razionale e più semplice potrebbe essere "responder". Il motivo della scelta del termine "server" è storico: le prime disposizioni di questo tipo erano "file server", in cui più terminali utente / client avrebbero richiesto un file specifico da una macchina centrale, e questo file sarebbe stato "servito" "come un libro o un piatto di pesce e patatine.


1
È errato visualizzare il servlet come analogo a un "controller" in un framework MVC standard?
user2490003

Personalmente non riesco a vedere come valga quell'analogia. Tenderei anche a pensare che le persone che pensano che la mia risposta sia utile (aiuta a chiarire le cose per loro) potrebbero essere confuse dal tuo suggerimento.
mike rodent,

Penso che questa risposta sia utile. Ma mi chiedevo anche (indipendentemente da questa risposta, e prima di leggerla) la stessa domanda che @ user2490003 poneva sopra. Qual è la differenza tra un servlet e un controller framework MVC? Perché l'analogia dell'utente2490003 non regge?
cellepo,

Un accordo MVC è più complicato e tuttavia meno complicato. Non implica necessariamente l'attesa di input. Nel definire l'idea di base di una configurazione server-client, è quella semplicità che cerco di sottolineare. Guarda il diagramma MVC di base qui: en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller . In una semplice configurazione client-server, l'utente interagisce solo con il client, non con due oggetti, ovvero una vista e un controller. Con MVC possono esserci anche più viste, più controller e più modelli. E in attesa di input non è (necessariamente) coinvolto.
mike rodent,

Oltre a quanto sopra, un server può servire più utenti, mentre non esiste un tale requisito con una configurazione MVC. Una configurazione MVC appartiene al mondo dell'informatica classica, ovvero app standalone. Con i server facciamo il nostro primo passo nell'universo dell'informatica interattiva. Non è che l'analogia sia sbagliata al 100%, più errata al 90%, e soprattutto che qualsiasi analogia è semplicemente inutile se in realtà non aiuta nessuno o niente in alcun modo. Un accordo server-client è così semplice come un'idea che nessuno ha bisogno di analogie, di alcun tipo , per capire.
mike rodent,

10

Che cos'è un servlet?

  • Un servlet è semplicemente una classe che risponde a un particolare tipo di richiesta di rete, generalmente una richiesta HTTP.
  • Fondamentalmente i servlet sono generalmente usati per implementare applicazioni web - ma ci sono anche vari framework che operano al di sopra dei servlet (ad es. Struts) per fornire un'astrazione di livello superiore rispetto al livello "ecco una richiesta HTTP, scrivi a questa risposta HTTP" che servlet fornire.
  • I servlet vengono eseguiti in un contenitore servlet che gestisce il lato di rete (ad es. Analisi di una richiesta HTTP, gestione della connessione ecc.). Uno dei più noti container servlet open source è Tomcat.

  • In un paradigma di richiesta / risposta, un server Web può servire solo pagine statiche al client

  • Per servire pagine dinamiche, abbiamo bisogno di servlet.
  • Servlet non è altro che un programma Java
  • Questo programma Java non ha un metodo principale. Ha solo alcuni metodi di callback.
  • Come comunica il server Web con il servlet? Tramite container o motore Servlet.
  • Servlet vive e muore all'interno di un contenitore web.
  • Il contenitore Web è responsabile del richiamo dei metodi in un servlet. Sa quali metodi di callback ha il Servlet.

Flusso di richiesta

  • Il client invia una richiesta HTTP al server Web
  • Il server Web inoltra la richiesta HTTP al contenitore Web.
  • Poiché Servlet non è in grado di comprendere HTTP, è un programma Java, capisce solo gli oggetti, quindi il contenitore Web converte quella richiesta in un oggetto richiesta valido
  • Il contenitore Web gira un thread per ogni richiesta
  • Tutta la logica aziendale va all'interno dei metodi di callback doGet () o doPost () all'interno dei servlet
  • Servlet crea un oggetto risposta Java e lo invia al contenitore. Lo converte nuovamente in risposta HTTP per inviarlo al client

Come fa il Container a sapere quale client Servlet ha richiesto?

  • C'è un file chiamato web.xml
  • Questo è il file principale per un contenitore Web
  • Hai informazioni sul servlet in questo file-

    • servlet
      • Servlet-name
      • Servlet di classe
    • servlet-mapping : il percorso come / Login o / Notifiche è mappato qui in
      • Servlet-name
      • url-pattern
    • e così via
  • Ogni servlet nell'app Web dovrebbe avere una voce in questo file

  • Quindi questa ricerca avviene come- url-pattern -> servlet-name -> servlet-class

Come "installare" Servlet? * Bene, gli oggetti servlet sono ereditati dalla libreria-javax.servlet. *. Tomcat e Spring possono essere utilizzati per utilizzare questi oggetti per adattarli al caso d'uso.

Rif . Guarda questo su 1.5x- https://www.youtube.com/watch?v=tkFRGdUgCsE . Questa ha una spiegazione fantastica.


1
Un link a una soluzione è il benvenuto, ma assicurati che la tua risposta sia utile senza di essa: aggiungi un contesto attorno al link in modo che i tuoi colleghi utenti abbiano qualche idea di cosa sia e perché sia ​​lì, quindi cita la parte più pertinente della pagina che ' re collegamento a nel caso in cui la pagina di destinazione non sia disponibile. Le risposte che sono poco più di un collegamento possono essere eliminate.
Mogsdad,

1
Nota che il mondo è andato avanti. Nel 2020 utilizziamo le annotazioni sul codice anziché il file di configurazione basato su stringa centrale in XML.
Thorbjørn Ravn Andersen,

5

Servlet è la tecnologia lato server che viene utilizzata per creare una pagina Web dinamica nell'applicazione Web. In realtà servlet è un API costituito da un gruppo di classi e interfacce, che ha alcune funzionalità. Quando utilizziamo l'API Servlet possiamo utilizzare la funzionalità predefinita delle classi e delle interfacce servlet.

Ciclo di vita di Servlet:

Il contenitore Web mantiene il ciclo di vita dell'istanza servlet.

1 Classe servlet caricata

2 Istanza servlet creata

3 viene richiamato il metodo init ()

4 Metodo service () invocato

5 Metodo destroy () invocato

Quando la richiesta viene sollevata dal client (browser), il contenitore web verifica se il servlet è in esecuzione o meno in caso affermativo, quindi invoca il metodo service () e fornisce la risposta al browser.

Quando il servlet non è in esecuzione, il web container segue i seguenti passaggi.

1. classloader carica la classe servlet

2. Crea un'istanza del servlet

3. Inizializza il servlet

4.invocare il metodo service ()

dopo aver servito il web container della richiesta attendere un tempo specifico, in questo momento se la richiesta arriva allora chiama solo il metodo service () altrimenti chiama il metodo destroy () ..


5

Se sei un principiante, penso che questo tutorial possa dare un'idea di base su cos'è Servlet ...

Di seguito sono riportati alcuni punti utili dal link indicato.

La tecnologia servlet viene utilizzata per creare un'applicazione Web che risiede sul lato server e genera una pagina Web dinamica.

Il servlet può essere descritto in molti modi, a seconda del contesto.

  • Servlet è una tecnologia utilizzata per creare un'applicazione Web.
  • Servlet è un'API che fornisce molte interfacce e classi tra cui la documentazione.
  • Servlet è un'interfaccia che deve essere implementata per creare qualsiasi servlet.
  • Servlet è una classe che estende le capacità dei server e risponde alla richiesta in arrivo. Può rispondere a qualsiasi tipo di richiesta.
  • Servlet è un componente Web che viene distribuito sul server per creare una pagina Web dinamica. Riferimento: qui .

1
Questo è un ottimo tutorial che spiega i concetti di base
Nikhil Sahu

3

I servlet Java sono moduli di programma Java sul lato server che procedono e rispondono alle richieste dei clienti e attualizzano l'interfaccia servlet. Aiuta a migliorare l'utilità del server Web con sovraccarico, manutenzione e supporto trascurabili.

Un servlet funge da mediatore tra il cliente e il server. Man mano che i moduli servlet continuano a funzionare sul server, possono ottenere e reagire alle richieste avanzate dal cliente. Gli oggetti di domanda e reazione del servlet offrono un metodo utile per gestire le richieste HTTP e inviare informazioni sul contenuto al cliente.

Poiché un servlet è coordinato con il dialetto Java, ha inoltre tutti i punti salienti di Java, ad esempio elevata mobilità, autonomia dello stage, sicurezza e disponibilità del database Java.


2

Servlet è una classe java per rispondere a una richiesta HTTP e produrre una risposta HTTP ...... quando creiamo una pagina con l'uso di HTML allora sarebbe una pagina statica, quindi per renderla dinamica usiamo SERVLET {in parole semplici si può capire} Per utilizzare servlet viene superato da JSP che utilizza il codice e il tag HTML sia di per sé ..


2

I servlet sono classi Java che eseguono determinate funzioni quando un utente del sito Web richiede un URL da un server. Queste funzioni possono completare attività come il salvataggio dei dati in un database, l'esecuzione della logica e la restituzione delle informazioni (come i dati JSON) necessarie per caricare una pagina.

La maggior parte dei programmi Java utilizza un main()metodo che esegue il codice quando il programma è in esecuzione. I servlet Java contengono doGet()e doPost()metodi che agiscono proprio come il main()metodo. Queste funzioni vengono eseguite quando l'utente effettua una GETo una POSTrichiesta all'URL mappato a quel servlet. Quindi l'utente può caricare una pagina per una GETrichiesta o archiviare dati da una POSTrichiesta.

Quando l'utente invia una GETo una POSTrichiesta, il server legge @WebServletall'inizio di ogni classe servlet nella directory per decidere quale classe servlet chiamare. Ad esempio, supponiamo che tu abbia una classe ChatBox e questa è nella parte superiore:

@WebServlet("/chat")
public class ChatBox extends HttpServlet {

Quando un utente richiede l' /chatURL, la tua ChatBoxclasse verrà eseguita.


0

Come descritto in questo articolo , un Servlet è un modo standardizzato di estendere un server Java e accedervi.

Ogni Servlet può essere visto come un piccolo server (da cui il nome), che ottiene l'accesso alla richiesta e alla risposta modellate nel codice Java, insieme ad altri dati di contesto, come la Sessione.

Con questi in mano, il codice Java del servlet può interfacciarsi con tutto ciò di cui ha bisogno per eseguire il rendering di una risposta, incluso il passaggio a una pagina JSP per generare una vista HTML.


-1

Penso che servlet sia fondamentalmente una classe java che funge da via di mezzo tra la richiesta HTTP e la risposta HTTP. Servlet è anche usato per rendere dinamica la tua pagina web. Supponiamo ad esempio se si desidera reindirizzare a un'altra pagina Web sul server, quindi è necessario utilizzare servlet. Un'altra cosa importante è che il servlet può essere eseguito su localhost e su un browser web.


-2

Hai appena ricevuto la risposta per un servlet normalmente. Tuttavia, voglio condividere qualcosa su Servlet 3.0

Che cos'è prima un servlet?

Un servlet è un componente Web gestito da un contenitore e genera contenuto dinamico. I servlet sono classi Java compilate in codice byte che possono essere caricate in modo dinamico ed eseguite da un server Web abilitato alla tecnologia Java o da un contenitore di servlet.

Servlet 3.0 è un aggiornamento della specifica Servlet 2.5 esistente. Servlet 3.0 API richiesta della piattaforma Java, Enterprise Edition 6. Servlet 3.0 è focalizzata sull'estensibilità e sulla connettività del framework web. Servlet 3.0 offre alcune estensioni come Ease of Development (EoD), Pluggability, Supporto asincrono e Miglioramenti della sicurezza

Facilità di sviluppo

Puoi dichiarare Servlet, Filtro, Listener, Init Param e quasi tutto può essere configurato usando le annotazioni

Pluggability

È possibile creare un sottoprogetto o un modulo con un web-fragment.xml. Ciò significa che consente di implementare i requisiti funzionali innestabili in modo indipendente.

Supporto asincrono

Servlet 3.0 offre la capacità di elaborazione asincrona, ad esempio: In attesa che una risorsa diventi disponibile, Generazione di risposta in modo asincrono.

Miglioramenti della sicurezza

Supporto per i metodi di sicurezza servlet di autenticazione, login e logout

L'ho trovato da Java Servlet Tutorial

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.