JSP implicitni objekti

Što je JSP implicitni objekt?

  • JSP implicitni objekti kreiraju se tijekom faze prijevoda JSP-a u servlet.
  • Ti se objekti mogu izravno koristiti u skriptama koje idu u servisnu metodu.
  • Spremnik ih kreira automatski, a može im se pristupiti pomoću objekata.

Koliko je implicitnih objekata dostupno u JSP-u?

U spremniku je dostupno 9 vrsta implicitnih objekata:

  1. Van
  2. Zatražite
  3. Odgovor
  4. config
  5. primjena
  6. Sjednica
  7. Kontekst stranice
  8. Stranica
  9. izuzetak

Učimo jedan po jedan

1) Van

  • Out je jedan od implicitnih objekata za pisanje podataka u međuspremnik i slanje izlaza klijentu kao odgovor
  • Out object nam omogućuje pristup izlaznom toku servleta
  • Out je objekt klase javax.servlet.jsp.jspWriter
  • Tijekom rada sa servlet, trebamo objekt pisača

Primjer:

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

Objašnjenje koda:

Redak koda 11-12– out se koristi za ispis u izlazni tok

Kada izvršimo gornji kod, dobivamo sljedeći izlaz:

Vani u JSP-u

Izlaz:

  • U izlazu dobivamo vrijednosti num1 i num2

2) Zahtjev

  • Objekt zahtjeva je instanca java.servlet.http.HttpServletRequest i jedan je od argumenata servisne metode
  • Izradit će ga spremnik za svaki zahtjev.
  • Koristit će se za traženje informacija kao što su parametri, informacije zaglavlja, naziv poslužitelja itd.
  • Koristi getParameter() za pristup parametru zahtjeva.

Primjer:

Implicit_jsp2.jsp(obrazac iz kojeg se zahtjev šalje 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 (gdje se poduzima radnja)

Zahtjev u JSP-u

Objašnjenje koda:

Redak koda 10-13: U implicit_jsp2.jsp(form) zahtjev se šalje, stoga se varijabla korisničkog imena obrađuje i šalje guru.jsp što je radnja JSP-a.

Guru.jsp

Kod Line10-11: To je radnja jsp gdje se obrađuje zahtjev, a korisničko ime se preuzima iz forme jsp.

Kada izvršite gornji kod, dobit ćete sljedeći izlaz

Izlaz:

Zahtjev u JSP-u

Kada napišete test i kliknete na gumb za slanje, dobit ćete sljedeći izlaz "Test dobrodošlice".

Zahtjev u JSP-u

3) Odgovor

  • “Odgovor” je instanca klase koja implementira sučelje HttpServletResponse
  • Spremnik generira ovaj objekt i prosljeđuje metodi _jspservice() kao parametar
  • Spremnik će stvoriti "objekt odgovora" za svaki zahtjev.
  • Predstavlja odgovor koji se može dati klijentu
  • Implicitni objekt odgovora koristi se za tip sadržaja, dodavanje kolačića i preusmjeravanje na stranicu odgovora

Primjer:

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

Objašnjenje koda:

Redak koda 11: U objektu odgovora možemo postaviti vrstu sadržaja

Ovdje postavljamo samo vrstu sadržaja u objektu odgovora. Stoga za to nema izlaza.

4) Konfig

  • “Config” je tipa java.servlet.servletConfig
  • Stvara ga spremnik za svaku jsp stranicu
  • Koristi se za dobivanje parametra inicijalizacije u web.xml

Primjer:

Web.xml (navodi naziv i mapiranje servleta)

Konfiguracija u JSP-u

Implicit_jsp5.jsp (dobivanje vrijednosti naziva servleta)

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

Objašnjenje koda:

U web.xml

Redak koda 14-17: U web.xml imamo mapiranje servleta u klase.

Implicitno_jsp5.jsp

Redak koda 10-11: Da bismo dobili naziv servleta u JSP-u, možemo koristiti config.getServletName, koji će nam pomoći da dobijemo naziv servleta.

Kada izvršite gornji kod, dobit ćete sljedeći izlaz:

Odgovor u JSP-u

Izlaz:

  • Naziv servleta je "GuruServlet" jer je naziv prisutan u web.xml

5) aplikacija

  • Objekt aplikacije (kodna linija 10) je instanca javax.servlet.ServletContext i koristi se za dobivanje informacija o kontekstu i atributa u JSP-u.
  • Aplikacijski objekt kreira spremnik jedan po aplikaciji, kada se aplikacija implementira.
  • Objekt Servletcontext sadrži skup metoda koje se koriste za interakciju sa spremnikom servleta. Možemo pronaći informacije o spremniku servleta

Primjer:

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

Objašnjenje koda:

  • U gornjem kodu, atribut aplikacije pomaže u dobivanju putanje konteksta JSP stranice.

6) Sjednica

  • Sesija drži objekt “httpsession” (redak koda 10).
  • Objekt sesije koristi se za dobivanje, postavljanje i uklanjanje atributa opsega sesije, a također se koristi za dobivanje informacija o sesiji

Primjer:

Implicit_jsp7 (atribut je postavljen)

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

Objašnjenje koda:

Implicitno_jsp7.jsp

Redak koda 11: postavljamo atribut user u varijabli sesije, a ta se vrijednost može dohvatiti iz sesije u kojoj god se jsp iz nje pozove (_jsp8.jsp).

Redak koda 12: Pozivamo drugi jsp na href u kojem ćemo dobiti vrijednost za atribut user koji je postavljen.

Implicitno_jsp8.jsp

Redak koda 11: Dobivamo vrijednost korisničkog atributa iz objekta sesije i prikazujemo tu vrijednost

Kada izvršite gornji kod, dobit ćete sljedeći izlaz:

Sesija u JSP-u

Kada kliknete na poveznicu za korisničko ime. Dobit ćete sljedeći izlaz.

Sesija u JSP-u

Izlaz:

  • Kada kliknemo na poveznicu danu u implicit_jsp7.jsp tada smo preusmjereni na drugu jsp stranicu, tj. (_jsp8.jsp) stranicu i dobivamo vrijednost iz objekta sesije korisničkog atributa (_jsp7.jsp).

7) Kontekst stranice

  • Ovaj objekt je tipa pagecontext.
  • Koristi se za dobivanje, postavljanje i uklanjanje atributa iz određenog opsega

Dosezi su 4 vrste:

  • Stranica
  • Zatražite
  • Sjednica
  • primjena

Primjer:

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

Objašnjenje koda:

Redak koda 11: atribut postavljamo pomoću objekta pageContext i on ima tri parametra:

  • Ključ
  • Još malo brojeva
  • Djelokrug

U gornjem kodu, ključ je student, a vrijednost je "gurustudent", dok je opseg opseg stranice. Ovdje je opseg "stranica" i može koristiti samo opseg stranice.

Redak koda 12: Dobivamo vrijednost atributa koristeći pageContext

Kada izvršite gornji kod, dobit ćete sljedeći izlaz:

Kontekst stranice u JSP-u

Izlaz:

  • Izlaz će ispisati "ime učenika je gurustudent".

8) Stranica

  • Implicitna varijabla stranice sadrži trenutno izvršeni objekt servleta za odgovarajući jsp.
  • Djeluje kao ovaj objekt za trenutnu jsp stranicu.

Primjer:

U ovom primjeru koristimo objekt stranice za dobivanje naziva stranice pomoću metode 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>

Objašnjenje koda:

Redak koda 10-11: U ovom primjeru pokušavamo upotrijebiti metodu toString() objekta stranice i pokušavamo dobiti naziv niza JSP stranice.

Kada izvršite kod, dobit ćete sljedeći izlaz:

Stranica u JSP-u

Izlaz:

  • Izlaz je naziv niza gornje jsp stranice

9) Iznimka

  • Iznimka je implicitni objekt klase koja se može bacati.
  • Koristi se za rukovanje iznimkama u JSP-u.
  • Objekt iznimke može se koristiti samo na stranicama s pogreškama.Primjer:
<%@ 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>

Objašnjenje koda:

Redak koda 10-12 – Ima niz brojeva, tj. num1 s četiri elementa. U izlazu pokušavamo ispisati peti element niza iz num1, koji nije deklariran u popisu niza. Dakle, koristi se za dobivanje objekta iznimke jsp.

Izlaz:

Iznimka u JSP-u

Dobivamo ArrayIndexOfBoundsException u nizu gdje dobivamo niz num1 petog elementa.