Oggetti impliciti JSP

โšก Riepilogo intelligente

Gli oggetti impliciti JSP sono variabili predefinite che il contenitore di servlet crea automaticamente durante la traduzione della pagina, consentendo agli sviluppatori di accedere a flussi di output, richieste, risposte, sessioni e dati dell'applicazione direttamente all'interno di una pagina senza dichiarazioni manuali o configurazioni aggiuntive.

  • ๐Ÿ–จ๏ธ Oggetto di output: Scrive i dati nel buffer e invia l'output al client tramite JSPWriter ruscello.
  • ๐Ÿ“ฅ Oggetto della richiesta: Un'istanza di HttpServletRequest che recupera parametri, intestazioni e dettagli del server utilizzando getParameter().
  • ๐Ÿ“ค Oggetto di risposta: Implementa HttpServletResponse per impostare il tipo di contenuto, aggiungere i cookie e reindirizzare il client.
  • โš™๏ธ Configurazione e applicazione: Il modulo di configurazione legge i parametri di inizializzazione dal file web.xml; l'applicazione condivide i dati di contesto con l'intera implementazione.
  • ๐Ÿ—‚๏ธ Sessione e PageContext: La sessione mantiene gli attributi dell'utente tra le pagine; PageContext gestisce gli attributi a livello di pagina, richiesta, sessione e applicazione.
  • โš ๏ธ Oggetto eccezione: Un'eccezione Throwable disponibile solo nelle pagine di errore che segnala errori di runtime come ArrayIndexOutOfBounds.

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. Applicazione
  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 รจ 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:

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:

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:

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:

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)

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

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:

Risposta in JSP

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:

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
  • 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:

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:

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:

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:

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:

Eccezione in JSP

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

DOMANDE FREQUENTI

No. Il container crea automaticamente tutti e nove gli oggetti impliciti durante la fase di traduzione. Gli sviluppatori possono utilizzarli direttamente all'interno degli scriptlet e del metodo del servizio senza importare pacchetti o dichiarare variabili.

No. Gli oggetti impliciti sono disponibili solo all'interno di scriptlet ed espressioni che si mappano al metodo del servizio. Non possono essere utilizzati all'interno dei tag di dichiarazione JSP, che generano membri a livello di classe al di fuori di tale metodo.

PageContext funziona in tutti e quattro gli ambiti: pagina, richiesta, sessione e applicazione. Fornisce i metodi setAttribute, getAttribute e removeAttribute, il che lo rende l'oggetto implicito piรน flessibile per la gestione dei dati a diversi livelli di ambito.

L'intelligenza artificiale puรฒ spiegare ogni oggetto implicito con esempi, convertire il codice degli scriptlet in alternative piรน pulite e rispondere istantaneamente a domande sull'ambito di applicazione. Questo aiuta i principianti a capire quando utilizzare correttamente gli oggetti request, session o application.

Sรฌ. Gli strumenti di intelligenza artificiale possono generare snippet JSP funzionanti utilizzando `out`, `request`, `session` e altri oggetti impliciti, per poi spiegare ogni riga. Gli sviluppatori dovrebbero comunque rivedere l'output per verificare la corretta gestione degli ambiti e la sicurezza.

Riassumi questo post con: