JSP kaudsed objektid

Mis on JSP kaudne objekt?

  • JSP kaudsed objektid luuakse JSP servletti tõlkimise etapis.
  • Neid objekte saab otse kasutada teenindusmeetodis kasutatavates skriptides.
  • Need loob konteiner automaatselt ja neile pääseb juurde objektide abil.

Kui palju kaudseid objekte on JSP-s saadaval?

Konteineris on saadaval 9 tüüpi kaudseid objekte:

  1. välja
  2. Küsi
  3. Vastus
  4. config
  5. taotlus
  6. istung
  7. PageContext
  8. lehekülg
  9. Erand

Uurime ükshaaval

1) Väljas

  • Out on üks kaudsetest objektidest, mis kirjutab andmed puhvrisse ja saadab vastuseks väljundi kliendile
  • Out objekt võimaldab meil pääseda juurde servleti väljundvoogu
  • Out on klassi javax.servlet.jsp.jspWriter objekt
  • Töötades koos servett, vajame trükikirjutaja objekti

Näide:

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

Koodi selgitus:

Koodirida 11-12– väljundit kasutatakse väljundvoogu printimiseks

Kui käivitame ülaltoodud koodi, saame järgmise väljundi:

Väljas JSP-s

Väljund:

  • Väljundis saame väärtused num1 ja num2

2) Taotlus

  • Päringuobjekt on faili java.servlet.http.HttpServletRequest eksemplar ja see on üks teenindusmeetodi argumentidest
  • See luuakse konteineriga iga päringu jaoks.
  • Seda kasutatakse sellise teabe taotlemiseks, nagu parameeter, päise teave, serveri nimi jne.
  • See kasutab päringu parameetrile juurdepääsuks getParameter().

Näide:

Implicit_jsp2.jsp(vorm, millelt päring saadetakse aadressile 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 (kus toiming tehakse)

Taotlus JSP-s

Koodi selgitus:

Koodirida 10-13: Implicit_jsp2.jsp(vormis) taotlus saadetakse, seega töödeldakse muutuja kasutajanime ja saadetakse JSP-le guru.jsp.

Guru.jsp

Koodirida 10-11: See on toiming jsp, kus taotlust töödeldakse ja kasutajanimi võetakse vormilt jsp.

Kui käivitate ülaltoodud koodi, saate järgmise väljundi

Väljund:

Taotlus JSP-s

Kui kirjutate testi ja klõpsate esitamisnupul, saate järgmise väljundi "Tere tulemast test".

Taotlus JSP-s

3) Vastus

  • "Response" on klassi eksemplar, mis rakendab liidest HttpServletResponse
  • Konteiner loob selle objekti ja edastab parameetrina meetodi _jspservice().
  • Konteiner loob iga päringu jaoks vastuseobjekti.
  • See esindab vastust, mida saab kliendile anda
  • Vastuse kaudset objekti kasutatakse sisu tüüpimiseks, küpsise lisamiseks ja vastuse lehele suunamiseks

Näide:

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

Koodi selgitus:

Koodirida 11: Vastusobjektis saame määrata sisutüübi

Siin määrame vastuseobjektis ainult sisutüübi. Seetõttu pole selle jaoks väljundit.

4) Konfig

  • "Config" on tüüpi java.servlet.servletConfig
  • Selle loob konteiner iga jsp-lehe jaoks
  • Seda kasutatakse lähtestamisparameetri hankimiseks failis web.xml

Näide:

Web.xml (määrab servleti nime ja vastenduse)

Seadistage JSP-s

Implicit_jsp5.jsp (servleti nime väärtuse hankimine)

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

Koodi selgitus:

Web.xml-s

Koodirida 14–17: Web.xml-s on meil servletid klassidele vastendatud.

Implicit_jsp5.jsp

Koodirida 10–11: Servleti nime saamiseks JSP-s saame kasutada faili config.getServletName, mis aitab meil saada servleti nime.

Kui käivitate ülaltoodud koodi, saate järgmise väljundi:

Vastus JSP-s

Väljund:

  • Servleti nimi on "GuruServlet", kuna nimi on failis web.xml olemas

5) rakendus

  • Rakendusobjekt (koodirida 10) on faili javax.servlet.ServletContext eksemplar ja seda kasutatakse JSP-s kontekstiteabe ja atribuutide hankimiseks.
  • Rakenduse objekti loob konteiner üks rakenduse kohta, kui rakendus juurutatakse.
  • Servletikonteksti objekt sisaldab meetodite komplekti, mida kasutatakse servleti konteineriga suhtlemiseks. Leiame teavet servleti konteineri kohta

Näide:

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

Koodi selgitus:

  • Ülaltoodud koodis aitab rakenduse atribuut saada JSP lehe kontekstitee.

6) Seanss

  • Seanss hoiab "httpsession" objekti (koodirida 10).
  • Seansiobjekti kasutatakse seansi ulatuse atribuutide hankimiseks, määramiseks ja eemaldamiseks ning seda kasutatakse ka seansi teabe hankimiseks

Näide:

Implicit_jsp7 (atribuut on määratud)

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

Koodi selgitus:

Implicit_jsp7.jsp

Koodirida 11: me määrame seansimuutujas atribuudi kasutaja ja selle väärtuse saab tuua seansist olenemata sellest, millises jsp-s sellest välja kutsutakse (_jsp8.jsp).

Koodirida 12: Kutsume välja teise jsp on href, milles saame atribuudi kasutaja väärtuse, mis on määratud.

Implicit_jsp8.jsp

Koodirida 11: Me saame kasutaja atribuudi väärtuse seansiobjektilt ja kuvame selle väärtuse

Kui käivitate ülaltoodud koodi, saate järgmise väljundi:

Seanss JSP-s

Kui klõpsate kasutajanime lingil. Saate järgmise väljundi.

Seanss JSP-s

Väljund:

  • Kui klõpsame failis implicit_jsp7.jsp antud lingil, suunatakse meid teisele jsp lehele ehk (_jsp8.jsp) lehele ja saame väärtuse kasutaja atribuudi seansiobjektilt (_jsp7.jsp).

7) PageContext

  • See objekt on lehekonteksti tüüpi.
  • Seda kasutatakse atribuutide hankimiseks, määramiseks ja eemaldamiseks teatud ulatusest

Ulatusi on 4 tüüpi:

  • lehekülg
  • Küsi
  • istung
  • taotlus

Näide:

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

Koodi selgitus:

Koodirida 11: me määrame atribuudi pageContext objekti abil ja sellel on kolm parameetrit:

  • Võti
  • Väärtus
  • Ulatus

Ülaltoodud koodis on võti õpilane ja väärtus on "gurustudent", samas kui ulatus on lehe ulatus. Siin on ulatus "leht" ja see saab kasutada ainult lehe ulatust.

Koodirida 12: Atribuudi väärtuse saame kasutades pageContext

Kui käivitate ülaltoodud koodi, saate järgmise väljundi:

PageContext JSP-s

Väljund:

  • Väljundis trükitakse "õpilase nimi on gurustudent".

8) Leht

  • Lehe kaudne muutuja sisaldab parajasti käivitatavat servletiobjekti vastava jsp jaoks.
  • Toimib praeguse jsp-lehe objektina.

Näide:

Selles näites kasutame lehe nime hankimiseks meetodit toString

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

Koodi selgitus:

Koodirida 10–11: Selles näites proovime kasutada leheobjekti meetodit toString() ja proovime saada JSP lehe stringi nime.

Koodi käivitamisel saate järgmise väljundi:

Leht JSP-s

Väljund:

  • Väljund on ülaltoodud jsp-lehe stringi nimi

9) Erand

  • Erand on visatava klassi kaudne objekt.
  • Seda kasutatakse erandite käsitlemine JSP-s.
  • Erandobjekti saab kasutada ainult vealehtedel.Näide:
<%@ 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>

Koodi selgitus:

Koodirida 10-12 – Sellel on arvude massiiv, st num1 nelja elemendiga. Väljundis proovime trükkida massiivi viiendat elementi numbrist num1, mida massiiviloendis ei deklareerita. Seega kasutatakse seda jsp erandiobjekti hankimiseks.

Väljund:

Erand JSP-s

Me saame massiivi ArrayIndexOfBoundsException, kus saame viienda elemendi massiivi num1.