JSP implicitte objekter

⚡ Smart opsummering

Implicitte JSP-objekter er foruddefinerede variabler, som servlet-containeren opretter automatisk under sideoversættelse, hvilket giver udviklere adgang til outputstrømme, anmodninger, svar, sessioner og applikationsdata direkte på en side uden manuel deklaration eller ekstra konfiguration.

  • 🖨️ Ud objekt: Skriver data til bufferen og sender output til klienten via JspWriter strøm.
  • 📥 Anmodningsobjekt: En instans af HttpServletRequest, der henter parametre, headere og serveroplysninger ved hjælp af getParameter().
  • 📤 Svarobjekt: Implementerer HttpServletResponse til at indstille indholdstypen, tilføje cookies og omdirigere klienten.
  • 🇧🇷 Konfiguration og applikation: Config læser initialiseringsparametre fra web.xml; Applikationen deler kontekstdata på tværs af hele implementeringen.
  • 🗂️ Session og sidekontekst: Session bevarer brugerattributter på tværs af sider; PageContext administrerer attributter på tværs af side-, anmodnings-, sessions- og applikationsområder.
  • ⚠️ Undtagelsesobjekt: En Throwable, der kun er tilgængelig på fejlsider, der rapporterer runtime-fejl, f.eks. ArrayIndexOutOfBounds.

Hvad er JSP implicit objekt?

  • JSP implicitte objekter oprettes under oversættelsesfasen af ​​JSP til servlet'en.
  • Disse objekter kan bruges direkte i skriftletter, der går i servicemetoden.
  • De oprettes automatisk af containeren, og de kan tilgås ved hjælp af objekter.

Hvor mange implicitte objekter er tilgængelige i JSP?

Der er 9 typer af implicitte objekter tilgængelige i containeren:

  1. Out
  2. Anmod om
  3. Respons
  4. Config
  5. Anvendelse
  6. Session
  7. Sidekontekst
  8. Side
  9. undtagelse

Lad os studere en efter en

1) Ud

  • Out er et af de implicitte objekter til at skrive data til bufferen og sende output til klienten som svar
  • Out-objekt giver os adgang til servletens output-stream
  • Out er objektet for javax.servlet.jsp.jspWriter klasse
  • Mens du arbejder med servlet, vi har brug for printwriter-objekt

Eksempel:

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

Forklaring af koden:

Code Linje 11-12– ud bruges til at udskrive til outputstrøm

Når vi udfører ovenstående kode, får vi følgende output:

Ude i JSP

Output:

  • I outputtet får vi værdierne af num1 og num2

2) Anmodning

  • Anmodningsobjektet er en forekomst af java.servlet.http.HttpServletRequest, og det er et af argumentet for servicemetoden
  • Det vil blive oprettet af container for hver anmodning.
  • Det vil blive brugt til at anmode om oplysninger som parameter, headerinformation, servernavn osv.
  • Den bruger getParameter() til at få adgang til anmodningsparameteren.

Eksempel:

Implicit_jsp2.jsp(formular, hvorfra anmodningen sendes til 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 (hvor handlingen udføres)

Anmodning i JSP

Forklaring af kode:

Code Linje 10-13: I implicit_jsp2.jsp(form) sendes anmodningen, derfor behandles variablen brugernavn og sendes til guru.jsp, som er handling fra JSP.

Guru.jsp

Code Linje 10-11: Det er action jsp, hvor anmodningen behandles, og brugernavn er taget fra formen jsp.

Når du udfører ovenstående kode, får du følgende output

Output:

Anmodning i JSP

Når du skriver test og klikker på indsend-knappen, får du følgende output "Velkomsttest."

Anmodning i JSP

3) Svar

  • "Response" er en forekomst af klasse, der implementerer HttpServletResponse-grænsefladen
  • Container genererer dette objekt og sender til _jspservice()-metoden som parameter
  • "Responsobjekt" vil blive oprettet af containeren for hver anmodning.
  • Det repræsenterer den respons, der kan gives til klienten
  • Det implicitte svarobjekt bruges til indholdstype, tilføjelse af cookie og omdirigering til svarside

Eksempel:

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

Forklaring af koden:

Code Linje 11: I responsobjektet kan vi indstille indholdstypen

Her indstiller vi kun indholdstypen i responsobjektet. Derfor er der ikke noget output til dette.

4) Konfig

  • "Config" er af typen java.servlet.servletConfig
  • Den oprettes af containeren for hver jsp-side
  • Det bruges til at hente initialiseringsparameteren i web.xml

Eksempel:

Web.xml (angiver navn og kort)ping af servlet'en)

Konfigurer i JSP

Implicit_jsp5.jsp (henter værdien af ​​servletnavn)

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

Forklaring af koden:

I web.xml

Code Linje 14-17: I web.xml har vi et kortping af servlets til klasserne.

Implicit_jsp5.jsp

Code Linje 10-11: For at få navnet på servlet'en i JSP kan vi bruge config.getServletName, som vil hjælpe os med at få navnet på servlet'en.

Når du udfører ovenstående kode får du følgende output:

Svar i JSP

Output:

  • Servlet-navnet er "GuruServlet” som navnet findes i web.xml

5) Ansøgning

  • Applikationsobjekt (kodelinje 10) er en forekomst af javax.servlet.ServletContext, og det bruges til at hente kontekstinformation og attributter i JSP.
  • Applikationsobjekt oprettes af container én pr. applikation, når applikationen bliver implementeret.
  • Servletcontext-objektet indeholder et sæt metoder, der bruges til at interagere med servlet-beholderen. Vi kan finde information om servlet-beholderen

Eksempel:

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

Forklaring af koden:

  • I ovenstående kode hjælper applikationsattribut med at få kontekststien til JSP-siden.

6) Session

  • Sessionen holder "httpsession"-objektet (kodelinje 10).
  • Sessionsobjekt bruges til at hente, indstille og fjerne attributter til sessionsomfang og bruges også til at få sessionsoplysninger

Eksempel:

Implicit_jsp7 (attribut er indstillet)

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

Forklaring af koden:

Implicit_jsp7.jsp

Code Linje 11: vi indstiller attributten bruger i sessionsvariablen, og den værdi kan hentes fra sessionen i hvilken som helst jsp kaldes fra den (_jsp8.jsp).

Code Linje 12: Vi kalder en anden jsp på href, hvor vi får værdien for attributbruger, som er indstillet.

Implicit_jsp8.jsp

Code Linje 11: Vi får værdien af ​​brugerattributten fra sessionsobjektet og viser denne værdi

Når du udfører ovenstående kode, får du følgende output:

Session i JSP

Når du klikker på linket til brugernavnet. Du får følgende output.

Session i JSP

Output:

  • Når vi klikker på linket givet i implicit_jsp7.jsp, bliver vi omdirigeret til anden jsp-side, dvs. (_jsp8.jsp), og vi får værdien fra sessionsobjektet for brugerattributten (_jsp7.jsp).

7) Sidekontekst

  • Dette objekt er af typen sidekontekst.
  • Det bruges til at hente, indstille og fjerne attributterne fra et bestemt omfang

Omfang er af 4 typer:

  • Side
  • Anmod om
  • Session
  • Anvendelse

Eksempel:

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

Forklaring af koden:

Code Linje 11: vi indstiller attributten ved hjælp af pageContext-objektet, og den har tre parametre:

  • Nøgle
  • Værdi
  • Anvendelsesområde

I ovenstående kode er nøglen elev, og værdien er "gurustudent", mens omfanget er sideomfanget. Her er omfanget "side", og det kan kun bruge sideomfang.

Code Linje 12: Vi får værdien af ​​attributten ved hjælp af pageContext

Når du udfører ovenstående kode, får du følgende output:

PageContext i JSP

Output:

  • Outputtet vil udskrive "elev navn er gurustudent".

8) Side

  • Side implicit variabel indeholder det aktuelt udførte servlet-objekt for den tilsvarende jsp.
  • Fungerer som dette objekt for den aktuelle jsp-side.

Eksempel:

I dette eksempel bruger vi sideobjekt til at få sidenavnet ved hjælp af toString-metoden

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

Forklaring af koden:

Code Linje 10-11: I dette eksempel forsøger vi at bruge metoden toString() for sideobjektet og forsøger at hente strengnavnet på JSP-siden.

Når du udfører koden får du følgende output:

Side i JSP

Output:

  • Output er strengnavnet på ovenstående jsp-side

9) Undtagelse

  • Undtagelse er det implicitte objekt for den kastebare klasse.
  • Det bruges til undtagelseshåndtering i JSP.
  • Undtagelsesobjektet kan kun bruges på fejlsider.Eksempel:
<%@ 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>

Forklaring af koden:

Code Linje 10-12 – Den har en matrix af tal, dvs. num1 med fire elementer. I outputtet forsøger vi at udskrive det femte element i arrayet fra num1, som ikke er erklæret i arraylisten. Så det bruges til at få undtagelsesobjektet af jsp.

Output:

Undtagelse i JSP

Vi får ArrayIndexOfBoundsException i arrayet, hvor vi får et num1 array af det femte element.

Ofte Stillede Spørgsmål

Nej. Containeren opretter alle ni implicitte objekter automatisk under oversættelsesfasen. Udviklere kan bruge dem direkte i scriptlets og servicemetoden uden at importere pakker eller deklarere nogen variabler.

Nej. Implicitte objekter er kun tilgængelige i scriptlets og udtryk, der er knyttet til servicemetoden. De kan ikke bruges i JSP-deklarationstags, som genererer medlemmer på klasseniveau uden for den pågældende metode.

PageContext fungerer på tværs af alle fire scopes – page, request, session og application. Den tilbyder metoderne setAttribute, getAttribute og removeAttribute, hvilket gør den til det mest fleksible implicitte objekt til håndtering af data på tværs af forskellige scope-niveauer.

AI kan forklare hvert implicit objekt med eksempler, konvertere scriptlet-kode til renere alternativer og besvare spørgsmål om omfanget med det samme. Dette hjælper begyndere med at forstå, hvornår de skal bruge anmodnings-, sessions- eller applikationsobjekter korrekt.

Ja. AI-værktøjer kan generere fungerende JSP-snippets ved hjælp af out, request, session og andre implicitte objekter og derefter forklare hver linje. Udviklere bør stadig gennemgå outputtet for korrekt håndtering af omfang og sikkerhed.

Opsummer dette indlæg med: