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.












