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.