Obiecte implicite JSP
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:
- Afară
- Cerere
- Răspuns
- config
- Aplicatii
- Sesiune
- PageContext
- Pagină
- 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 obiectul clasei javax.servlet.jsp.jspWriter
- Î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:
Linia de cod 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:
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 este luată acțiunea)
Explicația codului:
Linia de cod 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
Linia de cod 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:
Când scrieți testul și faceți clic pe butonul de trimitere, obțineți următorul rezultat „Test de bun venit”.
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:
Linia de cod 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 maparea servlet-ului)
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
Linia de cod 14-17: În web.xml avem maparea servlet-urilor la clase.
Implicit_jsp5.jsp
Linia de cod 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:
ieșire:
- Numele servlet-ului este „GuruServlet”, deoarece 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
Linia de cod 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).
Linia de cod 12: Apelăm un alt jsp pe href în care vom obține valoarea pentru atributul utilizator care este setat.
Implicit_jsp8.jsp
Linia de cod 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:
Când faceți clic pe linkul pentru numele de utilizator. Veți obține următoarea ieșire.
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:
Linia de cod 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.
Linia de cod 12: Obținem valoarea atributului folosind pageContext
Când executați codul de mai sus, obțineți următoarea ieșire:
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:
Linia de cod 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:
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:
Linia de cod 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:
Obținem ArrayIndexOfBoundsException în matricea unde obținem o matrice num1 a celui de-al cincilea element.