JSP-implisiittiset objektit
⚡ Älykäs yhteenveto
JSP:n implisiittiset objektit ovat ennalta määritettyjä muuttujia, jotka servlet-säilö luo automaattisesti sivun kääntämisen aikana. Niiden avulla kehittäjät voivat käyttää tulostevirtoja, pyyntöjä, vastauksia, istuntoja ja sovellustietoja suoraan sivulla ilman manuaalista määrittelyä tai ylimääräistä konfigurointia.
Mikä on JSP Implicit -objekti?
- JSP-implisiittiset objektit luodaan JSP:n käännösvaiheessa servletiin.
- Näitä objekteja voidaan käyttää suoraan skripteissä, jotka menevät palvelumenetelmään.
- Säiliö luo ne automaattisesti, ja niihin pääsee käsiksi objektien avulla.
Kuinka monta implisiittistä objektia on saatavilla JSP:ssä?
Säilössä on 9 tyyppistä implisiittistä objektia:
- Ulos
- Pyydä
- Vastaus
- Config
- Hakemus
- istunto
- PageContext
- Sivu
- Poikkeus
Opiskellaan yksitellen
1) Ulos
- Out on yksi implisiittisistä objekteista, joka kirjoittaa tiedot puskuriin ja lähettää tulosteen asiakkaalle vastauksena
- Out-objektin avulla voimme käyttää servletin lähtövirtaa
- Out on javax.servlet.jsp.jsp-tiedoston objektiWriter luokka
- Työskennellessään kanssa servetti, tarvitsemme printwriter-objektin
Esimerkiksi:
<%@ 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>
Koodin selitys:
Code Rivi 11-12– out käytetään tulostamaan lähtövirtaan
Kun suoritamme yllä olevan koodin, saamme seuraavan tulosteen:
lähtö:
- Tulosteessa saamme arvot num1 ja num2
2) Pyyntö
- Pyyntöobjekti on java.servlet.http.HttpServletRequest-esiintymä ja se on yksi palvelumenetelmän argumenteista
- Se luodaan säilössä jokaista pyyntöä varten.
- Sitä käytetään sellaisten tietojen pyytämiseen, kuten parametri, otsikkotiedot, palvelimen nimi jne.
- Se käyttää getParameter()-komentoa päästäkseen pyyntöparametriin.
Esimerkiksi:
Implicit_jsp2.jsp(lomake, josta pyyntö lähetetään osoitteeseen 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 (jossa toiminto suoritetaan)
Koodin selitys:
Code Rivi 10–13: Implicit_jsp2.jsp(form) -pyynnössä lähetetään pyyntö, joten muuttuja käyttäjätunnus käsitellään ja lähetetään guru.jsp:lle, joka on JSP:n toiminta.
Guru.jsp
Code Rivi 10-11: Se on action jsp, jossa pyyntö käsitellään, ja käyttäjätunnus otetaan lomakkeesta jsp.
Kun suoritat yllä olevan koodin, saat seuraavan tulosteen
lähtö:
Kun kirjoitat testin ja napsautat Lähetä-painiketta, saat seuraavan tulosteen "Tervetuloa testi".
3) Vastaus
- "Response" on luokan esiintymä, joka toteuttaa HttpServletResponse-rajapinnan
- Säilö luo tämän objektin ja siirtyy parametriksi _jspservice()-metodiin
- "Vastausobjekti" luodaan säilössä jokaiselle pyynnölle.
- Se edustaa vastausta, joka voidaan antaa asiakkaalle
- Vastauksen implisiittistä objektia käytetään sisällön tyyppiin, evästeen lisäämiseen ja uudelleenohjaukseen vastaussivulle
Esimerkiksi:
<%@ 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>
Koodin selitys:
Code Rivi 11: Vastausobjektissa voimme asettaa sisältötyypin
Tässä asetetaan vain vastausobjektin sisältötyyppi. Tästä syystä tälle ei ole tulosta.
4) Konfig
- "Config" on tyyppiä java.servlet.servletConfig
- Sen luo säilö jokaiselle jsp-sivulle
- Sitä käytetään alustusparametrin hankkimiseen web.xml:ssä
Esimerkiksi:
Web.xml (määrittää nimen ja kartanping servletin)
Implicit_jsp5.jsp (servlet-nimen arvon saaminen)
<%@ 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>
Koodin selitys:
Web.xml:ssä
Code Rivi 14–17: Web.xml-tiedostossa on karttaping servlettejä luokille.
Implicit_jsp5.jsp
Code Rivi 10–11: Saadaksemme servletin nimen JSP:ssä, voimme käyttää tiedostoa config.getServletName, joka auttaa meitä saamaan servletin nimen.
Kun suoritat yllä olevan koodin, saat seuraavan tulosteen:
lähtö:
- Servletin nimi on "GuruServlet”, kuten nimi web.xml-tiedostossa on
5) Sovellus
- Sovellusobjekti (koodirivi 10) on javax.servlet.ServletContextin esiintymä ja sitä käytetään kontekstitietojen ja attribuuttien saamiseen JSP:ssä.
- Sovellusobjekti luodaan säilöllä yksi sovellusta kohden, kun sovellus otetaan käyttöön.
- Servletcontext-objekti sisältää joukon menetelmiä, joita käytetään vuorovaikutuksessa servlet-säilön kanssa. Löydämme tietoa servlet-säilystä
Esimerkiksi:
<%@ 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>
Koodin selitys:
- Yllä olevassa koodissa sovellusmäärite auttaa saamaan JSP-sivun kontekstipolun.
6) Istunto
- Istunnossa on "httpsession" -objekti (koodirivi 10).
- Istuntoobjektia käytetään istunnon laajuuden attribuuttien hankkimiseen, asettamiseen ja poistamiseen, ja sitä käytetään myös istuntotietojen hankkimiseen
Esimerkiksi:
Implicit_jsp7(attribuutti on asetettu)
<%@ 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>
Koodin selitys:
Implicit_jsp7.jsp
Code Rivi 11: asetamme attribuutin käyttäjä istuntomuuttujaan, ja tämä arvo voidaan noutaa istunnosta missä tahansa jsp:ssä siitä kutsutaan (_jsp8.jsp).
Code Rivi 12: Kutsumme toista jsp on href:tä, jossa saamme arvon attribuutille user, joka on asetettu.
Implicit_jsp8.jsp
Code Rivi 11: Haemme käyttäjän attribuutin arvon istuntoobjektista ja näytämme sen arvon
Kun suoritat yllä olevan koodin, saat seuraavan tulosteen:
Kun napsautat käyttäjätunnuksen linkkiä. Saat seuraavan tulosteen.
lähtö:
- Kun napsautamme implicit_jsp7.jsp:ssä annettua linkkiä, meidät ohjataan toiselle jsp-sivulle eli (_jsp8.jsp) -sivulle ja saamme arvon user-attribuutin (_jsp7.jsp) istuntoobjektista.
7) Sivukonteksti
- Tämä objekti on sivukontekstin tyyppiä.
- Sitä käytetään määritteiden hankkimiseen, asettamiseen ja poistamiseen tietystä laajuudesta
Lajikkeita on 4 tyyppiä:
- Sivu
- Pyydä
- istunto
- Hakemus
Esimerkiksi:
<%@ 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>
Koodin selitys:
Code Rivi 11: asetamme attribuutin pageContext-objektin avulla, ja sillä on kolme parametria:
- avain
- Arvo
- Laajuus
Yllä olevassa koodissa avain on opiskelija ja arvo on "gurustudent", kun taas laajuus on sivun laajuus. Tässä laajuus on "sivu", ja se voi käyttää vain sivun laajuutta.
Code Rivi 12: Haemme attribuutin arvon pageContextin avulla
Kun suoritat yllä olevan koodin, saat seuraavan tulosteen:
lähtö:
- Tulosteessa on teksti "opiskelijan nimi on gurustudent".
8) Sivu
- Sivun implisiittinen muuttuja sisältää tällä hetkellä suoritettavan servlet-objektin vastaavalle jsp:lle.
- Toimii tämän objektina nykyiselle jsp-sivulle.
Esimerkiksi:
Tässä esimerkissä käytämme sivuobjektia saadaksemme sivun nimen toString-menetelmällä
<%@ 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>
Koodin selitys:
Code Rivi 10–11: Tässä esimerkissä yritämme käyttää sivuobjektin menetelmää toString() ja yrittää saada JSP-sivun merkkijonon nimi.
Kun suoritat koodin, saat seuraavan tulosteen:
lähtö:
- Tulos on yllä olevan jsp-sivun merkkijonon nimi
9) Poikkeus
- Poikkeus on heitettävien luokan implisiittinen kohde.
- Sitä käytetään poikkeusten käsittely JSP:ssä.
- Poikkeusobjektia voidaan käyttää vain virhesivuilla.Esimerkiksi:
<%@ 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>
Koodin selitys:
Code Rivi 10-12 – Siinä on joukko numeroita, eli num1, jossa on neljä alkiota. Tulosteessa yritämme tulostaa taulukon viidennen elementin numero1:stä, jota ei ole ilmoitettu taulukkoluettelossa. Joten sitä käytetään jsp:n poikkeusobjektin saamiseksi.
lähtö:
Saamme ArrayIndexOfBoundsException taulukossa, jossa saamme viidennen elementin num1-taulukon.












