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.