JSP-implisiittiset objektit
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.jspWriter-luokan objekti
- 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:
Koodirivit 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:
Koodirivit 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
Koodirivi 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:
Koodirivi 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ää servletin nimen ja yhdistämisen)
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ä
Koodirivit 14-17: Web.xml:ssä on servlettien yhdistäminen luokkiin.
Implicit_jsp5.jsp
Koodirivit 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", koska nimi on olemassa web.xml:ssä
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
Koodirivi 11: asetamme attribuutin käyttäjä istuntomuuttujaan, ja tämä arvo voidaan noutaa istunnosta missä tahansa jsp:ssä siitä kutsutaan (_jsp8.jsp).
Koodirivi 12: Kutsumme toista jsp on href:tä, jossa saamme arvon attribuutille user, joka on asetettu.
Implicit_jsp8.jsp
Koodirivi 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:
Koodirivi 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.
Koodirivi 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:
Koodirivit 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:
Koodirivit 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.