Oggetti impliciti JSP
Cos'è l'oggetto implicito JSP?
- Gli oggetti impliciti JSP vengono creati durante la fase di traduzione di JSP nel servlet.
- Questi oggetti possono essere utilizzati direttamente negli scriptlet inseriti nel metodo del servizio.
- Vengono creati automaticamente dal contenitore ed è possibile accedervi utilizzando gli oggetti.
Quanti oggetti impliciti sono disponibili in JSP?
Nel contenitore sono disponibili 9 tipi di oggetti impliciti:
- Fuori
- RICHIEDI
- Risposta
- Config
- Applicazioni
- Sessione
- PageContext
- Pagina
- Eccezione
Studiamo uno per uno
1) Fuori
- Out è uno degli oggetti impliciti per scrivere i dati nel buffer e inviare l'output al client in risposta
- L'oggetto Out ci consente di accedere al flusso di output del servlet
- Out è oggetto della classe javax.servlet.jsp.jspWriter
- Mentre lavori con servlet, abbiamo bisogno dell'oggetto printwriter
Esempio:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Implicit Guru JSP1</title> </head> <body> <% int num1=10;int num2=20; out.println("num1 is " +num1); out.println("num2 is "+num2); %> </body> </html>
Spiegazione del codice:
Riga di codice 11-12– out viene utilizzato per stampare nel flusso di output
Quando eseguiamo il codice sopra, otteniamo il seguente output:
Produzione:
- Nell'output otteniamo i valori di num1 e num2
2) Richiesta
- L'oggetto della richiesta è un'istanza di java.servlet.http.HttpServletRequest ed è uno degli argomenti del metodo di servizio
- Verrà creato dal contenitore per ogni richiesta.
- Verrà utilizzato per richiedere informazioni come parametri, informazioni sull'intestazione, nome del server, ecc.
- Utilizza getParameter() per accedere al parametro della richiesta.
Esempio:
Implicit_jsp2.jsp(modulo da cui viene inviata la richiesta a guru.jsp)
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Implicit Guru form JSP2</title> </head> <body> <form action="guru.jsp"> <input type="text" name="username"> <input type="submit" value="submit"> </form> </body> </html>
Guru.jsp (dove viene eseguita l'azione)
Spiegazione del codice:
Riga di codice 10-13: In implicit_jsp2.jsp(form) viene inviata la richiesta, quindi la variabile nome utente viene elaborata e inviata a guru.jsp che è l'azione di JSP.
Guru.jsp
Riga codice 10-11: È l'azione jsp dove viene elaborata la richiesta e il nome utente viene preso dal modulo jsp.
Quando esegui il codice sopra, ottieni il seguente output
Produzione:
Quando scrivi il test e clicchi sul pulsante Invia, ottieni il seguente output "Test di benvenuto".
3) Risposta
- "Response" è un'istanza della classe che implementa l'interfaccia HttpServletResponse
- Il contenitore genera questo oggetto e lo passa al metodo _jspservice() come parametro
- L'"oggetto risposta" verrà creato dal contenitore per ogni richiesta.
- Rappresenta la risposta che si può dare al cliente
- L'oggetto implicito della risposta viene utilizzato per digitare il contenuto, aggiungere cookie e reindirizzare alla pagina di risposta
Esempio:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Implicit Guru JSP4</title> </head> <body> <%response.setContentType("text/html"); %> </body> </html>
Spiegazione del codice:
Riga di codice 11: Nell'oggetto risposta possiamo impostare il tipo di contenuto
Qui stiamo impostando solo il tipo di contenuto nell'oggetto risposta. Pertanto, non vi è alcun output per questo.
4) Configurazione
- “Config” è del tipo java.servlet.servletConfig
- Viene creato dal contenitore per ogni pagina jsp
- Viene utilizzato per ottenere il parametro di inizializzazione in web.xml
Esempio:
Web.xml (specifica il nome e la mappatura del servlet)
Implicit_jsp5.jsp (ottenendo il valore del nome servlet)
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Implicit Guru JSP5</title> </head> <body> <% String servletName = config.getServletName(); out.println("Servlet Name is " +servletName);%> </body> </html>
Spiegazione del codice:
Nel file web.xml
Riga di codice 14-17: In web.xml abbiamo la mappatura dei servlet alle classi.
Implicito_jsp5.jsp
Riga di codice 10-11: Per ottenere il nome del servlet in JSP, possiamo usare config.getServletName, che ci aiuterà a ottenere il nome del servlet.
Quando esegui il codice sopra ottieni il seguente output:
Produzione:
- Il nome del servlet è "GuruServlet" poiché il nome è presente in web.xml
5) Applicazione
- L'oggetto applicazione (riga di codice 10) è un'istanza di javax.servlet.ServletContext e viene utilizzato per ottenere informazioni sul contesto e attributi in JSP.
- L'oggetto dell'applicazione viene creato dal contenitore uno per applicazione, quando l'applicazione viene distribuita.
- L'oggetto Servletcontext contiene una serie di metodi utilizzati per interagire con il contenitore servlet. Possiamo trovare informazioni sul contenitore servlet
Esempio:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru Implicit JSP6</title> </head> <body> <% application.getContextPath(); %> </body> </html>
Spiegazione del codice:
- Nel codice precedente, l'attributo application aiuta a ottenere il percorso di contesto della pagina JSP.
6) Sessione
- La sessione contiene l'oggetto "httpsession" (riga di codice 10).
- L'oggetto Session viene utilizzato per ottenere, impostare e rimuovere attributi nell'ambito della sessione e anche per ottenere informazioni sulla sessione
Esempio:
Implicit_jsp7(l'attributo è impostato)
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Implicit JSP</title> </head> <body> <% session.setAttribute("user","GuruJSP"); %> <a href="implicit_jsp8.jsp">Click here to get user name</a> </body> </html>
Implicit_jsp8.jsp (getAttribute)
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>implicit Guru JSP8</title> </head> <body> <% String name = (String)session.getAttribute("user"); out.println("User Name is " +name); %> </body> </html>
Spiegazione del codice:
Implicito_jsp7.jsp
Riga di codice 11: stiamo impostando l'attributo user nella variabile di sessione e quel valore può essere recuperato dalla sessione in qualunque jsp venga chiamato da quello (_jsp8.jsp).
Riga di codice 12: Stiamo chiamando un altro jsp su href in cui otterremo il valore per l'attributo user impostato.
Implicito_jsp8.jsp
Riga di codice 11: Stiamo ottenendo il valore dell'attributo utente dall'oggetto sessione e visualizzando tale valore
Quando esegui il codice sopra, ottieni il seguente output:
Quando clicchi sul link per il nome utente, otterrai il seguente output.
Produzione:
- Quando facciamo clic sul collegamento fornito in implicit_jsp7.jsp, veniamo reindirizzati alla seconda pagina jsp, ovvero la pagina (_jsp8.jsp) e otteniamo il valore dall'oggetto sessione dell'attributo utente (_jsp7.jsp).
7) Contesto della pagina
- Questo oggetto è del tipo pagecontext.
- Viene utilizzato per ottenere, impostare e rimuovere gli attributi da un ambito particolare
Gli ambiti sono di 4 tipi:
- Pagina
- RICHIEDI
- Sessione
- Applicazioni
Esempio:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Implicit Guru JSP9</title> </head> <body> <% pageContext.setAttribute("student","gurustudent",pageContext.PAGE_SCOPE); String name = (String)pageContext.getAttribute("student"); out.println("student name is " +name); %> </body> </html>
Spiegazione del codice:
Riga di codice 11: stiamo impostando l'attributo utilizzando l'oggetto pageContext e ha tre parametri:
- Le
- Valore
- Obbiettivo
Nel codice precedente, la chiave è student e il valore è “gurustudent” mentre l'ambito è l'ambito della pagina. Qui l'ambito è "pagina" e può essere ottenuto utilizzando solo l'ambito della pagina.
Riga di codice 12: Stiamo ottenendo il valore dell'attributo utilizzando pageContext
Quando esegui il codice sopra, ottieni il seguente output:
Produzione:
- L'output stamperà "il nome dello studente è gurustudent".
8) Pagina
- La variabile implicita della pagina contiene l'oggetto servlet attualmente eseguito per il jsp corrispondente.
- Funziona come questo oggetto per la pagina jsp corrente.
Esempio:
In questo esempio, stiamo utilizzando l'oggetto pagina per ottenere il nome della pagina utilizzando il metodo toString
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Implicit Guru JSP10</title> </head> <body> <% String pageName = page.toString(); out.println("Page Name is " +pageName);%> </body> </html>
Spiegazione del codice:
Riga di codice 10-11: In questo esempio, stiamo provando a utilizzare il metodo toString() dell'oggetto page e tentando di ottenere il nome stringa della pagina JSP.
Quando esegui il codice ottieni il seguente output:
Produzione:
- L'output è il nome della stringa della pagina jsp sopra
9) Eccezione
- L'eccezione è l'oggetto implicito della classe lanciabile.
- È usato per gestione delle eccezioni in JSP.
- L'oggetto eccezione può essere utilizzato solo nelle pagine di errore.Esempio:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" isErrorPage="true"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Implicit Guru JSP 11</title> </head> <body> <%int[] num1={1,2,3,4}; out.println(num1[5]);%> <%= exception %> </body> </html>
Spiegazione del codice:
Riga di codice 10-12 – Ha un array di numeri, ad esempio num1 con quattro elementi. Nell'output stiamo provando a stampare il quinto elemento dell'array da num1, che non è dichiarato nell'elenco dell'array. Quindi viene utilizzato per ottenere l'oggetto eccezione di jsp.
Produzione:
Stiamo ottenendo ArrayIndexOfBoundsException nell'array in cui stiamo ottenendo un array num1 del quinto elemento.