Implizite JSP-Objekte
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:
- Außen
- PREISANFRAGE (Request)
- Antwort
- Config
- Anwendungsbereiche
- Session
- Seitenkontext
- Seite
- 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 der Klasse javax.servlet.jsp.jspWriter
- 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:
Codezeile 11-12– out wird zum Drucken in den Ausgabestream verwendet
Wenn wir den obigen Code ausführen, erhalten wir die folgende Ausgabe:
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)
Erklärung des Codes:
Codezeile 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
Codezeile 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:
Wenn Sie „Test“ schreiben und auf die Schaltfläche „Senden“ klicken, erhalten Sie die folgende Ausgabe: „Willkommen Test.“
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:
Codezeile 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 des Servlets an)
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
Codezeile 14-17: In web.xml haben wir eine Zuordnung von Servlets zu den Klassen.
Implicit_jsp5.jsp
Codezeile 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:
Ausgang:
- Der Servlet-Name ist „GuruServlet“, da der Name in web.xml vorhanden ist
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
Codezeile 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).
Codezeile 12: Wir rufen ein weiteres JSP auf href auf, in dem wir den Wert für das festgelegte Attribut „Benutzer“ erhalten.
Implicit_jsp8.jsp
Codezeile 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:
Wenn Sie auf den Link für den Benutzernamen klicken, erhalten Sie die folgende Ausgabe.
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
- Anwendungsbereiche
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:
Codezeile 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.
Codezeile 12: Wir erhalten den Wert des Attributs mithilfe von pageContext
Wenn Sie den obigen Code ausführen, erhalten Sie die folgende Ausgabe:
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:
Codezeile 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:
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:
Codezeile 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:
Wir erhalten ArrayIndexOfBoundsException im Array, wo wir ein num1-Array des fünften Elements erhalten.