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:
- Van
- Zatražite
- Odgovor
- config
- primjena
- Sjednica
- Kontekst stranice
- Stranica
- 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:
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)
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:
Kada napišete test i kliknete na gumb za slanje, dobit ćete sljedeći izlaz "Test dobrodošlice".
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)
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:
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:
Kada kliknete na poveznicu za korisničko ime. Dobit ćete sljedeći izlaz.
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:
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:
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:
Dobivamo ArrayIndexOfBoundsException u nizu gdje dobivamo niz num1 petog elementa.