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: