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:

  1. Fuori
  2. RICHIEDI
  3. Risposta
  4. Config
  5. Applicazioni
  6. Sessione
  7. PageContext
  8. Pagina
  9. 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:

Fuori in JSP

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)

Richiesta in JSP

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:

Richiesta in JSP

Quando scrivi il test e clicchi sul pulsante Invia, ottieni il seguente output "Test di benvenuto".

Richiesta in JSP

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)

Configurazione in JSP

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:

Risposta in JSP

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:

Sessione in JSP

Quando clicchi sul link per il nome utente, otterrai il seguente output.

Sessione in JSP

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:

PageContext in JSP

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:

Pagina in JSP

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:

Eccezione in JSP

Stiamo ottenendo ArrayIndexOfBoundsException nell'array in cui stiamo ottenendo un array num1 del quinto elemento.