Vai al contenuto

Servlet

Da Wikipedia, l'enciclopedia libera.
Esempio di applicazione web in un sito di e-commerce tra utente e destinatario che si interfacciano tramite l'applicazione scambiando dati di ordinazione, anagrafici e bancari, che può essere implementato con servlet e JSP oppure web framework

In informatica, nell'ambito della programmazione Web, i servlet sono oggetti scritti in linguaggio Java che operano all'interno di un server web oppure un server per applicazioni permettendo la creazione di applicazioni web[1] (elaborazione lato server). Il nome deriva dalle Java applet, piccoli programmi scritti in Java che si eseguono all'interno del browser dell'utente client (elaborazione lato client).

L'uso più frequente delle servlet è la generazione di pagine web dinamiche a seconda dei parametri di richiesta inviati dal client browser dell'utente al server. Nelle applicazioni più moderne non viene eseguita la programmazione diretta delle servlet, ma si preferisce usare dei framework web che implementano la specifica servlet, oppure delle JavaServer Pages che vengono poi tradotte (compilate) in servlet a runtime.

I programmi che implementano le specifiche dei servlet possono girare all'interno di qualunque servlet container e non sono vincolati ad un particolare server. Lo standard delle servlet rientra all'interno di un vasto insieme di standard detto Java EE[2][3]. Una servlet può avere molteplici funzionalità e può essere associata ad una o più risorse web.

Per esempio per la realizzazione della parte di Controller nel pattern Model-View-Controller (MVC) in una architettura basata su Java si può ricorrere ad una servlet (es. Spring framework, Java Server Faces). Questa servlet, una volta invocata dal server, deciderà quale pagina visualizzare o quale parte dell'applicazione invocare.

Un altro esempio potrebbe essere un meccanismo per il riconoscimento dell'utente (login): quando si digita un URL del tipo miosito/login.login viene invocata una servlet che verifica la correttezza delle credenziali di accesso inserite appoggiandosi ad un database e indirizza ad una pagina di conferma o di errore a seconda del risultato.

Sotto quest'ottica una servlet è un programma che deve rispettare determinate regole e che processa in un determinato modo una richiesta HTTP. Nulla vieta che all'interno dello stesso server web possano girare più servlet associate a URL diversi, ognuna delle quali eseguirà operazioni diverse ed estenderà le funzionalità del server web.

La versione della specifica servlet 3.0 corrisponde alla JSR 315[4]. Tra le novità più importanti, la possibilità di gestire in modo asincrono le richieste HTTP ed il fatto che il file di configurazione web.xml diventa opzionale. La versione 3.1, corrispondente alla JSR 340[5], permette l'elaborazione di richieste asincrone.

La versione 4.0 di questa specifica, corrisponde alla JSR 369[6] è stata l'ultima versione rilasciata nell'ambito Java EE. Questa versione supporta HTTP/2 e permette di inviare delle risorse in modalità push dal server al client[7].

La versione 5.0 è stata parte del rilascio di Jakarta EE 9[8], in questa versione, tutti i pacchetti javax.servlet sono stati rinominati in jakarta.servlet.

  1. ^ Java Servlet Technology Overview, su oracle.com. URL consultato il 12 gennaio 2014.
  2. ^ Java Servlet Technology, su docs.oracle.com. URL consultato il 12 gennaio 2014 (archiviato dall'url originale il 13 gennaio 2014).
  3. ^ Java Servlet Specification, su javaee.github.io. URL consultato l'11 giugno 2017.
  4. ^ JSR 315: JavaTM Servlet 3.0 Specification, su jcp.org. URL consultato il 12 gennaio 2014.
  5. ^ JSR 340: Java Servlet 3.1 Specification, su jcp.org. URL consultato il 25 maggio 2015.
  6. ^ JSR 369: JavaTM Servlet 4.0 Specification, su jcp.org. URL consultato l'11 giugno 2017.
  7. ^ Get started with Servlet 4.0
  8. ^ Jakarta Servlet 5.0, su projects.eclipse.org. URL consultato il 20 dicembre 2021.

Voci correlate

[modifica | modifica wikitesto]

Collegamenti esterni

[modifica | modifica wikitesto]
Controllo di autoritàLCCN (ENsh00004803 · BNF (FRcb13603508g (data) · J9U (ENHE987007290951805171