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.

  • 🖨️ Ulos tuleva objekti: Kirjoittaa tiedot puskuriin ja lähettää tulosteen asiakkaalle JSP:n kauttaWriter stream.
  • 📥 Pyyntöobjekti: HttpServletRequest-instanssi, joka hakee parametrit, otsikot ja palvelimen tiedot käyttämällä getParameter()-funktiota.
  • 📤 Vastausobjekti: Toteuttaa HttpServletResponse-metodin sisällön tyypin asettamiseksi, evästeiden lisäämiseksi ja asiakkaan uudelleenohjaamiseksi.
  • ⚙️ Kokoonpano ja sovellus: Config lukee alustusparametrit web.xml-tiedostosta; Sovellus jakaa kontekstitietoja koko käyttöönoton ajan.
  • 🗂️ Istunto ja sivun konteksti: Istunto säilyttää käyttäjäattribuutit eri sivuilla; PageContext hallitsee attribuutteja sivun, pyynnön, istunnon ja sovelluksen laajuuksissa.
  • ⚠️ Poikkeusobjekti: Throwable-objekti, joka on käytettävissä vain virhesivuilla ja joka raportoi suorituksenaikaisia ​​virheitä, kuten ArrayIndexOutOfBounds.

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

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:

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

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:

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)

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ä

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:

Vastaus JSP:ssä

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:

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:

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:

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:

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:

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:

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

Poikkeus JSP:ssä

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

UKK

Ei. Säiliö luo kaikki yhdeksän implisiittistä objektia automaattisesti käännösvaiheen aikana. Kehittäjät voivat käyttää niitä suoraan skriptien ja palvelumetodin sisällä tuomatta paketteja tai määrittelemättä muuttujia.

Ei. Implisiittiset objektit ovat käytettävissä vain palvelumetodiin liittyvien skriptien ja lausekkeiden sisällä. Niitä ei voi käyttää JSP-deklarointitagien sisällä, jotka luovat luokkatason jäseniä kyseisen metodin ulkopuolella.

PageContext toimii kaikissa neljässä näkyvyysalueessa – sivu, pyyntö, istunto ja sovellus. Se tarjoaa setAttribute-, getAttribute- ja removeAttribute-metodit, mikä tekee siitä joustavimman implisiittisen objektin datan hallintaan eri näkyvyystasoilla.

Tekoäly voi selittää jokaisen implisiittisen objektin esimerkeillä, muuntaa skriptikoodin selkeämmiksi vaihtoehdoiksi ja vastata laajuuskysymyksiin välittömästi. Tämä auttaa aloittelijoita ymmärtämään, milloin pyyntö-, istunto- tai sovellusobjekteja käytetään oikein.

Kyllä. Tekoälytyökalut voivat luoda toimivia JSP-koodinpätkiä käyttämällä out-, request-, session- ja muita implisiittisiä objekteja ja selittää sitten jokaisen rivin. Kehittäjien tulisi silti tarkistaa tuloste oikean laajuuden käsittelyn ja turvallisuuden varmistamiseksi.

Tiivistä tämä viesti seuraavasti: