JSP impliciete objecten

โšก Slimme samenvatting

JSP Implicit Objects zijn vooraf gedefinieerde variabelen die de servletcontainer automatisch aanmaakt tijdens de paginatranslatie. Hierdoor hebben ontwikkelaars rechtstreeks binnen een pagina toegang tot uitvoerstromen, verzoeken, antwoorden, sessies en applicatiegegevens, zonder handmatige declaratie of extra configuratie.

  • ๐Ÿ–จ๏ธ Uitgaand object: Schrijft gegevens naar de buffer en stuurt de uitvoer via de JSP naar de client.Writer stream.
  • ๐Ÿ“ฅ Verzoekobject: Een instantie van HttpServletRequest die parameters, headers en serverdetails ophaalt met behulp van getParameter().
  • ๐Ÿ“ค Antwoordobject: Implementeert HttpServletResponse om het contenttype in te stellen, cookies toe te voegen en de client door te sturen.
  • โš™๏ธ Configuratie en toepassing: De configuratie leest initialisatieparameters uit web.xml; de applicatie deelt contextgegevens over de gehele implementatie.
  • ๐Ÿ—‚๏ธ Sessie en paginacontext: Een sessie bewaart gebruikerskenmerken over verschillende pagina's; PageContext beheert kenmerken op pagina-, verzoek-, sessie- en applicatieniveau.
  • โš ๏ธ Uitzonderingsobject: Een Throwable die alleen beschikbaar is op foutpagina's en die runtimefouten zoals ArrayIndexOutOfBounds rapporteert.

Wat is een impliciet JSP-object?

  • Impliciete JSP-objecten worden gemaakt tijdens de vertaalfase van JSP naar de servlet.
  • Deze objecten kunnen direct worden gebruikt in scriplets die bij de servicemethode horen.
  • Ze worden automatisch door de container gemaakt en zijn toegankelijk via objecten.

Hoeveel impliciete objecten zijn beschikbaar in JSP?

Er zijn 9 soorten impliciete objecten beschikbaar in de container:

  1. Uit
  2. Aanvraag
  3. antwoord
  4. Config
  5. Toepassing
  6. Sessie
  7. PaginaContext
  8. Pagina
  9. uitzondering

Laten we รฉรฉn voor รฉรฉn studeren

1) Uit

  • Out is een van de impliciete objecten om de gegevens naar de buffer te schrijven en als reactie hierop uitvoer naar de client te sturen
  • Met het Out-object hebben we toegang tot de uitvoerstroom van de servlet
  • Out is een object van javax.servlet.jsp.jspWriter klasse
  • Tijdens het werken met servet, we hebben een printwriter-object nodig

Voorbeeld:

<%@ 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>

Uitleg van de code:

Code Lijn 11-12โ€“ out wordt gebruikt om af te drukken in de uitvoerstroom

Wanneer we de bovenstaande code uitvoeren, krijgen we de volgende uitvoer:

Uit in JSP

Output:

  • In de uitvoer krijgen we de waarden van num1 en num2

2) Verzoek

  • Het verzoekobject is een exemplaar van java.servlet.http.HttpServletRequest en is een van de argumenten van de servicemethode
  • Het wordt voor elke aanvraag per container aangemaakt.
  • Het zal worden gebruikt om informatie op te vragen, zoals parameter, headerinformatie, servernaam, enz.
  • Het gebruikt getParameter() om toegang te krijgen tot de verzoekparameter.

Voorbeeld:

Implicit_jsp2.jsp(formulier van waaruit verzoek naar guru.jsp wordt verzonden)

<%@ 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 (waar de actie wordt uitgevoerd)

Verzoek in JSP

Toelichting code:

Code Regel 10-13: In implicit_jsp2.jsp(form) wordt een verzoek verzonden, vandaar dat de variabele gebruikersnaam wordt verwerkt en naar guru.jsp wordt verzonden, wat een actie van JSP is.

Guru.jsp

Code Regel 10-11: Het is actie-jsp waar het verzoek wordt verwerkt en de gebruikersnaam wordt overgenomen uit formulier jsp.

Wanneer u de bovenstaande code uitvoert, krijgt u de volgende uitvoer

Output:

Verzoek in JSP

Wanneer u een test schrijft en op de knop Verzenden klikt, krijgt u de volgende uitvoer: โ€œWelkom Test.โ€

Verzoek in JSP

3) Reactie

  • โ€œResponseโ€ is een instantie van een klasse die de HttpServletResponse-interface implementeert
  • Container genereert dit object en geeft het als parameter door aan de methode _jspservice().
  • Voor elk verzoek wordt door de container een โ€œResponse-objectโ€ aangemaakt.
  • Het vertegenwoordigt het antwoord dat aan de cliรซnt kan worden gegeven
  • Het impliciete responsobject wordt gebruikt voor het type inhoud, het toevoegen van een cookie en het omleiden naar de responspagina

Voorbeeld:

<%@ 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>

Uitleg van de code:

Code Regel 11: In het responsobject kunnen we het inhoudstype instellen

Hier stellen we alleen het inhoudstype in het responsobject in. Er is hier dus geen output voor.

4) Configuratie

  • โ€œConfigโ€ is van het type java.servlet.servletConfig
  • Het wordt door de container voor elke jsp-pagina gemaakt
  • Het wordt gebruikt om de initialisatieparameter in web.xml op te halen

Voorbeeld:

Web.xml (specificeert de naam en de kaart)ping van de servlet)

Configuratie in JSP

Implicit_jsp5.jsp (de waarde van de servletnaam ophalen)

<%@ 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>

Uitleg van de code:

In web.xml

Code Lijn 14-17: In web.xml hebben we een kaartping van servlets naar de klassen.

Impliciete_jsp5.jsp

Code Lijn 10-11: Om de naam van de servlet in JSP te krijgen, kunnen we config.getServletName gebruiken, wat ons zal helpen de naam van de servlet te achterhalen.

Wanneer u de bovenstaande code uitvoert, krijgt u de volgende uitvoer:

Reactie in JSP

Output:

  • De Servlet-naam is โ€œGuru"Servlet" zoals de naam voorkomt in web.xml

5) Toepassing

  • Applicatieobject (coderegel 10) is een exemplaar van javax.servlet.ServletContext en wordt gebruikt om de contextinformatie en attributen in JSP op te halen.
  • Er wordt รฉรฉn toepassingsobject per toepassing gemaakt door de container wanneer de toepassing wordt geรฏmplementeerd.
  • Het Servletcontext-object bevat een reeks methoden die worden gebruikt om te communiceren met de servletcontainer. We kunnen informatie vinden over de servletcontainer

Voorbeeld:

<%@ 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>

Uitleg van de code:

  • In de bovenstaande code helpt het applicatiekenmerk het contextpad van de JSP-pagina op te halen.

6) Sessie

  • De sessie bevat het object โ€œhttpsessionโ€ (coderegel 10).
  • Sessieobject wordt gebruikt om attributen voor het sessiebereik op te halen, in te stellen en te verwijderen en ook om sessie-informatie op te halen

Voorbeeld:

Impliciete_jsp7(attribuut is ingesteld)

<%@ 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>

Impliciete_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>

Uitleg van de code:

Impliciete_jsp7.jsp

Code Regel 11: we stellen het attribuut gebruiker in de sessievariabele in, en die waarde kan worden opgehaald uit de sessie in welke jsp dan ook wordt aangeroepen (_jsp8.jsp).

Code Regel 12: We roepen een andere jsp op href aan waarin we de waarde voor het attribuut user krijgen die is ingesteld.

Impliciete_jsp8.jsp

Code Regel 11: We halen de waarde van het gebruikerskenmerk op van het sessieobject en geven die waarde weer

Wanneer u de bovenstaande code uitvoert, krijgt u de volgende uitvoer:

Sessie in JSP

Wanneer u op de link voor de gebruikersnaam klikt, krijgt u de volgende output.

Sessie in JSP

Output:

  • Wanneer we op de link in impliciete_jsp7.jsp klikken, worden we doorgestuurd naar de tweede jsp-pagina, dat wil zeggen (_jsp8.jsp) pagina en krijgen we de waarde van het sessieobject van het gebruikersattribuut (_jsp7.jsp).

7) PaginaContext

  • Dit object is van het type pagecontext.
  • Het wordt gebruikt om de attributen van een bepaald bereik op te halen, in te stellen en te verwijderen

Er zijn 4 soorten scopes:

  • Pagina
  • Aanvraag
  • Sessie
  • Toepassing

Voorbeeld:

<%@ 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>

Uitleg van de code:

Code Regel 11: we stellen het attribuut in met behulp van het pageContext-object en het heeft drie parameters:

  • sleutel
  • Waarde
  • strekking

In de bovenstaande code is de sleutel student en is de waarde "gurustudent", terwijl het bereik het paginabereik is. Hier is het bereik โ€œpaginaโ€ en kan het alleen het paginabereik gebruiken.

Code Regel 12: We verkrijgen de waarde van het attribuut met behulp van pageContext

Wanneer u de bovenstaande code uitvoert, krijgt u de volgende uitvoer:

Paginacontext in JSP

Output:

  • De uitvoer zal de tekst โ€œstudentnaam is gurustudentโ€ weergeven.

8) Pagina

  • De impliciete paginavariabele bevat het momenteel uitgevoerde servletobject voor de overeenkomstige jsp.
  • Fungeert als dit object voor de huidige jsp-pagina.

Voorbeeld:

In dit voorbeeld gebruiken we het page-object om de paginanaam op te halen met behulp van de toString-methode

<%@ 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>

Uitleg van de code:

Code Lijn 10-11: In dit voorbeeld proberen we de methode toString() van het page-object te gebruiken en proberen we de stringnaam van de JSP-pagina op te halen.

Wanneer u de code uitvoert, krijgt u de volgende uitvoer:

Pagina in JSP

Output:

  • Uitvoer is de stringnaam van de bovenstaande jsp-pagina

9) Uitzondering

  • Uitzondering is het impliciete object van de werpbare klasse.
  • Je gebruikt het voor uitzonderingsafhandeling in JSP.
  • Het uitzonderingsobject kan alleen op foutpagina's worden gebruikt.Voorbeeld:
<%@ 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>

Uitleg van de code:

Code Lijn 10-12 โ€“ Het heeft een array van getallen, d.w.z. num1 met vier elementen. In de uitvoer proberen we het vijfde element van de array van num1 af te drukken, dat niet is gedeclareerd in de arraylijst. Het wordt dus gebruikt om het uitzonderingsobject van de jsp te krijgen.

Output:

Uitzondering in JSP

We krijgen ArrayIndexOfBoundsException in de array waar we een num1-array van het vijfde element krijgen.

Veelgestelde vragen

Nee. De container maakt alle negen impliciete objecten automatisch aan tijdens de vertaalfase. Ontwikkelaars kunnen ze direct gebruiken in scriptlets en de servicemethode zonder pakketten te importeren of variabelen te declareren.

Nee. Impliciete objecten zijn alleen beschikbaar binnen scriptlets en expressies die verwijzen naar de servicemethode. Ze kunnen niet worden gebruikt binnen JSP-declaratietags, die leden op klasseniveau genereren buiten die methode.

PageContext werkt op alle vier de niveaus: pagina, verzoek, sessie en applicatie. Het biedt de methoden setAttribute, getAttribute en removeAttribute, waardoor het het meest flexibele impliciete object is voor het beheren van gegevens op verschillende niveaus.

AI kan elk impliciet object met voorbeelden uitleggen, scriptlet-code omzetten in schonere alternatieven en direct antwoord geven op vragen over de reikwijdte. Dit helpt beginners te begrijpen wanneer ze de objecten request, session of application correct moeten gebruiken.

Ja. AI-tools kunnen werkende JSP-codefragmenten genereren met behulp van `out`, `request`, `session` en andere impliciete objecten, en vervolgens elke regel uitleggen. Ontwikkelaars moeten de uitvoer echter nog steeds controleren op correcte scope-afhandeling en beveiliging.

Vat dit bericht samen met: