Implicitní objekty JSP

Co je implicitní objekt JSP?

  • Implicitní objekty JSP se vytvářejí během fáze překladu JSP na servlet.
  • Tyto objekty lze přímo použít ve skriptech, které jsou součástí servisní metody.
  • Jsou vytvářeny kontejnerem automaticky a lze k nim přistupovat pomocí objektů.

Kolik implicitních objektů je dostupných v JSP?

V kontejneru je k dispozici 9 typů implicitních objektů:

  1. Ven
  2. Žádost
  3. Odpověď
  4. Config
  5. editaci videa
  6. Zasedání
  7. PageContext
  8. Strana
  9. Výjimka

Pojďme studovat Jeden po druhém

1) Ven

  • Out je jedním z implicitních objektů pro zápis dat do vyrovnávací paměti a odeslání výstupu klientovi jako odpověď
  • Out object nám umožňuje přístup k výstupnímu proudu servletu
  • Out je objekt třídy javax.servlet.jsp.jspWriter
  • Při práci s servlet, potřebujeme objekt printwriter

Příklad:

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

Vysvětlení kódu:

Řádek kódu 11-12– out se používá k tisku do výstupního proudu

Když spustíme výše uvedený kód, dostaneme následující výstup:

Venku v JSP

Výstup:

  • Ve výstupu dostaneme hodnoty num1 a num2

2) Žádost

  • Objekt požadavku je instancí java.servlet.http.HttpServletRequest a je to jeden z argumentů metody služby
  • Bude vytvořen kontejnerem pro každý požadavek.
  • Bude použit k vyžádání informací, jako je parametr, informace záhlaví, název serveru atd.
  • K přístupu k parametru požadavku používá getParameter().

Příklad:

Implicit_jsp2.jsp(formulář, ze kterého je požadavek odeslán na 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 (kde se akce provádí)

Žádost v JSP

Vysvětlení kódu:

Řádek 10–13 kódu: V implicit_jsp2.jsp(form) je odeslán požadavek, proto je proměnná uživatelské jméno zpracována a odeslána na guru.jsp, což je akce JSP.

Guru.jsp

Řádek 10-11 kódu: Je to akce jsp, kde je požadavek zpracován a uživatelské jméno je převzato z formuláře jsp.

Když spustíte výše uvedený kód, získáte následující výstup

Výstup:

Žádost v JSP

Když napíšete test a kliknete na tlačítko Odeslat, získáte následující výstup „Uvítací test“.

Žádost v JSP

3) Odezva

  • „Response“ je instance třídy, která implementuje rozhraní HttpServletResponse
  • Kontejner vygeneruje tento objekt a předá jej metodě _jspservice() jako parametr
  • „Objekt odpovědi“ bude vytvořen kontejnerem pro každý požadavek.
  • Představuje odpověď, která může být poskytnuta klientovi
  • Implicitní objekt odezvy se používá k typu obsahu, přidání cookie a přesměrování na stránku s odpovědí

Příklad:

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

Vysvětlení kódu:

11. řádek kódu: V objektu odpovědi můžeme nastavit typ obsahu

Zde nastavujeme pouze typ obsahu v objektu odpovědi. Proto pro to neexistuje žádný výstup.

4) Konfigurace

  • „Config“ je typu java.servlet.servletConfig
  • Je vytvořen kontejnerem pro každou stránku jsp
  • Slouží k získání inicializačního parametru ve web.xml

Příklad:

Web.xml (určuje název a mapování servletu)

Konfigurace v JSP

Implicit_jsp5.jsp (získání hodnoty názvu servletu)

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

Vysvětlení kódu:

V souboru web.xml

Řádek 14–17 kódu: Ve web.xml máme mapování servletů do tříd.

Implicitní_jsp5.jsp

Řádek 10–11 kódu: K získání názvu servletu v JSP můžeme použít config.getServletName, který nám pomůže získat název servletu.

Když spustíte výše uvedený kód, získáte následující výstup:

Odpověď v JSP

Výstup:

  • Název servletu je „GuruServlet“, jak je uvedeno v souboru web.xml

5) Aplikace

  • Aplikační objekt (řádek kódu 10) je instancí javax.servlet.ServletContext a používá se k získání informací o kontextu a atributů v JSP.
  • Objekt aplikace je vytvořen kontejnerem jeden na aplikaci, když je aplikace nasazena.
  • Objekt Servletcontext obsahuje sadu metod, které se používají k interakci s kontejnerem servletu. Můžeme najít informace o kontejneru servletu

Příklad:

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

Vysvětlení kódu:

  • Ve výše uvedeném kódu pomáhá atribut aplikace získat kontextovou cestu stránky JSP.

6) Zasedání

  • Relace obsahuje objekt „httpsession“ (řádek kódu 10).
  • Objekt relace se používá k získání, nastavení a odstranění atributů rozsahu relace a také k získání informací o relaci

Příklad:

Implicitní_jsp7 (atribut je nastaven)

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

Implicitní_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>

Vysvětlení kódu:

Implicitní_jsp7.jsp

11. řádek kódu: nastavujeme atribut user v proměnné session a tuto hodnotu lze načíst z relace v kterémkoli jsp, který je z ní volán (_jsp8.jsp).

12. řádek kódu: Voláme další jsp on href, ve kterém získáme hodnotu pro atribut user, která je nastavena.

Implicitní_jsp8.jsp

11. řádek kódu: Získáváme hodnotu uživatelského atributu z objektu relace a zobrazujeme tuto hodnotu

Když spustíte výše uvedený kód, získáte následující výstup:

Relace v JSP

Když kliknete na odkaz pro uživatelské jméno. Získáte následující výstup.

Relace v JSP

Výstup:

  • Když klikneme na odkaz uvedený v implicit_jsp7.jsp, jsme přesměrováni na druhou stránku jsp, tj. stránku (_jsp8.jsp) a získáme hodnotu z objektu session uživatelského atributu (_jsp7.jsp).

7) Kontext stránky

  • Tento objekt je typu pagecontext.
  • Používá se k získání, nastavení a odstranění atributů z určitého rozsahu

Rozsahy jsou 4 typů:

  • Strana
  • Žádost
  • Zasedání
  • editaci videa

Příklad:

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

Vysvětlení kódu:

11. řádek kódu: atribut nastavujeme pomocí objektu pageContext a má tři parametry:

  • Klíč
  • Hodnota
  • Rozsah

Ve výše uvedeném kódu je klíč student a hodnota je „gurustudent“, zatímco rozsah je rozsah stránky. Zde je rozsah „stránka“ a lze jej získat pouze pomocí rozsahu stránky.

12. řádek kódu: Hodnotu atributu získáváme pomocí pageContext

Když spustíte výše uvedený kód, získáte následující výstup:

PageContext v JSP

Výstup:

  • Výstup vypíše „jméno studenta je gurustudent“.

8) Stránka

  • Implicitní proměnná stránky obsahuje aktuálně prováděný objekt servletu pro odpovídající jsp.
  • Funguje jako tento objekt pro aktuální stránku jsp.

Příklad:

V tomto příkladu používáme objekt stránky k získání názvu stránky pomocí metody 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>

Vysvětlení kódu:

Řádek 10–11 kódu: V tomto příkladu se pokoušíme použít metodu toString() objektu stránky a snažíme se získat název řetězce stránky JSP.

Když spustíte kód, získáte následující výstup:

Stránka v JSP

Výstup:

  • Výstupem je název řetězce výše uvedené stránky jsp

9) Výjimka

  • Výjimka je implicitní objekt třídy throwable.
  • Používá se pro zpracování výjimek v JSP.
  • Objekt výjimky lze použít pouze na chybových stránkách.Příklad:
<%@ 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>

Vysvětlení kódu:

Řádek kódu 10-12 – Má pole čísel, tj. num1 se čtyřmi prvky. Ve výstupu se snažíme vytisknout pátý prvek pole z num1, který není deklarován v seznamu polí. Používá se tedy k získání objektu výjimky jsp.

Výstup:

Výjimka v JSP

Dostáváme ArrayIndexOfBoundsException v poli, kde získáváme pole num1 pátého prvku.