Post

Visualizzazione dei post con l'etichetta Servlet

HttpComponents - Invocazione di una Servlet da un Client Java

DOMANDA: Posso invocare una servlet da un client Java? RISPOSTA: E' possibile stabilire una connessione con un endpoint attraverso le famose API del framework  HttpClient . Purtroppo, come si può notare dalla seguente frase riportata nella home page ufficiale della libreria "The Commons HttpClient project is now end of life, and is no longer being developed. It has been replaced by the  Apache HttpComponents  project " HttpClient è stato sostituito da HttpComponents . Per garantire vita lunga al nostro software, in questo post descriveremo un esempio di utilizzo proprio utilizzando la nuova libreria HttpComponents per eseguire una richiesta POST verso una Servlet . Innanzitutto eseguiamo il download dei jar di HttpComponents dal link HttpComponents v4.3 .  Apriamo quindi Eclipse, creiamo un nuovo progetto Java e, prima di scrivere codice, aggiungiamo al build path i jar appena scaricati. Creiamo la classe MyHttpClient : import java.io.IOException

Abilitazione Cross Application Scope in Tomcat per condivisione dati tra webapp

DOMANDA: Come posso condividere dati tra diverse webapp utilizzando l'Application Scope? RISPOSTA: Di default l' Application Scope è utilizzato per memorizzare oggetti a livello di web application. Questo livello di scope è il più alto rispetto ai classici scope di Request e Session Nome Scope Durata Request Singola richiesta, verso il server Fino a quando la risposta non viene inviata al client Session Tutte le richieste inviate dallo stesso browser Fino a quando non scade il timeout della sessione o l'ID di sessione non viene invalidato (ad es. chiusura del browser) Application Tutte le richieste inviate a una stessa Web Application Container Per poter recuperare un oggetto memorizzato a livello di Application Scope è necessario utilizzare il ServletContext . Se vogliamo recuperare un oggetto memorizzato nell'Application Scope della WebAppA dalla WebAppB è necessario fare attenzione ai seguenti

Pagina di provenienza (Referer)

DOMANDA: In una JSP (Java Server Page) posso risalire all'indirizzo della pagina di provenienza? RISPOSTA: Come in molti altri linguaggi, questa operazione è possibile anche con le Java Server Pages e ovviamente con le Servlet . L'url di provenienza prende il nome di Referer  e, grazie ai metodi già forniti dalla classe HttpServletRequest ,   possiamo riuscire nel nostro intento con questa riga di codice: String provenienza = request.getHeader( "Referer" ); Ecco un breve esempio di Servlet (Referer) : package referer; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet( "/Referer" ) public class Referer extends HttpServlet {    private static final long serialVersionUID = 1L;    publ

Controlli di sicurezza JSP e Servlet

DOMANDA: Perché non basta fare i controlli di sicurezza in una pagina JSP che rimanda ad una Servlet? RISPOSTA: La servlet è esposta (tramite configurazione del file web.xml ) allo stesso modo di una JSP, quindi è pubblica. Chiunque la può richiamare via GET , POST o per qualunque metodo previsto dalla servlet stessa e quindi si potrebbe avere una risposta bypassando la JSP e quindi i controlli in essa contenuti. Quindi è corretto (e fondamentale) mettere in sicurezza anche l’accesso alla servlet. La regola che vige per il web è che qualunque input o output che  proviene o può provenire da un utente (quindi da una fonte non sicura) deve essere controllata/filtrata.