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.

Opsummer dette indlรฆg med: