JSP implicit objektumok
Mi az a JSP Implicit objektum?
- A JSP implicit objektumok a JSP servletre való fordítási fázisában jönnek létre.
- Ezek az objektumok közvetlenül felhasználhatók a szolgáltatási metódusba tartozó szkriptekben.
- Ezeket a tároló automatikusan hozza létre, és objektumok segítségével érhetők el.
Hány implicit objektum érhető el a JSP-ben?
A tárolóban 9 típusú implicit objektum érhető el:
- Ki
- Kérjen
- Válasz
- Config
- Alkalmazás
- Ülés
- PageContext
- oldal
- kivétel
Tanulmányozzuk egyenként
1) Ki
- Az Out az egyik implicit objektum, amely az adatokat a pufferbe írja, és válaszként elküldi a kimenetet a kliensnek
- Az Out objektum lehetővé teszi számunkra, hogy hozzáférjünk a szervlet kimeneti adatfolyamához
- Az Out a javax.servlet.jsp.jspWriter osztály objektuma
- Munka közben szervlet, szükségünk van nyomtatóíró objektumra
Példa:
<%@ 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>
A kód magyarázata:
Kódsor 11-12– out a kimeneti adatfolyamba történő nyomtatásra szolgál
Amikor végrehajtjuk a fenti kódot, a következő kimenetet kapjuk:
output:
- A kimenetben a num1 és num2 értékeket kapjuk
2) Kérés
- A kérelem objektum a java.servlet.http.HttpServletRequest példánya, és ez a szolgáltatás metódusának egyik argumentuma
- Minden kérelemhez tároló hozza létre.
- A rendszer olyan információk kérésére szolgál, mint a paraméter, a fejléc információ, a szerver neve stb.
- A getParameter() segítségével éri el a kérési paramétert.
Példa:
Implicit_jsp2.jsp(űrlap, amelyről a kérés elküldésre kerül a guru.jsp címre)
<%@ 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 (ahol a műveletet végrehajtják)
A kód magyarázata:
10-13. kódsor: Az implicit_jsp2.jsp(form) kérés elküldésre kerül, így a felhasználónév változó feldolgozása és elküldése a guru.jsp-nek, ami a JSP művelete.
Guru.jsp
Kódsor 10-11: A kérés feldolgozása a jsp műveletben történik, a felhasználónév pedig a jsp űrlapból származik.
Amikor végrehajtja a fenti kódot, a következő kimenetet kapja
output:
Amikor megírja a tesztet, és rákattint a küldés gombra, akkor a következő kimenetet kapja: „Üdvözöljük teszt”.
3) Válasz
- A „Response” az osztály egy példánya, amely megvalósítja a HttpServletResponse interfészt
- A tároló létrehozza ezt az objektumot, és paraméterként átadja a _jspservice() metódust
- A „válaszobjektumot” a tároló minden kéréshez létrehozza.
- Az ügyfélnek adható választ képviseli
- A válasz implicit objektum a tartalom típusára, a cookie hozzáadására és a válaszoldalra való átirányításra szolgál
Példa:
<%@ 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>
A kód magyarázata:
11. kódsor: A válaszobjektumban beállíthatjuk a tartalom típusát
Itt csak a tartalomtípust állítjuk be a válaszobjektumban. Ezért erre nincs kimenet.
4) Konfig
- A „Config” a java.servlet.servletConfig típusú
- A tároló hozza létre minden jsp-oldalhoz
- Az inicializálási paraméter beszerzésére szolgál a web.xml fájlban
Példa:
Web.xml (meghatározza a szervlet nevét és leképezését)
Implicit_jsp5.jsp (a szervletnév értékének lekérése)
<%@ 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>
A kód magyarázata:
A web.xml fájlban
14-17. kódsor: A web.xml-ben a szervleteket leképezzük az osztályokhoz.
Implicit_jsp5.jsp
10-11. kódsor: A JSP-ben lévő servlet nevének lekéréséhez használhatjuk a config.getServletName fájlt, amely segít a servlet nevének beszerzésében.
Amikor végrehajtja a fenti kódot, a következő kimenetet kapja:
output:
- A szervlet neve „GuruServlet”, mivel a név megtalálható a web.xml fájlban
5) alkalmazás
- Az alkalmazásobjektum (10-es kódsor) a javax.servlet.ServletContext példánya, és a kontextusinformációk és attribútumok lekérésére szolgál a JSP-ben.
- Alkalmazásonként egy tároló hozza létre az alkalmazásobjektumot, amikor az alkalmazás telepítve van.
- A Servletcontext objektum olyan metódusokat tartalmaz, amelyek a servlet tárolóval való interakcióhoz használhatók. Információkat találhatunk a szervlet tárolóról
Példa:
<%@ 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>
A kód magyarázata:
- A fenti kódban az application attribútum segít a JSP oldal kontextusútvonalának lekérésében.
6) Munkamenet
- A munkamenet „httpsession” objektumot tart (10-es kódsor).
- A Session objektum a munkamenet hatóköréhez tartozó attribútumok lekérésére, beállítására és eltávolítására szolgál, valamint a munkamenet-információk lekérésére is használható
Példa:
Implicit_jsp7 (az attribútum be van állítva)
<%@ 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>
A kód magyarázata:
Implicit_jsp7.jsp
11. kódsor: beállítjuk a user attribútumot a session változóban, és ez az érték lekérhető a munkamenetből, amelyik jsp-t onnan hívják meg (_jsp8.jsp).
12. kódsor: Meghívunk egy másik jsp on href-t, amelyben megkapjuk a beállított user attribútum értékét.
Implicit_jsp8.jsp
11. kódsor: A felhasználói attribútum értékét a session objektumtól kapjuk, és megjelenítjük ezt az értéket
Amikor végrehajtja a fenti kódot, a következő kimenetet kapja:
Amikor rákattint a felhasználónév linkjére. A következő kimenetet kapod.
output:
- Amikor rákattintunk az implicit_jsp7.jsp-ben megadott linkre, akkor átirányítunk a második jsp oldalra, azaz (_jsp8.jsp) oldalra, és megkapjuk a felhasználói attribútum session objektumának értékét (_jsp7.jsp).
7) PageContext
- Ez az objektum oldalkontextus típusú.
- Egy adott hatókör attribútumainak lekérésére, beállítására és eltávolítására szolgál
A hatókör 4 típusból áll:
- oldal
- Kérjen
- Ülés
- Alkalmazás
Példa:
<%@ 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>
A kód magyarázata:
11. kódsor: az attribútumot pageContext objektummal állítjuk be, és három paramétere van:
- Kulcs
- Érték
- Kör
A fenti kódban a kulcs a tanuló, az érték pedig a „gurustudent”, míg a hatókör az oldal hatóköre. Itt a hatókör "oldal", és csak az oldal hatókörét használja.
12. kódsor: Az attribútum értékét a pageContext használatával kapjuk meg
Amikor végrehajtja a fenti kódot, a következő kimenetet kapja:
output:
- A kimenet a következőt fogja írni: „A hallgató neve guruszt”.
8) Oldal
- Az oldal implicit változója az aktuálisan végrehajtott servlet objektumot tartalmazza a megfelelő jsp-hez.
- Ez az objektum az aktuális jsp-oldalon.
Példa:
Ebben a példában oldalobjektumot használunk az oldalnév lekéréséhez a toString metódus segítségével
<%@ 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>
A kód magyarázata:
10-11. kódsor: Ebben a példában megpróbáljuk az oldalobjektum toString() metódusát használni, és megpróbáljuk lekérni a JSP oldal karakterláncnevét.
Amikor végrehajtja a kódot, a következő kimenetet kapja:
output:
- A kimenet a fenti jsp oldal karakterláncának neve
9) Kivétel
- A kivétel a dobható osztály implicit tárgya.
- Ezt használják kivételkezelés JSP-ben.
- A kivételobjektum csak hibaoldalakon használható.Példa:
<%@ 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>
A kód magyarázata:
Kódsor 10-12 – Van egy számtömbje, azaz a négy elemű szám1. A kimenetben a tömb ötödik elemét próbáljuk kiírni a szám1-ből, ami nincs deklarálva a tömblistában. Tehát a jsp kivételobjektumának lekérésére használják.
output:
ArrayIndexOfBoundsException-t kapunk abban a tömbben, ahol az ötödik elem num1 tömbjét kapjuk.