Implizite JSP-Objekte

⚡ Intelligente Zusammenfassung

JSP Implicit Objects sind vordefinierte Variablen, die der Servlet-Container während der Seitenübersetzung automatisch erstellt. Dadurch können Entwickler direkt innerhalb einer Seite auf Ausgabestreams, Anfragen, Antworten, Sitzungen und Anwendungsdaten zugreifen, ohne dass eine manuelle Deklaration oder zusätzliche Konfiguration erforderlich ist.

  • ️ Ausgabeobjekt: Schreibt Daten in den Puffer und sendet die Ausgabe über die JSP-Seite an den Client.Writer Strom.
  • 📥 Anforderungsobjekt: Eine Instanz von HttpServletRequest, die Parameter, Header und Serverdetails mit getParameter() abruft.
  • 📤 Antwortobjekt: Implementiert HttpServletResponse, um den Inhaltstyp festzulegen, Cookies hinzuzufügen und den Client umzuleiten.
  • ⚙️ Konfiguration und Anwendung: Die Konfiguration liest Initialisierungsparameter aus der web.xml-Datei; die Anwendung teilt Kontextdaten über die gesamte Bereitstellung hinweg.
  • 🗂️ Sitzung und Seitenkontext: Session speichert Benutzerattribute seitenübergreifend; PageContext verwaltet Attribute über Seiten-, Anfrage-, Sitzungs- und Anwendungsbereiche hinweg.
  • ⚠️ Ausnahmeobjekt: Eine Ausnahmebehandlungsmethode, die nur auf Fehlerseiten verfügbar ist und Laufzeitfehler wie ArrayIndexOutOfBounds meldet.

Was ist ein implizites JSP-Objekt?

  • Implizite JSP-Objekte werden während der Übersetzungsphase von JSP zum Servlet erstellt.
  • Diese Objekte können direkt in Scriptlets verwendet werden, die in die Service-Methode eingehen.
  • Sie werden vom Container automatisch erstellt und können über Objekte aufgerufen werden.

Wie viele implizite Objekte sind in JSP verfügbar?

Im Container stehen 9 Arten impliziter Objekte zur Verfügung:

  1. Außen
  2. PREISANFRAGE (Request)
  3. Antwort
  4. Config
  5. Anwendung
  6. Session
  7. Seitenkontext
  8. Seite
  9. Exception

Lasst uns einzeln lernen

1) Aus

  • Out ist eines der impliziten Objekte, um die Daten in den Puffer zu schreiben und als Antwort die Ausgabe an den Client zu senden.
  • Out-Objekt ermöglicht uns den Zugriff auf den Ausgabestream des Servlets
  • Out ist ein Objekt vom Typ javax.servlet.jsp.jspWriter Klasse
  • Während der Arbeit mit Servlet, wir brauchen ein Printwriter-Objekt

Ejemplo:

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

Erklärung des Codes:

Code Zeile 11-12– out wird zum Drucken in den Ausgabestream verwendet

Wenn wir den obigen Code ausführen, erhalten wir die folgende Ausgabe:

Draußen in JSP

Ausgang:

  • In der Ausgabe erhalten wir die Werte von num1 und num2

2) Anfrage

  • Das Anforderungsobjekt ist eine Instanz von java.servlet.http.HttpServletRequest und eines der Argumente der Service-Methode
  • Es wird pro Container für jede Anfrage erstellt.
  • Es wird verwendet, um Informationen wie Parameter, Header-Informationen, Servernamen usw. anzufordern.
  • Es verwendet getParameter(), um auf den Anforderungsparameter zuzugreifen.

Ejemplo:

Implicit_jsp2.jsp (Formular, von dem aus die Anfrage an guru.jsp gesendet wird)

<%@ 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 (wo die Aktion ausgeführt wird)

Anfrage in JSP

Erklärung des Codes:

Code Zeile 10-13: In implicit_jsp2.jsp(form) wird eine Anfrage gesendet, daher wird die Variable Benutzername verarbeitet und an guru.jsp gesendet, was eine Aktion von JSP ist.

Guru.jsp

Code Zeile 10-11: Es ist die Aktions-JSP, in der die Anfrage verarbeitet wird und der Benutzername aus der JSP-Form übernommen wird.

Wenn Sie den obigen Code ausführen, erhalten Sie die folgende Ausgabe

Ausgang:

Anfrage in JSP

Wenn Sie „Test“ schreiben und auf die Schaltfläche „Senden“ klicken, erhalten Sie die folgende Ausgabe: „Willkommen Test.“

Anfrage in JSP

3) Antwort

  • „Response“ ist eine Instanz der Klasse, die die HttpServletResponse-Schnittstelle implementiert
  • Der Container generiert dieses Objekt und übergibt es als Parameter an die Methode _jspservice()
  • Für jede Anfrage wird vom Container ein „Antwortobjekt“ erstellt.
  • Es stellt die Antwort dar, die dem Kunden gegeben werden kann
  • Das implizite Antwortobjekt wird zum Typieren von Inhalten, zum Hinzufügen von Cookies und zum Weiterleiten zur Antwortseite verwendet

Ejemplo:

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

Erklärung des Codes:

Code Linie 11: Im Antwortobjekt können wir den Inhaltstyp festlegen

Hier legen wir nur den Inhaltstyp im Antwortobjekt fest. Daher gibt es hierfür keine Ausgabe.

4) Konfiguration

  • „Config“ ist vom Typ java.servlet.servletConfig
  • Es wird vom Container für jede JSP-Seite erstellt
  • Es wird verwendet, um den Initialisierungsparameter in web.xml abzurufen

Ejemplo:

Web.xml (gibt den Namen und die Zuordnung an)ping des Servlets)

Konfiguration in JSP

Implicit_jsp5.jsp (Wert des Servlet-Namens abrufen)

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

Erklärung des Codes:

In web.xml

Code Zeile 14-17: In der web.xml-Datei haben wir eine Karteping von Servlets zu den Klassen.

Implicit_jsp5.jsp

Code Zeile 10-11: Um den Namen des Servlets in JSP zu erhalten, können wir config.getServletName verwenden, was uns dabei hilft, den Namen des Servlets zu ermitteln.

Wenn Sie den obigen Code ausführen, erhalten Sie die folgende Ausgabe:

Antwort in JSP

Ausgang:

  • Der Servlet-Name lautet „GuruDer Name „Servlet“ ist in der web.xml-Datei vorhanden.

5) Anwendung

  • Das Anwendungsobjekt (Codezeile 10) ist eine Instanz von javax.servlet.ServletContext und wird verwendet, um die Kontextinformationen und Attribute in JSP abzurufen.
  • Das Anwendungsobjekt wird vom Container einzeln pro Anwendung erstellt, wenn die Anwendung bereitgestellt wird.
  • Das Servletcontext-Objekt enthält eine Reihe von Methoden, die zur Interaktion mit dem Servlet-Container verwendet werden. Wir können Informationen über den Servlet-Container finden

Ejemplo:

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

Erklärung des Codes:

  • Im obigen Code hilft das Anwendungsattribut dabei, den Kontextpfad der JSP-Seite abzurufen.

6) Sitzung

  • Die Sitzung enthält das Objekt „httpsession“ (Codezeile 10).
  • Das Sitzungsobjekt wird zum Abrufen, Festlegen und Entfernen von Attributen für den Sitzungsbereich sowie zum Abrufen von Sitzungsinformationen verwendet

Ejemplo:

Implicit_jsp7 (Attribut ist gesetzt)

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

Erklärung des Codes:

Implicit_jsp7.jsp

Code Linie 11: Wir legen das Attribut user in der Sitzungsvariablen fest, und dieser Wert kann aus der Sitzung abgerufen werden, je nachdem, welcher JSP von dort aufgerufen wird (_jsp8.jsp).

Code Linie 12: Wir rufen ein weiteres JSP auf href auf, in dem wir den Wert für das festgelegte Attribut „Benutzer“ erhalten.

Implicit_jsp8.jsp

Code Linie 11: Wir erhalten den Wert des Benutzerattributs vom Sitzungsobjekt und zeigen diesen Wert an

Wenn Sie den obigen Code ausführen, erhalten Sie die folgende Ausgabe:

Sitzung in JSP

Wenn Sie auf den Link für den Benutzernamen klicken, erhalten Sie die folgende Ausgabe.

Sitzung in JSP

Ausgang:

  • Wenn wir auf den in implicit_jsp7.jsp angegebenen Link klicken, werden wir zur zweiten JSP-Seite, dh zur Seite (_jsp8.jsp), weitergeleitet und erhalten den Wert vom Sitzungsobjekt des Benutzerattributs (_jsp7.jsp).

7) Seitenkontext

  • Dieses Objekt ist vom Typ Seitenkontext.
  • Es wird verwendet, um die Attribute eines bestimmten Bereichs abzurufen, festzulegen und zu entfernen

Es gibt 4 Arten von Zielfernrohren:

  • Seite
  • PREISANFRAGE (Request)
  • Session
  • Anwendung

Ejemplo:

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

Erklärung des Codes:

Code Linie 11: Wir legen das Attribut mithilfe des pageContext-Objekts fest und es hat drei Parameter:

  • Wesentliche
  • Wert
  • Geltungsbereich

Im obigen Code ist der Schlüssel „student“ und der Wert „gurustudent“, während der Bereich der Seitenbereich ist. Hier ist der Bereich „Seite“ und kann nur über den Seitenbereich abgerufen werden.

Code Linie 12: Wir erhalten den Wert des Attributs mithilfe von pageContext

Wenn Sie den obigen Code ausführen, erhalten Sie die folgende Ausgabe:

PageContext in JSP

Ausgang:

  • Die Ausgabe lautet „Schülername ist gurustudent“.

8) Seite

  • Die implizite Variable „Seite“ enthält das aktuell ausgeführte Servlet-Objekt für die entsprechende JSP.
  • Fungiert als dieses Objekt für die aktuelle JSP-Seite.

Ejemplo:

In diesem Beispiel verwenden wir das Seitenobjekt, um den Seitennamen mithilfe der toString-Methode abzurufen

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

Erklärung des Codes:

Code Zeile 10-11: In diesem Beispiel versuchen wir, die Methode toString() des Seitenobjekts zu verwenden und den Stringnamen der JSP-Seite abzurufen.

Wenn Sie den Code ausführen, erhalten Sie die folgende Ausgabe:

Seite in JSP

Ausgang:

  • Die Ausgabe ist der Stringname der oben genannten JSP-Seite

9) Ausnahme

  • Ausnahme ist das implizite Objekt der auswerfbaren Klasse.
  • Es wird genutzt für Ausnahmebehandlung in JSP.
  • Das Ausnahmeobjekt kann nur in Fehlerseiten verwendet werden.Ejemplo:
<%@ 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>

Erklärung des Codes:

Code Zeile 10-12 – Es hat ein Zahlenarray, also num1 mit vier Elementen. In der Ausgabe versuchen wir, das fünfte Element des Arrays von num1 auszudrucken, das nicht in der Arrayliste deklariert ist. Es wird also verwendet, um das Ausnahmeobjekt des JSP zu erhalten.

Ausgang:

Ausnahme in JSP

Wir erhalten ArrayIndexOfBoundsException im Array, wo wir ein num1-Array des fünften Elements erhalten.

Häufig gestellte Fragen

Nein. Der Container erstellt alle neun impliziten Objekte automatisch während der Übersetzungsphase. Entwickler können sie direkt in Scriptlets und der Service-Methode verwenden, ohne Pakete zu importieren oder Variablen zu deklarieren.

Nein. Implizite Objekte sind nur innerhalb von Scriptlets und Ausdrücken verfügbar, die der Servicemethode zugeordnet sind. Sie können nicht innerhalb von JSP-Deklarations-Tags verwendet werden, da diese Klassenmember außerhalb der jeweiligen Methode erzeugen.

PageContext funktioniert über alle vier Gültigkeitsbereiche hinweg – Seite, Anfrage, Sitzung und Anwendung. Es bietet die Methoden setAttribute, getAttribute und removeAttribute und ist damit das flexibelste implizite Objekt zur Datenverwaltung über verschiedene Gültigkeitsbereiche hinweg.

KI kann jedes implizite Objekt anhand von Beispielen erklären, Scriptlet-Code in übersichtlichere Alternativen umwandeln und Fragen zum Gültigkeitsbereich sofort beantworten. Dies hilft Anfängern zu verstehen, wann sie Anfrage-, Sitzungs- oder Anwendungsobjekte korrekt verwenden.

Ja. KI-Tools können funktionierende JSP-Code-Snippets mithilfe von `out`-, `request`-, `session`- und anderen impliziten Objekten generieren und anschließend jede Zeile erläutern. Entwickler sollten die Ausgabe dennoch auf korrekte Gültigkeitsbereichsbehandlung und Sicherheit überprüfen.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: