JSP implisitte objekter

⚡ Smart oppsummering

Implisitte JSP-objekter er forhåndsdefinerte variabler som servlet-containeren oppretter automatisk under sideoversettelse, slik at utviklere kan få tilgang til utdatastrømmer, forespørsler, svar, økter og applikasjonsdata direkte inne i en side uten manuell deklarasjon eller ekstra konfigurasjon.

  • 🖨️ Ut-objekt: Skriver data til bufferen og sender utdata til klienten via JspWriter strøm.
  • 📥 Forespørselsobjekt: En forekomst av HttpServletRequest som henter parametere, overskrifter og serverdetaljer ved hjelp av getParameter().
  • 📤 Responsobjekt: Implementerer HttpServletResponse for å angi innholdstypen, legge til informasjonskapsler og omdirigere klienten.
  • ⚙️ Konfigurasjon og applikasjon: Config leser initialiseringsparametere fra web.xml; Programmet deler kontekstdata på tvers av hele distribusjonen.
  • 🗂️ Økt og sidekontekst: Økten lagrer brukerattributter på tvers av sider, mens PageContext administrerer attributter på tvers av side-, forespørsels-, økt- og applikasjonsomfang.
  • ⚠️ Unntaksobjekt: En Throwable som bare er tilgjengelig på feilsider som rapporterer kjøretidsfeil, for eksempel ArrayIndexOutOfBounds.

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 objektet til javax.servlet.jsp.jspWriter klasse
  • 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:

Code Linje 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 (der handlingen utføres)

Forespørsel i JSP

Forklaring av kode:

Code Linje 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

Code Linje 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:

Code Linje 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 (angir navn og kart)ping 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

Code Linje 14-17: I web.xml har vi kartping av servleter til klassene.

Implisitt_jsp5.jsp

Code Linje 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:

  • Servletnavnet er «GuruServlet» slik 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

Code Linje 11: vi setter attributtet bruker i sesjonsvariabelen, og den verdien kan hentes fra sesjonen i hvilken som helst jsp kalles fra den (_jsp8.jsp).

Code Linje 12: Vi kaller en annen jsp på href der vi får verdien for attributt bruker som er satt.

Implisitt_jsp8.jsp

Code Linje 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:

Code Linje 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.

Code Linje 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:

Code Linje 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:

Code Linje 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.

Spørsmål og svar

Nei. Beholderen oppretter alle ni implisitte objekter automatisk i løpet av oversettelsesfasen. Utviklere kan bruke dem direkte i scriptlets og servicemetoden uten å importere pakker eller deklarere noen variabler.

Nei. Implisitte objekter er bare tilgjengelige i skriptletter og uttrykk som er tilordnet servicemetoden. De kan ikke brukes i JSP-deklarasjonskoder, som genererer medlemmer på klassenivå utenfor den metoden.

PageContext fungerer på tvers av alle fire omfang – side, forespørsel, økt og applikasjon. Den tilbyr metodene setAttribute, getAttribute og removeAttribute, noe som gjør den til det mest fleksible implisitte objektet for å administrere data på tvers av ulike omfangsnivåer.

AI kan forklare hvert implisitt objekt med eksempler, konvertere scriptlet-kode til renere alternativer og svare på spørsmål om omfang umiddelbart. Dette hjelper nybegynnere med å forstå når de skal bruke forespørsels-, økt- eller applikasjonsobjektene riktig.

Ja. AI-verktøy kan generere fungerende JSP-snutter ved hjelp av out, request, session og andre implisitte objekter, og deretter forklare hver linje. Utviklere bør fortsatt gjennomgå utdataene for riktig håndtering av omfang og sikkerhet.

Oppsummer dette innlegget med: