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
- Applicazione
- 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 รจ un oggetto di javax.servlet.jsp.jspWriter classe
- 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:
Code Riga 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:
Code Righe 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
Code Righe 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:
Code Linea 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 mappa)ping della 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
Code Linea 14-17: In web.xml abbiamo la mappaping di servlet alle classi.
Implicito_jsp5.jsp
Code Linea 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 della servlet รจ "GuruIl nome "Servlet" รจ presente nel file 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
Code Linea 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).
Code Linea 12: Stiamo chiamando un altro jsp su href in cui otterremo il valore per l'attributo user impostato.
Implicito_jsp8.jsp
Code Linea 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
- Applicazione
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:
Code Linea 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.
Code Linea 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:
Code Linea 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:
Code Riga 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.











