JSP implicit objektumok

Mi az a JSP Implicit objektum?

  • A JSP implicit objektumok a JSP servletre való fordítási fázisában jönnek létre.
  • Ezek az objektumok közvetlenül felhasználhatók a szolgáltatási metódusba tartozó szkriptekben.
  • Ezeket a tároló automatikusan hozza létre, és objektumok segítségével érhetők el.

Hány implicit objektum érhető el a JSP-ben?

A tárolóban 9 típusú implicit objektum érhető el:

  1. Ki
  2. Kérjen
  3. Válasz
  4. Config
  5. Alkalmazás
  6. Ülés
  7. PageContext
  8. oldal
  9. kivétel

Tanulmányozzuk egyenként

1) Ki

  • Az Out az egyik implicit objektum, amely az adatokat a pufferbe írja, és válaszként elküldi a kimenetet a kliensnek
  • Az Out objektum lehetővé teszi számunkra, hogy hozzáférjünk a szervlet kimeneti adatfolyamához
  • Az Out a javax.servlet.jsp.jspWriter osztály objektuma
  • Munka közben szervlet, szükségünk van nyomtatóíró objektumra

Példa:

<%@ 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>

A kód magyarázata:

Kódsor 11-12– out a kimeneti adatfolyamba történő nyomtatásra szolgál

Amikor végrehajtjuk a fenti kódot, a következő kimenetet kapjuk:

JSP-ben

output:

  • A kimenetben a num1 és num2 értékeket kapjuk

2) Kérés

  • A kérelem objektum a java.servlet.http.HttpServletRequest példánya, és ez a szolgáltatás metódusának egyik argumentuma
  • Minden kérelemhez tároló hozza létre.
  • A rendszer olyan információk kérésére szolgál, mint a paraméter, a fejléc információ, a szerver neve stb.
  • A getParameter() segítségével éri el a kérési paramétert.

Példa:

Implicit_jsp2.jsp(űrlap, amelyről a kérés elküldésre kerül a guru.jsp címre)

<%@ 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 (ahol a műveletet végrehajtják)

Kérés JSP-ben

A kód magyarázata:

10-13. kódsor: Az implicit_jsp2.jsp(form) kérés elküldésre kerül, így a felhasználónév változó feldolgozása és elküldése a guru.jsp-nek, ami a JSP művelete.

Guru.jsp

Kódsor 10-11: A kérés feldolgozása a jsp műveletben történik, a felhasználónév pedig a jsp űrlapból származik.

Amikor végrehajtja a fenti kódot, a következő kimenetet kapja

output:

Kérés JSP-ben

Amikor megírja a tesztet, és rákattint a küldés gombra, akkor a következő kimenetet kapja: „Üdvözöljük teszt”.

Kérés JSP-ben

3) Válasz

  • A „Response” az osztály egy példánya, amely megvalósítja a HttpServletResponse interfészt
  • A tároló létrehozza ezt az objektumot, és paraméterként átadja a _jspservice() metódust
  • A „válaszobjektumot” a tároló minden kéréshez létrehozza.
  • Az ügyfélnek adható választ képviseli
  • A válasz implicit objektum a tartalom típusára, a cookie hozzáadására és a válaszoldalra való átirányításra szolgál

Példa:

<%@ 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>

A kód magyarázata:

11. kódsor: A válaszobjektumban beállíthatjuk a tartalom típusát

Itt csak a tartalomtípust állítjuk be a válaszobjektumban. Ezért erre nincs kimenet.

4) Konfig

  • A „Config” a java.servlet.servletConfig típusú
  • A tároló hozza létre minden jsp-oldalhoz
  • Az inicializálási paraméter beszerzésére szolgál a web.xml fájlban

Példa:

Web.xml (meghatározza a szervlet nevét és leképezését)

Konfiguráció JSP-ben

Implicit_jsp5.jsp (a szervletnév értékének lekérése)

<%@ 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>

A kód magyarázata:

A web.xml fájlban

14-17. kódsor: A web.xml-ben a szervleteket leképezzük az osztályokhoz.

Implicit_jsp5.jsp

10-11. kódsor: A JSP-ben lévő servlet nevének lekéréséhez használhatjuk a config.getServletName fájlt, amely segít a servlet nevének beszerzésében.

Amikor végrehajtja a fenti kódot, a következő kimenetet kapja:

Válasz JSP-ben

output:

  • A szervlet neve „GuruServlet”, mivel a név megtalálható a web.xml fájlban

