Čo je to implicitný objekt JSP?
- Implicitné objekty JSP sa vytvárajú počas fázy prekladu JSP na servlet.
- Tieto objekty môžu byť priamo použité v scripletoch, ktoré sú súčasťou servisnej metódy.
- Vytvorí ich kontajner automaticky a je k nim prístup pomocou objektov.
Koľko implicitných objektov je k dispozícii v JSP?
V kontajneri je k dispozícii 9 typov implicitných objektov:
- von
- žiadosť
- odpoveď
- konfigur
- žiadosť
- zasadanie
- pageContext
- stránke
- výnimkou
Poďme študovať jeden po druhom
von
- Out je jeden z implicitných objektov na zápis údajov do medzipamäte a odoslanie odpovede klientovi ako odpoveď
- Objekt Out nám umožňuje prístup k výstupnému toku servletu
- Von je objekt triedy javax.servlet.jsp.jspWriter
- Pri práci s servletom potrebujeme objekt printwriter
Príklad:
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%>Implicitný Guru JSP1 <% int num1 = 10; int num2 = 20;out.println ("num1 je" + num1);out.println ("num2 je" + num2);%>
Vysvetlenie kódu:
Riadok kódu 11-12 - out sa používa na tlač do výstupného toku
Keď vykonáme vyššie uvedený kód, dostaneme nasledujúci výstup:
Výkon:
- Na výstupe dostaneme hodnoty num1 a num2
Žiadosť
- Objekt žiadosti je inštanciou java.servlet.http.HttpServletRequest a je jedným z argumentov servisnej metódy.
- Bude vytvorený kontajnerom pre každú požiadavku.
- Bude sa používať na vyžiadanie informácií, ako sú parametre, informácie o hlavičke, názov servera atď.
- Na prístup k parametru požiadavky používa funkciu getParameter ().
Príklad:
Implicit_jsp2.jsp (formulár, z ktorého sa odosiela požiadavka na guru.jsp)
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%>Implicitný guru formulár JSP2
Guru.jsp (kde sa podnikajú kroky)
Vysvetlenie kódu:
Riadok kódu 10-13: V implicit_jsp2.jsp (formulár) sa odosiela požiadavka, preto sa spracováva premenná username a posiela sa na guru.jsp, čo je akcia JSP.
Guru.jsp
Kód Line10-11: Je to akcia jsp, kde je spracovaná požiadavka a užívateľské meno je prevzaté z formulára jsp.
Po vykonaní vyššie uvedeného kódu získate nasledujúci výstup
Výkon:
Keď napíšete test a kliknete na tlačidlo odoslať, dostanete nasledujúci výstup „Uvítací test“.
Odozva
- „Odozva“ je inštancia triedy, ktorá implementuje rozhranie HttpServletResponse
- Kontajner vygeneruje tento objekt a odovzdá metódu _jspservice () ako parameter
- „Objekt odpovede“ vytvorí kontajner pre každú požiadavku.
- Predstavuje odpoveď, ktorú je možné poskytnúť klientovi
- Implicitný objekt odpovede sa používa na typ obsahu, pridanie súboru cookie a presmerovanie na stránku odpovede
Príklad:
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%>Implicitný Guru JSP4 <% response.setContentType ("text / html"); %>
Vysvetlenie kódu:
Riadok kódu 11: V objekte odpovede môžeme nastaviť typ obsahu
Tu nastavujeme iba typ obsahu v objekte odpovede. Z tohto dôvodu neexistuje žiadny výstup.
Konfig
- "Konfigurácia" je typu java.servlet.servletConfig
- Je vytváraný kontajnerom pre každú stránku jsp
- Používa sa na získanie inicializačného parametra v web.xml
Príklad:
Web.xml (určuje názov a mapovanie servletu)
Implicit_jsp5.jsp (získanie hodnoty názvu servletu)
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%>Implicitný Guru JSP5 <% String servletName = config.getServletName ();out.println ("Názov servletu je" + názov servletu);%>
Vysvetlenie kódu:
V súbore web.xml
Riadok kódu 14-17: V súbore web.xml máme mapovanie servletov do tried.
Implicit_jsp5.jsp
Riadok kódu 10-11: Na získanie názvu servletu v JSP môžeme použiť config.getServletName, ktorý nám pomôže získať názov servletu.
Po vykonaní vyššie uvedeného kódu získate nasledujúci výstup:
Výkon:
- Názov servletu je „GuruServlet“, pretože je prítomný v súbore web.xml
Aplikácia
- Aplikačný objekt (riadok kódu 10) je inštanciou javax.servlet.ServletContext a slúži na získanie kontextových informácií a atribútov v JSP.
- Keď sa aplikácia nasadí, objekt aplikácie sa vytvorí kontajnerom jeden na aplikáciu.
- Objekt Servletcontext obsahuje množinu metód, ktoré sa používajú na interakciu s kontajnerom servletu. Nájdeme informácie o kontajneri servletu
Príklad:
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%>Guru Implicit JSP6 <% application.getContextPath (); %>
Vysvetlenie kódu:
- Vo vyššie uvedenom kóde pomáha atribút aplikácie získať kontextovú cestu stránky JSP.
Session
- Relácia obsahuje objekt „httpsession“ (riadok kódu 10).
- Objekt relácie sa používa na získanie, nastavenie a odstránenie atribútov rozsahu relácie a tiež sa používa na získanie informácií o relácii
Príklad:
Implicit_jsp7 (atribút je nastavený)
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%>Implicitné JSP <% session.setAttribute ("užívateľ", "GuruJSP"); %> Kliknutím sem zobrazíte meno používateľa
Implicit_jsp8.jsp (getAttribute)
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%>implicitný Guru JSP8 <% Názov reťazca = (Reťazec) session.getAttribute ("užívateľ");out.println ("Meno používateľa je" + meno);%>
Vysvetlenie kódu:
Implicit_jsp7.jsp
Riadok kódu 11: nastavujeme atribút user do premennej relácie a túto hodnotu je možné načítať z relácie, v ktorej sa z nej volá jsp (_jsp8.jsp).
Riadok kódu 12: Voláme ďalší jsp na href, v ktorom dostaneme nastavenú hodnotu pre atribút user.
Implicit_jsp8.jsp
Riadok kódu 11: Získavame hodnotu atribútu používateľa z objektu relácie a túto hodnotu zobrazujeme
Po vykonaní vyššie uvedeného kódu získate nasledujúci výstup:
Keď kliknete na odkaz pre používateľské meno. Získate nasledujúci výstup.
Výkon:
- Keď klikneme na odkaz uvedený v implicit_jsp7.jsp, sme presmerovaní na druhú stránku jsp, tj. (_Jsp8.jsp) a dostaneme hodnotu z objektu relácie atribútu používateľa (_jsp7.jsp).
pageContext:
- Tento objekt je typu pagecontext.
- Používa sa na získanie, nastavenie a odstránenie atribútov z konkrétneho rozsahu
Rozsahy sú 4 typov:
- Strana
- Žiadosť
- Session
- Aplikácia
Príklad:
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%>Implicitný Guru JSP9 <% pageContext.setAttribute ("student", "gurustudent", pageContext.PAGE_SCOPE);Názov reťazca = (Reťazec) pageContext.getAttribute ("študent");out.println ("meno študenta je" + meno);%>
Vysvetlenie kódu:
Riadok kódu 11: nastavujeme atribút pomocou objektu pageContext a má tri parametre:
- Kľúč
- Hodnota
- Rozsah
Vo vyššie uvedenom kóde je kľúčom študent a hodnota je „gurustudent“, zatiaľ čo rozsahom je rozsah stránky. Rozsah je tu „stránka“ a je možné ho získať iba pomocou rozsahu stránky.
Riadok kódu 12: Hodnotu atribútu dostávame pomocou pageContext
Po vykonaní vyššie uvedeného kódu získate nasledujúci výstup:
Výkon:
- Na výstupe sa vypíše „meno študenta je gurustudent“.
Strana
- Implicitná premenná stránka obsahuje aktuálne vykonaný objekt servletu pre zodpovedajúci jsp.
- Funguje ako tento objekt pre aktuálnu stránku jsp.
Príklad:
V tomto príklade používame objekt stránky na získanie názvu stránky pomocou metódy toString
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%>Implicitný Guru JSP10 <% String pageName = page.toString ();out.println ("Názov stránky je" + pageName);%>
Vysvetlenie kódu:
Riadok kódu 10-11: V tomto príklade sa pokúšame použiť metódu toString () objektu stránky a pokúsiť sa získať názov reťazca stránky JSP.
Po spustení kódu získate nasledujúci výstup:
Výkon:
- Výstupom je názov reťazca stránky jsp vyššie
Výnimka
- Výnimkou je implicitný objekt vyhadzovacej triedy.
- Používa sa na spracovanie výnimiek v JSP.
- Objekt výnimky je možné použiť iba na chybových stránkach.
Príklad:
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1" isErrorPage = "true"%>Implicitný Guru JSP 11 <% int [] num1 = {1,2,3,4};out.println (num1 [5]);%><% = výnimka%>
Vysvetlenie kódu:
Riadok kódu 10-12 - Má rad čísel, tj. Num1 so štyrmi prvkami. Na výstupe sa pokúšame vytlačiť piaty prvok poľa z čísla 1, ktorý nie je deklarovaný v zozname polí. Používa sa teda na získanie výnimočného objektu jsp.
Výkon:
Dostávame ArrayIndexOfBoundsException v poli, kde dostávame pole num1 piateho prvku.