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 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:
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)
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:
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:
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)
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:
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:
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:
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:
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:
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:
Obศinem ArrayIndexOfBoundsException รฎn matricea unde obศinem o matrice num1 a celui de-al cincilea element.











