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.

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 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:
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:
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:
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:
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)
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:
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:
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:
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:
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:
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:
Vi fรฅr ArrayIndexOfBoundsException i arrayet, hvor vi fรฅr et num1 array af det femte element.











