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:

  1. Ulos
  2. Pyydä
  3. Vastaus
  4. Config
  5. Hakemus
  6. istunto
  7. PageContext
  8. Sivu
  9. 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:

Ulkona JSP:ssä

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)

Pyyntö JSP:ssä

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ö:

Pyyntö JSP:ssä

Kun kirjoitat testin ja napsautat Lähetä-painiketta, saat seuraavan tulosteen "Tervetuloa testi".

Pyyntö JSP:ssä

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)

Konfiguroi JSP:ssä

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:

Vastaus JSP:ssä

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:

Istunto JSP:ssä

Kun napsautat käyttäjätunnuksen linkkiä. Saat seuraavan tulosteen.

Istunto JSP:ssä

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:

PageContext JSP:ssä

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:

Sivu JSP:ssä

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ö:

Poikkeus JSP:ssä

Saamme ArrayIndexOfBoundsException taulukossa, jossa saamme viidennen elementin num1-taulukon.