JSP impliciete objecten

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

Coderegel 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 ondernomen)

Verzoek in JSP

Toelichting code:

Coderegel 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

Coderegel 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:

Coderegel 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 toewijzing 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

Coderegel 14-17: In web.xml hebben we toewijzingen van servlets aan de klassen.

Impliciete_jsp5.jsp

Coderegel 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 naam van de servlet is “GuruServlet” zoals de naam aanwezig is 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

Coderegel 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).

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

Impliciete_jsp8.jsp

Coderegel 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
  • Aanvraag

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:

Coderegel 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.

Coderegel 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:

Coderegel 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:

Coderegel 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.