JSP implicitte objekter

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 objekt af javax.servlet.jsp.jspWriter-klassen
  • 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:

Kodelinje 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:

Kodelinje 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

Kodelinje 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:

Kodelinje 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 (specificerer servletens navn og tilknytning)

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

Kodelinje 14-17: I web.xml har vi mapping af servlets til klasserne.

Implicit_jsp5.jsp

Kodelinje 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", da navnet er til stede 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

Kodelinje 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).

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

Implicit_jsp8.jsp

Kodelinje 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:

Kodelinje 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.

Kodelinje 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:

Kodelinje 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:

Kodelinje 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.