Obiecte implicite JSP

⚡ Rezumat inteligent

Obiectele implicite JSP sunt variabile predefinite pe care containerul servlet le creează automat în timpul traducerii paginii, permițând dezvoltatorilor să acceseze fluxuri de ieșire, cereri, răspunsuri, sesiuni și date de aplicație direct în interiorul unei pagini, fără declarații manuale sau configurații suplimentare.

  • 🖨️ Obiect de ieșire: Scrie date în buffer și trimite ieșirea către client prin JspWriter curs de apa.
  • 📥 Obiect de solicitare: O instanță de HttpServletRequest care preia parametri, anteturi și detalii despre server folosind getParameter().
  • 📤 Obiect de răspuns: Implementează HttpServletResponse pentru a seta tipul de conținut, a adăuga cookie-uri și a redirecționa clientul.
  • ⚙️ Configurație și aplicație: Configurația citește parametrii de inițializare din web.xml; Aplicația partajează date contextuale pe întreaga implementare.
  • 🗂️ Sesiune și context de pagină: Sesiunea persistă atributele utilizatorului pe mai multe pagini; PageContext gestionează atributele pe mai multe pagini, cereri, sesiuni și aplicații.
  • ⚠️ Obiect de excepție: Un Throwable disponibil numai pe paginile de eroare care raportează erori de execuție, cum ar fi ArrayIndexOutOfBounds.

Ce este obiectul implicit JSP?

  • Obiectele implicite JSP sunt create în timpul fazei de traducere a JSP în servlet.
  • Aceste obiecte pot fi utilizate direct în scriptlete care intră în metoda serviciului.
  • Acestea sunt create automat de container și pot fi accesate folosind obiecte.

Câte obiecte implicite sunt disponibile în JSP?

Există 9 tipuri de obiecte implicite disponibile în container:

  1. Afară
  2. Cerere
  3. Răspuns
  4. config
  5. Aplicatii
  6. Sesiune
  7. PageContext
  8. Pagină
  9. Excepție

Să studiem unul câte unul

1) Afară

  • Out este unul dintre obiectele implicite pentru a scrie datele în buffer și a trimite ieșire către client ca răspuns
  • Obiectul Out ne permite să accesăm fluxul de ieșire al servlet-ului
  • Out este un obiect al javax.servlet.jsp.jspWriter clasă
  • În timp ce lucrați cu servlet, avem nevoie de obiect printwriter

Exemplu:

<%@ 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>

Explicația codului:

Code Linia 11-12– out este folosit pentru a imprima în fluxul de ieșire

Când executăm codul de mai sus, obținem următoarea ieșire:

În JSP

ieșire:

  • În rezultat, obținem valorile num1 și num2

2) Cerere

  • Obiectul de solicitare este o instanță a lui java.servlet.http.HttpServletRequest și este unul dintre argumentele metodei serviciului
  • Acesta va fi creat de container pentru fiecare cerere.
  • Va fi folosit pentru a solicita informații precum parametrul, informațiile din antet, numele serverului etc.
  • Folosește getParameter() pentru a accesa parametrul de solicitare.

Exemplu:

Implicit_jsp2.jsp(formular din care cererea este trimisă către 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 (unde se întreprinde acțiunea)

Cerere în JSP

Explicația codului:

Code Linia 10-13: În implicit_jsp2.jsp(form) cererea este trimisă, prin urmare variabila nume de utilizator este procesată și trimisă către guru.jsp, care este acțiunea JSP.

Guru.jsp

Code Linia 10-11: Este acțiunea jsp în care cererea este procesată, iar numele de utilizator este preluat din formularul jsp.

Când executați codul de mai sus, obțineți următoarea ieșire

ieșire:

Cerere în JSP

Când scrieți testul și faceți clic pe butonul de trimitere, obțineți următorul rezultat „Test de bun venit”.

Cerere în JSP

3) Răspuns

  • „Response” este o instanță de clasă care implementează interfața HttpServletResponse
  • Container generează acest obiect și trece la metoda _jspservice() ca parametru
  • „Obiectul răspuns” va fi creat de container pentru fiecare cerere.
  • Reprezintă răspunsul care poate fi dat clientului
  • Obiectul implicit răspuns este utilizat pentru a tipa conținut, a adăuga cookie-uri și a redirecționa către pagina de răspuns

Exemplu:

<%@ 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>

Explicația codului:

Code Linia 11: În obiectul răspuns putem seta tipul de conținut

Aici setăm doar tipul de conținut în obiectul răspuns. Prin urmare, nu există nicio ieșire pentru aceasta.

4) Configurare

  • „Config” este de tipul java.servlet.servletConfig
  • Este creat de containerul pentru fiecare pagină jsp
  • Este folosit pentru a obține parametrul de inițializare în web.xml

Exemplu:

Web.xml (specifică numele și hartaping al servletului)

Configurare în JSP

Implicit_jsp5.jsp (obține valoarea numelui servletului)

<%@ 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>

Explicația codului:

În web.xml

Code Linia 14-17: În web.xml avem hartaping de servlet-uri către clase.

Implicit_jsp5.jsp

Code Linia 10-11: Pentru a obține numele servlet-ului în JSP, putem folosi config.getServletName, care ne va ajuta să obținem numele servlet-ului.

Când executați codul de mai sus, obțineți următoarea ieșire:

Răspuns în JSP

ieșire:

  • Numele servlet-ului este „Guru„Servlet” așa cum este numele este prezent în web.xml

Aplicația 5)

  • Obiectul aplicației (linia de cod 10) este o instanță a javax.servlet.ServletContext și este folosit pentru a obține informațiile de context și atributele în JSP.
  • Obiectul aplicației este creat de un container pentru fiecare aplicație, atunci când aplicația este implementată.
  • Obiectul Servletcontext conține un set de metode care sunt utilizate pentru a interacționa cu containerul servlet. Putem găsi informații despre containerul servlet

Exemplu:

<%@ 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>

Explicația codului:

  • În codul de mai sus, atributul aplicației ajută la obținerea căii de context a paginii JSP.

6) Sesiune

  • Sesiunea conține obiectul „httpsession” (linia de cod 10).
  • Obiectul sesiune este folosit pentru a obține, seta și elimina atribute din domeniul de aplicare a sesiunii și, de asemenea, este folosit pentru a obține informații despre sesiune

Exemplu:

Implicit_jsp7 (atributul este setat)

<%@ 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>

Explicația codului:

Implicit_jsp7.jsp

Code Linia 11: setăm utilizatorul de atribut în variabila de sesiune și acea valoare poate fi preluată din sesiune în orice jsp este apelat din acea (_jsp8.jsp).

Code Linia 12: Apelăm un alt jsp pe href în care vom obține valoarea pentru atributul utilizator care este setat.

Implicit_jsp8.jsp

Code Linia 11: Obținem valoarea atributului utilizator de la obiectul sesiune și afișăm acea valoare

Când executați codul de mai sus, obțineți următoarea ieșire:

Sesiune în JSP

Când faceți clic pe linkul pentru numele de utilizator. Veți obține următoarea ieșire.

Sesiune în JSP

ieșire:

  • Când facem clic pe linkul dat în implicit_jsp7.jsp, atunci suntem redirecționați către a doua pagină jsp, adică (_jsp8.jsp) și obținem valoarea de la obiectul sesiune al atributului utilizator (_jsp7.jsp).

7) PageContext

  • Acest obiect este de tipul contextului paginii.
  • Este folosit pentru a obține, seta și elimina atributele dintr-un anumit domeniu

Scopurile sunt de 4 tipuri:

  • Pagină
  • Cerere
  • Sesiune
  • Aplicatii

Exemplu:

<%@ 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>

Explicația codului:

Code Linia 11: setăm atributul folosind obiectul pageContext și are trei parametri:

  • Cheie
  • Valoare
  • domeniu

În codul de mai sus, cheia este student și valoarea este „gurustudent”, în timp ce domeniul de aplicare este domeniul paginii. Aici domeniul de aplicare este „pagină” și se poate obține folosind doar domeniul de aplicare al paginii.

Code Linia 12: Obținem valoarea atributului folosind pageContext

Când executați codul de mai sus, obțineți următoarea ieșire:

PageContext în JSP

ieșire:

  • Ieșirea va afișa „numele studentului este gurustudent”.

8) Pagina

  • Variabila implicită de pagină deține obiectul servlet executat curent pentru jsp-ul corespunzător.
  • Acționează ca acest obiect pentru pagina jsp curentă.

Exemplu:

În acest exemplu, folosim obiectul pagină pentru a obține numele paginii folosind metoda 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>

Explicația codului:

Code Linia 10-11: În acest exemplu, încercăm să folosim metoda toString() a obiectului pagină și încercăm să obținem numele șirului paginii JSP.

Când executați codul, obțineți următoarea ieșire:

Pagina în JSP

ieșire:

  • Ieșirea este numele șirului paginii jsp de mai sus

9) Excepție

  • Excepția este obiectul implicit al clasei throwable.
  • Este folosit pentru gestionarea excepțiilor în JSP.
  • Obiectul excepție poate fi utilizat numai în paginile de eroare.Exemplu:
<%@ 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>

Explicația codului:

Code Linia 10-12 – Are o matrice de numere, adică num1 cu patru elemente. În rezultat, încercăm să tipărim al cincilea element al matricei din num1, care nu este declarat în lista de matrice. Deci, este folosit pentru a obține obiectul excepție al jsp.

ieșire:

Excepție în JSP

Obținem ArrayIndexOfBoundsException în matricea unde obținem o matrice num1 a celui de-al cincilea element.

Întrebări frecvente

Nu. Containerul creează automat toate cele nouă obiecte implicite în timpul fazei de traducere. Dezvoltatorii le pot utiliza direct în scriptlet-uri și în metoda de service fără a importa pachete sau a declara variabile.

Nu. Obiectele implicite sunt disponibile numai în scriptlet-uri și expresii care se mapează la metoda serviciului. Nu pot fi utilizate în etichetele de declarare JSP, care generează membri la nivel de clasă în afara acelei metode.

PageContext funcționează în toate cele patru domenii de aplicare - pagină, cerere, sesiune și aplicație. Acesta oferă metodele setAttribute, getAttribute și removeAttribute, ceea ce îl face cel mai flexibil obiect implicit pentru gestionarea datelor pe diferite niveluri de domeniu.

Inteligența artificială poate explica fiecare obiect implicit cu exemple, poate converti codul scriptlet în alternative mai curate și poate răspunde instantaneu la întrebări despre domeniu de aplicare. Acest lucru îi ajută pe începători să înțeleagă când să utilizeze corect obiectele de solicitare, sesiune sau aplicație.

Da. Instrumentele de inteligență artificială pot genera fragmente JSP funcționale folosind out, request, session și alte obiecte implicite, apoi pot explica fiecare linie. Dezvoltatorii ar trebui să verifice în continuare rezultatul pentru a verifica corectitudinea gestionării domeniului de aplicare și a securității.

Rezumați această postare cu: