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:
- Out
- Anmod om
- Respons
- Config
- Anvendelse
- Session
- Sidekontekst
- Side
- 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:
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)
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:
Nรฅr du skriver test og klikker pรฅ indsend-knappen, fรฅr du fรธlgende output "Velkomsttest."
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)
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:
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:
Nรฅr du klikker pรฅ linket til brugernavnet. Du fรฅr fรธlgende output.
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:
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:
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:
Vi fรฅr ArrayIndexOfBoundsException i arrayet, hvor vi fรฅr et num1 array af det femte element.