5) alkalmazás

  • Az alkalmazásobjektum (10-es kódsor) a javax.servlet.ServletContext példánya, és a kontextusinformációk és attribútumok lekérésére szolgál a JSP-ben.
  • Alkalmazásonként egy tároló hozza létre az alkalmazásobjektumot, amikor az alkalmazás telepítve van.
  • A Servletcontext objektum olyan metódusokat tartalmaz, amelyek a servlet tárolóval való interakcióhoz használhatók. Információkat találhatunk a szervlet tárolóról

Példa:

<%@ 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>

A kód magyarázata:

  • A fenti kódban az application attribútum segít a JSP oldal kontextusútvonalának lekérésében.

6) Munkamenet

  • A munkamenet „httpsession” objektumot tart (10-es kódsor).
  • A Session objektum a munkamenet hatóköréhez tartozó attribútumok lekérésére, beállítására és eltávolítására szolgál, valamint a munkamenet-információk lekérésére is használható

Példa:

Implicit_jsp7 (az attribútum be van állítva)

<%@ 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>

A kód magyarázata:

Implicit_jsp7.jsp

11. kódsor: beállítjuk a user attribútumot a session változóban, és ez az érték lekérhető a munkamenetből, amelyik jsp-t onnan hívják meg (_jsp8.jsp).

12. kódsor: Meghívunk egy másik jsp on href-t, amelyben megkapjuk a beállított user attribútum értékét.

Implicit_jsp8.jsp

11. kódsor: A felhasználói attribútum értékét a session objektumtól kapjuk, és megjelenítjük ezt az értéket

Amikor végrehajtja a fenti kódot, a következő kimenetet kapja:

Munkamenet JSP-ben

Amikor rákattint a felhasználónév linkjére. A következő kimenetet kapod.

Munkamenet JSP-ben

output:

  • Amikor rákattintunk az implicit_jsp7.jsp-ben megadott linkre, akkor átirányítunk a második jsp oldalra, azaz (_jsp8.jsp) oldalra, és megkapjuk a felhasználói attribútum session objektumának értékét (_jsp7.jsp).

7) PageContext

  • Ez az objektum oldalkontextus típusú.
  • Egy adott hatókör attribútumainak lekérésére, beállítására és eltávolítására szolgál

A hatókör 4 típusból áll:

  • oldal
  • Kérjen
  • Ülés
  • Alkalmazás

Példa:

<%@ 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>

A kód magyarázata:

11. kódsor: az attribútumot pageContext objektummal állítjuk be, és három paramétere van:

  • Kulcs
  • Érték
  • Kör

A fenti kódban a kulcs a tanuló, az érték pedig a „gurustudent”, míg a hatókör az oldal hatóköre. Itt a hatókör "oldal", és csak az oldal hatókörét használja.

12. kódsor: Az attribútum értékét a pageContext használatával kapjuk meg

Amikor végrehajtja a fenti kódot, a következő kimenetet kapja:

PageContext a JSP-ben

output:

  • A kimenet a következőt fogja írni: „A hallgató neve guruszt”.

8) Oldal

  • Az oldal implicit változója az aktuálisan végrehajtott servlet objektumot tartalmazza a megfelelő jsp-hez.
  • Ez az objektum az aktuális jsp-oldalon.

Példa:

Ebben a példában oldalobjektumot használunk az oldalnév lekéréséhez a toString metódus segítségével

<%@ 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>

A kód magyarázata:

10-11. kódsor: Ebben a példában megpróbáljuk az oldalobjektum toString() metódusát használni, és megpróbáljuk lekérni a JSP oldal karakterláncnevét.

Amikor végrehajtja a kódot, a következő kimenetet kapja:

Oldal JSP-ben

output:

  • A kimenet a fenti jsp oldal karakterláncának neve

9) Kivétel

  • A kivétel a dobható osztály implicit tárgya.
  • Ezt használják kivételkezelés JSP-ben.
  • A kivételobjektum csak hibaoldalakon használható.Példa:
<%@ 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>

A kód magyarázata:

Kódsor 10-12 – Van egy számtömbje, azaz a négy elemű szám1. A kimenetben a tömb ötödik elemét próbáljuk kiírni a szám1-ből, ami nincs deklarálva a tömblistában. Tehát a jsp kivételobjektumának lekérésére használják.

output:

Kivétel a JSP-ben

ArrayIndexOfBoundsException-t kapunk abban a tömbben, ahol az ötödik elem num1 tömbjét kapjuk.