JSP kaudsed objektid
โก Nutikas kokkuvรตte
JSP kaudsed objektid on eelnevalt mรครคratletud muutujad, mille servleti konteiner loob lehe tรตlkimise ajal automaatselt, vรตimaldades arendajatel pรครคseda juurde vรคljundvoogudele, pรคringutele, vastustele, seanssidele ja rakenduse andmetele otse lehel ilma kรคsitsi deklareerimise vรตi tรคiendava konfigureerimiseta.
Mis on JSP kaudne objekt?
- JSP kaudsed objektid luuakse JSP servletti tรตlkimise etapis.
- Neid objekte saab otse kasutada teenindusmeetodis kasutatavates skriptides.
- Need loob konteiner automaatselt ja neile pรครคseb juurde objektide abil.
Kui palju kaudseid objekte on JSP-s saadaval?
Konteineris on saadaval 9 tรผรผpi kaudseid objekte:
- vรคlja
- Kรผsi
- Vastus
- config
- taotlus
- istung
- PageContext
- lehekรผlg
- Erand
Uurime รผkshaaval
1) Vรคljas
- Out on รผks kaudsetest objektidest, mis kirjutab andmed puhvrisse ja saadab vastuseks vรคljundi kliendile
- Out objekt vรตimaldab meil pรครคseda juurde servleti vรคljundvoogu
- Out on javax.servlet.jsp.jsp objektWriter klass
- Tรถรถtades koos servett, vajame trรผkikirjutaja objekti
Nรคide:
<%@ 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>
Koodi selgitus:
Code Rida 11-12โ vรคljundit kasutatakse vรคljundvoogu printimiseks
Kui kรคivitame รผlaltoodud koodi, saame jรคrgmise vรคljundi:
Vรคljund:
- Vรคljundis saame vรครคrtused num1 ja num2
2) Taotlus
- Pรคringuobjekt on faili java.servlet.http.HttpServletRequest eksemplar ja see on รผks teenindusmeetodi argumentidest
- See luuakse konteineriga iga pรคringu jaoks.
- Seda kasutatakse sellise teabe taotlemiseks, nagu parameeter, pรคise teave, serveri nimi jne.
- See kasutab pรคringu parameetrile juurdepรครคsuks getParameter().
Nรคide:
Implicit_jsp2.jsp(vorm, millelt pรคring saadetakse aadressile 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 (kus toiming sooritatakse)
Koodi selgitus:
Code Rida 10โ13: Implicit_jsp2.jsp(vormis) taotlus saadetakse, seega tรถรถdeldakse muutuja kasutajanime ja saadetakse JSP-le guru.jsp.
Guru.jsp
Code Rida 10-11: See on toiming jsp, kus taotlust tรถรถdeldakse ja kasutajanimi vรตetakse vormilt jsp.
Kui kรคivitate รผlaltoodud koodi, saate jรคrgmise vรคljundi
Vรคljund:
Kui kirjutate testi ja klรตpsate esitamisnupul, saate jรคrgmise vรคljundi "Tere tulemast test".
3) Vastus
- "Response" on klassi eksemplar, mis rakendab liidest HttpServletResponse
- Konteiner loob selle objekti ja edastab parameetrina meetodi _jspservice().
- Konteiner loob iga pรคringu jaoks vastuseobjekti.
- See esindab vastust, mida saab kliendile anda
- Vastuse kaudset objekti kasutatakse sisu tรผรผpimiseks, kรผpsise lisamiseks ja vastuse lehele suunamiseks
Nรคide:
<%@ 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>
Koodi selgitus:
Code Rida 11: Vastusobjektis saame mรครคrata sisutรผรผbi
Siin mรครคrame vastuseobjektis ainult sisutรผรผbi. Seetรตttu pole selle jaoks vรคljundit.
4) Konfig
- "Config" on tรผรผpi java.servlet.servletConfig
- Selle loob konteiner iga jsp-lehe jaoks
- Seda kasutatakse lรคhtestamisparameetri hankimiseks failis web.xml
Nรคide:
Web.xml (mรครคrab nime ja kaardi)ping servletist)
Implicit_jsp5.jsp (servleti nime vรครคrtuse hankimine)
<%@ 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>
Koodi selgitus:
Web.xml-s
Code Rida 14-17: Web.xml-is on meil kaartping servlettide lisamine klassidesse.
Implicit_jsp5.jsp
Code Rida 10-11: Servleti nime saamiseks JSP-s saame kasutada faili config.getServletName, mis aitab meil saada servleti nime.
Kui kรคivitate รผlaltoodud koodi, saate jรคrgmise vรคljundi:
Vรคljund:
- Servleti nimi on โGuruโServletโ, nagu nimigi web.xml-is esineb
5) rakendus
- Rakendusobjekt (koodirida 10) on faili javax.servlet.ServletContext eksemplar ja seda kasutatakse JSP-s kontekstiteabe ja atribuutide hankimiseks.
- Rakenduse objekti loob konteiner รผks rakenduse kohta, kui rakendus juurutatakse.
- Servletikonteksti objekt sisaldab meetodite komplekti, mida kasutatakse servleti konteineriga suhtlemiseks. Leiame teavet servleti konteineri kohta
Nรคide:
<%@ 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>
Koodi selgitus:
- รlaltoodud koodis aitab rakenduse atribuut saada JSP lehe kontekstitee.
6) Seanss
- Seanss hoiab "httpsession" objekti (koodirida 10).
- Seansiobjekti kasutatakse seansi ulatuse atribuutide hankimiseks, mรครคramiseks ja eemaldamiseks ning seda kasutatakse ka seansi teabe hankimiseks
Nรคide:
Implicit_jsp7 (atribuut on mรครคratud)
<%@ 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>
Koodi selgitus:
Implicit_jsp7.jsp
Code Rida 11: me mรครคrame seansimuutujas atribuudi kasutaja ja selle vรครคrtuse saab tuua seansist olenemata sellest, millises jsp-s sellest vรคlja kutsutakse (_jsp8.jsp).
Code Rida 12: Kutsume vรคlja teise jsp on href, milles saame atribuudi kasutaja vรครคrtuse, mis on mรครคratud.
Implicit_jsp8.jsp
Code Rida 11: Me saame kasutaja atribuudi vรครคrtuse seansiobjektilt ja kuvame selle vรครคrtuse
Kui kรคivitate รผlaltoodud koodi, saate jรคrgmise vรคljundi:
Kui klรตpsate kasutajanime lingil. Saate jรคrgmise vรคljundi.
Vรคljund:
- Kui klรตpsame failis implicit_jsp7.jsp antud lingil, suunatakse meid teisele jsp lehele ehk (_jsp8.jsp) lehele ja saame vรครคrtuse kasutaja atribuudi seansiobjektilt (_jsp7.jsp).
7) PageContext
- See objekt on lehekonteksti tรผรผpi.
- Seda kasutatakse atribuutide hankimiseks, mรครคramiseks ja eemaldamiseks teatud ulatusest
Ulatusi on 4 tรผรผpi:
- lehekรผlg
- Kรผsi
- istung
- taotlus
Nรคide:
<%@ 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>
Koodi selgitus:
Code Rida 11: me mรครคrame atribuudi pageContext objekti abil ja sellel on kolm parameetrit:
- Vรตti
- Vรครคrtus
- Ulatus
รlaltoodud koodis on vรตti รตpilane ja vรครคrtus on "gurustudent", samas kui ulatus on lehe ulatus. Siin on ulatus "leht" ja see saab kasutada ainult lehe ulatust.
Code Rida 12: Atribuudi vรครคrtuse saame kasutades pageContext
Kui kรคivitate รผlaltoodud koodi, saate jรคrgmise vรคljundi:
Vรคljund:
- Vรคljundis trรผkitakse "รตpilase nimi on gurustudent".
8) Leht
- Lehe kaudne muutuja sisaldab parajasti kรคivitatavat servletiobjekti vastava jsp jaoks.
- Toimib praeguse jsp-lehe objektina.
Nรคide:
Selles nรคites kasutame lehe nime hankimiseks meetodit 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>
Koodi selgitus:
Code Rida 10-11: Selles nรคites proovime kasutada leheobjekti meetodit toString() ja proovime saada JSP lehe stringi nime.
Koodi kรคivitamisel saate jรคrgmise vรคljundi:
Vรคljund:
- Vรคljund on รผlaltoodud jsp-lehe stringi nimi
9) Erand
- Erand on visatava klassi kaudne objekt.
- Seda kasutatakse erandite kรคsitlemine JSP-s.
- Erandobjekti saab kasutada ainult vealehtedel.Nรคide:
<%@ 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>
Koodi selgitus:
Code Rida 10-12 โ Sellel on arvude massiiv, st num1 nelja elemendiga. Vรคljundis proovime trรผkkida massiivi viiendat elementi numbrist num1, mida massiiviloendis ei deklareerita. Seega kasutatakse seda jsp erandiobjekti hankimiseks.
Vรคljund:
Me saame massiivi ArrayIndexOfBoundsException, kus saame viienda elemendi massiivi num1.












