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:

  1. Out
  2. Be
  3. Respons
  4. Config
  5. Sรธknad
  6. Session
  7. Sidekontekst
  8. Side
  9. 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:

Ut i JSP

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)

Forespรธrsel i JSP

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:

Forespรธrsel i JSP

Nรฅr du skriver test og klikker pรฅ send inn-knappen, fรฅr du fรธlgende utgang "Velkomsttest."

Forespรธrsel i JSP

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)

Konfigurer i JSP

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:

Svar i JSP

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:

Sesjon i JSP

Nรฅr du klikker pรฅ lenken for brukernavnet. Du vil fรฅ fรธlgende utgang.

Sesjon i JSP

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:

PageContext i JSP

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:

Side i JSP

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:

Unntak i JSP

Vi fรฅr ArrayIndexOfBoundsException i arrayen der vi fรฅr en num1 array av det femte elementet.

Oppsummer dette innlegget med: