JSP implicita objekt

⚡ Smart sammanfattning

Implicita JSP-objekt är fördefinierade variabler som servlet-behållaren skapar automatiskt under sidöversättning, vilket gör det möjligt för utvecklare att komma åt utdataströmmar, förfrågningar, svar, sessioner och applikationsdata direkt inuti en sida utan manuell deklaration eller extra konfiguration.

  • 🖨️ Ut objekt: Skriver data till bufferten och skickar utdata till klienten via JspWriter strömma.
  • 📥 Begäranobjekt: En instans av HttpServletRequest som hämtar parametrar, rubriker och serverinformation med hjälp av getParameter().
  • 📤 Svarsobjekt: Implementerar HttpServletResponse för att ställa in innehållstyp, lägga till cookies och omdirigera klienten.
  • ⚙️ Konfiguration och applikation: Config läser initialiseringsparametrar från web.xml; Programmet delar kontextdata över hela distributionen.
  • 🗂️ Session och sidkontext: Session bevarar användarattribut över sidor medan PageContext hanterar attribut över sid-, begärande-, sessions- och applikationsomfång.
  • ⚠️ Undantagsobjekt: En Throwable som endast är tillgänglig på felsidor som rapporterar körtidsfel, till exempel ArrayIndexOutOfBounds.

Vad är JSP implicit objekt?

  • JSP implicita objekt skapas under översättningsfasen av JSP till servleten.
  • Dessa objekt kan direkt användas i skript som går i servicemetoden.
  • De skapas av behållaren automatiskt och de kan nås med hjälp av objekt.

Hur många implicita objekt är tillgängliga i JSP?

Det finns 9 typer av implicita objekt tillgängliga i behållaren:

  1. Out
  2. FÖRFRÅGAN
  3. Svar
  4. Konfig
  5. Ansökan
  6. Session Test
  7. Sidkontext
  8. Sida
  9. undantag

Låt oss studera en efter en

1) Ut

  • Ut är ett av de implicita objekten för att skriva data till bufferten och skicka utdata till klienten som svar
  • Out-objektet låter oss komma åt servletens utdataström
  • Out är ett objekt för javax.servlet.jsp.jspWriter klass
  • När du arbetar med servlett, vi behöver skrivarobjekt

Exempel:

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

Förklaring av koden:

Code Linje 11-12– ut används för att skriva ut till utdataström

När vi kör ovanstående kod får vi följande utdata:

Ute i JSP

Produktion:

  • I utgången får vi värdena för num1 och num2

2) Begäran

  • Begäranobjektet är en instans av java.servlet.http.HttpServletRequest och det är ett av argumenten för tjänstemetoden
  • Det kommer att skapas av behållare för varje begäran.
  • Den kommer att användas för att begära information som parameter, rubrikinformation, servernamn, etc.
  • Den använder getParameter() för att komma åt parametern begäran.

Exempel:

Implicit_jsp2.jsp(formulär från vilket förfrågan skickas till 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 (där åtgärden utförs)

Begäran i JSP

Förklaring av kod:

Code Rad 10–13: I implicit_jsp2.jsp(form) skickas begäran, därför bearbetas variabeln användarnamn och skickas till guru.jsp vilket är JSP:s åtgärd.

Guru.jsp

Code Rad 10–11: Det är action jsp där begäran behandlas, och användarnamnet är hämtat från formuläret jsp.

När du kör ovanstående kod får du följande utdata

Produktion:

Begäran i JSP

När du skriver test och klickar på skicka-knappen får du följande utdata "Välkomsttest."

Begäran i JSP

3) Svar

  • "Response" är en instans av klass som implementerar HttpServletResponse-gränssnittet
  • Container genererar detta objekt och skickar till metoden _jspservice() som parameter
  • "Svarsobjekt" kommer att skapas av behållaren för varje begäran.
  • Det representerar svaret som kan ges till klienten
  • Det implicita responsobjektet används för att innehållstyp, lägga till cookie och omdirigera till svarssida

Exempel:

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

Förklaring av koden:

Code Linje 11: I responsobjektet kan vi ställa in innehållstypen

Här ställer vi bara in innehållstypen i responsobjektet. Därför finns det ingen utgång för detta.

4) Konfig

  • "Config" är av typen java.servlet.servletConfig
  • Den skapas av behållaren för varje jsp-sida
  • Den används för att hämta initialiseringsparametern i web.xml

Exempel:

Web.xml (ange namn och mappning)ping av servleten)

Konfigurera i JSP

Implicit_jsp5.jsp (hämtar värdet av servletnamn)

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

Förklaring av koden:

I web.xml

Code Rad 14-17: I web.xml har vi kartaping av servlets till klasserna.

Implicit_jsp5.jsp

Code Rad 10-11: För att få namnet på servleten i JSP kan vi använda config.getServletName, vilket hjälper oss att få namnet på servleten.

När du kör ovanstående kod får du följande utdata:

Svar i JSP

Produktion:

  • Servletnamnet är "GuruServlet” som namnet finns i web.xml

5) Ansökan

  • Application object (kodrad 10) är en instans av javax.servlet.ServletContext och det används för att hämta kontextinformationen och attributen i JSP.
  • Applikationsobjekt skapas av behållare en per applikation, när applikationen distribueras.
  • Servletcontext-objektet innehåller en uppsättning metoder som används för att interagera med servletbehållaren. Vi kan hitta information om servletbehållaren

Exempel:

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

Förklaring av koden:

  • I ovanstående kod hjälper applikationsattributet till att få kontextsökvägen till JSP-sidan.

6) Session

  • Sessionen innehåller objektet "httpsession" (kodrad 10).
  • Sessionsobjekt används för att hämta, ställa in och ta bort attribut till sessionsomfång och används även för att hämta sessionsinformation

Exempel:

Implicit_jsp7(attributet är satt)

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

Förklaring av koden:

Implicit_jsp7.jsp

Code Linje 11: vi ställer in attributet användare i sessionsvariabeln, och det värdet kan hämtas från sessionen i vilken jsp som helst anropas från den (_jsp8.jsp).

Code Linje 12: Vi anropar en annan jsp på href där vi kommer att få värdet för attribut användare som är satt.

Implicit_jsp8.jsp

Code Linje 11: Vi hämtar värdet av användarattributet från sessionsobjektet och visar det värdet

När du kör ovanstående kod får du följande utdata:

Session i JSP

När du klickar på länken för användarnamnet. Du kommer att få följande utdata.

Session i JSP

Produktion:

  • När vi klickar på länken som ges i implicit_jsp7.jsp omdirigeras vi till andra jsp-sidan, dvs (_jsp8.jsp) sida och vi får värdet från sessionsobjektet för användarattributet (_jsp7.jsp).

7) Sidkontext

  • Detta objekt är av typen sidkontext.
  • Den används för att hämta, ställa in och ta bort attributen från ett visst omfång

Omfattningarna är av 4 typer:

  • Sida
  • FÖRFRÅGAN
  • Session Test
  • Ansökan

Exempel:

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

Förklaring av koden:

Code Linje 11: vi ställer in attributet med hjälp av objektet pageContext, och det har tre parametrar:

  • Nyckel
  • Värderar
  • Omfattning

I ovanstående kod är nyckeln student och värdet är "gurustudent" medan omfattningen är sidomfattningen. Här är omfattningen "sida" och den kan endast användas med sidomfattning.

Code Linje 12: Vi får värdet av attributet med hjälp av pageContext

När du kör ovanstående kod får du följande utdata:

PageContext i JSP

Produktion:

  • Utdata kommer att skriva ut "studentens namn är gurustudent".

8) Sida

  • Sidans implicita variabel innehåller det för närvarande körda servletobjektet för motsvarande jsp.
  • Fungerar som detta objekt för aktuell jsp-sida.

Exempel:

I det här exemplet använder vi sidobjekt för att få sidnamnet med metoden 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>

Förklaring av koden:

Code Rad 10-11: I det här exemplet försöker vi använda metoden toString() för sidobjektet och försöker få strängnamnet på JSP-sidan.

När du kör koden får du följande utdata:

Sida i JSP

Produktion:

  • Utdata är strängnamnet på ovanstående jsp-sida

9) Undantag

  • Undantag är det implicita objektet för den kastbara klassen.
  • Det används för undantagshantering i JSP.
  • Undantagsobjektet kan endast användas på felsidor.Exempel:
<%@ 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>

Förklaring av koden:

Code Linje 10-12 – Den har en array av tal, dvs num1 med fyra element. I utgången försöker vi skriva ut det femte elementet i arrayen från num1, som inte deklareras i arraylistan. Så det används för att få undantagsobjekt av jsp.

Produktion:

Undantag i JSP

Vi får ArrayIndexOfBoundsException i arrayen där vi får en num1 array av det femte elementet.

Vanliga frågor

Nej. Containern skapar alla nio implicita objekt automatiskt under översättningsfasen. Utvecklare kan använda dem direkt inuti scriptlets och servicemetoden utan att importera paket eller deklarera några variabler.

Nej. Implicita objekt är endast tillgängliga inuti skript och uttryck som mappas till servicemetoden. De kan inte användas inuti JSP-deklarationstaggar, som genererar medlemmar på klassnivå utanför den metoden.

PageContext fungerar över alla fyra omfång – sida, begäran, session och applikation. Den tillhandahåller metoderna setAttribute, getAttribute och removeAttribute, vilket gör den till det mest flexibla implicita objektet för att hantera data över olika omfångsnivåer.

AI kan förklara varje implicit objekt med exempel, konvertera scriptlet-kod till renare alternativ och besvara scope-frågor direkt. Detta hjälper nybörjare att förstå när de ska använda förfrågnings-, sessions- eller applikationsobjekten korrekt.

Ja. AI-verktyg kan generera fungerande JSP-kodavsnitt med hjälp av out, request, session och andra implicita objekt, och sedan förklara varje rad. Utvecklare bör fortfarande granska utdata för korrekt hantering av omfång och säkerhet.

Sammanfatta detta inlägg med: