JSP implisitte objekter
Hva er JSP implisitt objekt?
- JSP implisitte objekter opprettes under oversettelsesfasen av JSP til servleten.
- Disse objektene kan brukes direkte i skriftletter som går i tjenestemetoden.
- De opprettes av containeren automatisk, og de kan nås ved hjelp av objekter.
Hvor mange implisitte objekter er tilgjengelige i JSP?
Det er 9 typer implisitte objekter tilgjengelig i beholderen:
- Out
- Be
- Respons
- Config
- Søknad
- Session
- Sidekontekst
- Side
- Unntak
La oss studere en etter en
1) Ut
- Ut er et av de implisitte objektene for å skrive dataene til bufferen og sende utdata til klienten som svar
- Out-objektet lar oss få tilgang til servletens utdatastrøm
- Out er gjenstand for javax.servlet.jsp.jspWriter-klassen
- Mens du jobber med servlett, vi trenger 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 av koden:
Kodelinje 11-12– ut brukes til å skrive ut til utdatastrøm
Når vi kjører koden ovenfor, får vi følgende utgang:
Utgang:
- I utgangen får vi verdiene num1 og num2
2) Forespørsel
- Forespørselsobjektet er en forekomst av java.servlet.http.HttpServletRequest, og det er et av argumentene for tjenestemetoden
- Det vil bli opprettet av container for hver forespørsel.
- Den vil bli brukt til å be om informasjon som parameter, overskriftsinformasjon, servernavn osv.
- Den bruker getParameter() for å få tilgang til forespørselsparameteren.
Eksempel:
Implicit_jsp2.jsp(skjema som forespørselen sendes fra 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 utføres)
Forklaring av kode:
Kodelinje 10-13 : I implicit_jsp2.jsp(form) sendes forespørselen, derfor blir variabelen brukernavn behandlet og sendt til guru.jsp som er handlingen til JSP.
Guru.jsp
Kodelinje 10-11: Det er handling jsp der forespørselen behandles, og brukernavn er hentet fra skjemaet jsp.
Når du utfører koden ovenfor, får du følgende utgang
Utgang:
Når du skriver test og klikker på send inn-knappen, får du følgende utgang "Velkomsttest."
3) Respons
- "Response" er en forekomst av klasse som implementerer HttpServletResponse-grensesnittet
- Container genererer dette objektet og sender til _jspservice()-metoden som parameter
- "Responsobjekt" vil bli opprettet av beholderen for hver forespørsel.
- Det representerer responsen som kan gis til klienten
- Det implisitte responsobjektet brukes til innholdstype, legge til informasjonskapsel og omdirigere til svarsiden
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 av koden:
Kodelinje 11: I responsobjektet kan vi sette innholdstypen
Her setter vi kun innholdstypen i responsobjektet. Derfor er det ingen utgang for dette.
4) Konfig
- "Config" er av typen java.servlet.servletConfig
- Den lages av beholderen for hver jsp-side
- Den brukes til å hente initialiseringsparameteren i web.xml
Eksempel:
Web.xml (spesifiserer navnet og tilordningen av servleten)
Implicit_jsp5.jsp (henter verdien av servletnavnet)
<%@ 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 av koden:
I web.xml
Kodelinje 14-17: I web.xml har vi mapping av servlets til klassene.
Implisitt_jsp5.jsp
Kodelinje 10-11: For å få navnet på servleten i JSP kan vi bruke config.getServletName, som vil hjelpe oss å få navnet på servleten.
Når du kjører koden ovenfor får du følgende utgang:
Utgang:
- Servlet-navnet er "GuruServlet" ettersom navnet finnes i web.xml
5) Søknad
- Applikasjonsobjekt (kodelinje 10) er en forekomst av javax.servlet.ServletContext og den brukes til å hente kontekstinformasjonen og attributtene i JSP.
- Applikasjonsobjekt opprettes av container én per applikasjon, når applikasjonen blir distribuert.
- Servletcontext-objektet inneholder et sett med metoder som brukes til å samhandle med servlet-beholderen. Vi kan finne informasjon 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 av koden:
- I koden ovenfor hjelper applikasjonsattributtet med å få kontekstbanen til JSP-siden.
6) Sesjon
- Sesjonen inneholder "httpsession"-objektet (kodelinje 10).
- Sesjonsobjekt brukes til å hente, angi og fjerne attributter til sesjonsomfang og brukes også til å få øktinformasjon
Eksempel:
Implicit_jsp7(attributtet er satt)
<%@ 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 av koden:
Implisitt_jsp7.jsp
Kodelinje 11: vi setter attributtet bruker i sesjonsvariabelen, og den verdien kan hentes fra sesjonen i hvilken som helst jsp kalles fra den (_jsp8.jsp).
Kodelinje 12: Vi kaller en annen jsp på href der vi får verdien for attributt bruker som er satt.
Implisitt_jsp8.jsp
Kodelinje 11: Vi henter verdien av brukerattributtet fra sesjonsobjektet og viser den verdien
Når du kjører koden ovenfor, får du følgende utgang:
Når du klikker på lenken for brukernavnet. Du vil få følgende utgang.
Utgang:
- Når vi klikker på lenken gitt i implicit_jsp7.jsp, blir vi omdirigert til andre jsp-side, dvs. (_jsp8.jsp)-siden og vi får verdien fra sesjonsobjektet til brukerattributtet (_jsp7.jsp).
7) Sidekontekst
- Dette objektet er av typen sidekontekst.
- Den brukes til å hente, angi og fjerne attributtene fra et bestemt omfang
Omfang er av 4 typer:
- Side
- Be
- Session
- Søknad
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 av koden:
Kodelinje 11: vi setter attributtet ved å bruke pageContext-objektet, og det har tre parametere:
- nøkkel
- Verdi
- Omfang
I koden ovenfor er nøkkelen student og verdien er "gurustudent" mens omfanget er sideomfanget. Her er omfanget "side", og det kan kun brukes ved å bruke sideomfang.
Kodelinje 12: Vi får verdien av attributtet ved å bruke pageContext
Når du kjører koden ovenfor, får du følgende utgang:
Utgang:
- Utdataene vil skrive ut "studentnavn er gurustudent".
8) Side
- Side implisitt variabel inneholder det gjeldende utførte servlet-objektet for den tilsvarende jsp.
- Fungerer som dette objektet for gjeldende jsp-side.
Eksempel:
I dette eksemplet bruker vi sideobjekt for å få sidenavnet ved å bruke 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 av koden:
Kodelinje 10-11: I dette eksemplet prøver vi å bruke metoden toString() til sideobjektet og prøver å få strengnavnet til JSP-siden.
Når du kjører koden får du følgende utgang:
Utgang:
- Utdata er strengnavnet på jsp-siden ovenfor
9) Unntak
- Unntak er det implisitte objektet til den kastbare klassen.
- Den brukes til unntakshåndtering i JSP.
- Unntaksobjektet kan kun brukes på feilsider.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 av koden:
Kodelinje 10-12 – Den har en rekke tall, dvs. num1 med fire elementer. I utgangen prøver vi å skrive ut det femte elementet i matrisen fra num1, som ikke er deklarert i matriselisten. Så det brukes til å få unntaksobjekt av jsp.
Utgang:
Vi får ArrayIndexOfBoundsException i arrayen der vi får en num1 array av det femte elementet.