JSP implicita objekt

Vad är JSP implicit objekt?

  • JSP implicita objekt skapas under översättningsfasen av JSP till servleten.
  • Dessa objekt kan direkt användas i skript som går i servicemetoden.
  • De skapas av behållaren automatiskt och de kan nås med hjälp av objekt.

Hur många implicita objekt är tillgängliga i JSP?

Det finns 9 typer av implicita objekt tillgängliga i behållaren:

  1. Out
  2. FÖRFRÅGAN
  3. Svar
  4. Konfig
  5. Ansökan
  6. Session Test
  7. Sidkontext
  8. Sida
  9. undantag

Låt oss studera en efter en

1) Ut

  • Ut är ett av de implicita objekten för att skriva data till bufferten och skicka utdata till klienten som svar
  • Out-objektet låter oss komma åt servletens utdataström
  • Out är föremål för javax.servlet.jsp.jspWriter-klassen
  • När du arbetar med servlett, vi behöver skrivarobjekt

Exempelvis:

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

Förklaring av koden:

Kodrad 11-12– ut används för att skriva ut till utdataström

När vi kör ovanstående kod får vi följande utdata:

Ute i JSP

Produktion:

  • I utgången får vi värdena för num1 och num2

2) Begäran

  • Begäranobjektet är en instans av java.servlet.http.HttpServletRequest och det är ett av argumenten för tjänstemetoden
  • Det kommer att skapas av behållare för varje begäran.
  • Den kommer att användas för att begära information som parameter, rubrikinformation, servernamn, etc.
  • Den använder getParameter() för att komma åt parametern begäran.

Exempelvis:

Implicit_jsp2.jsp(formulär från vilket förfrågan skickas till 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 (där åtgärden vidtas)

Begäran i JSP

Förklaring av kod:

Kodrad 10-13 : I implicit_jsp2.jsp(form) skickas begäran, därför bearbetas variabeln användarnamn och skickas till guru.jsp vilket är JSP:s åtgärd.

Guru.jsp

Kodrad 10-11: Det är action jsp där begäran behandlas, och användarnamnet är hämtat från formuläret jsp.

När du kör ovanstående kod får du följande utdata

Produktion:

Begäran i JSP

När du skriver test och klickar på skicka-knappen får du följande utdata "Välkomsttest."

Begäran i JSP

3) Svar

  • "Response" är en instans av klass som implementerar HttpServletResponse-gränssnittet
  • Container genererar detta objekt och skickar till metoden _jspservice() som parameter
  • "Svarsobjekt" kommer att skapas av behållaren för varje begäran.
  • Det representerar svaret som kan ges till klienten
  • Det implicita responsobjektet används för att innehållstyp, lägga till cookie och omdirigera till svarssida

Exempelvis:

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

Förklaring av koden:

Kodrad 11: I responsobjektet kan vi ställa in innehållstypen

Här ställer vi bara in innehållstypen i responsobjektet. Därför finns det ingen utgång för detta.

4) Konfig

  • "Config" är av typen java.servlet.servletConfig
  • Den skapas av behållaren för varje jsp-sida
  • Den används för att hämta initialiseringsparametern i web.xml

Exempelvis:

Web.xml (anger servletens namn och mappning)

Konfigurera i JSP

Implicit_jsp5.jsp (hämtar värdet av servletnamn)

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

Förklaring av koden:

I web.xml

Kodrad 14-17: I web.xml har vi mappning av servlets till klasserna.

Implicit_jsp5.jsp

Kodrad 10-11: För att få namnet på servleten i JSP kan vi använda config.getServletName, vilket hjälper oss att få namnet på servleten.

När du kör ovanstående kod får du följande utdata:

Svar i JSP

Produktion:

  • Servlets namn är "GuruServlet" eftersom namnet finns i web.xml

5) Ansökan

  • Application object (kodrad 10) är en instans av javax.servlet.ServletContext och det används för att hämta kontextinformationen och attributen i JSP.
  • Applikationsobjekt skapas av behållare en per applikation, när applikationen distribueras.
  • Servletcontext-objektet innehåller en uppsättning metoder som används för att interagera med servletbehållaren. Vi kan hitta information om servletbehållaren

Exempelvis:

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

Förklaring av koden:

  • I ovanstående kod hjälper applikationsattributet till att få kontextsökvägen till JSP-sidan.

6) Session

  • Sessionen innehåller objektet "httpsession" (kodrad 10).
  • Sessionsobjekt används för att hämta, ställa in och ta bort attribut till sessionsomfång och används även för att hämta sessionsinformation

Exempelvis:

Implicit_jsp7(attributet är 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>

Förklaring av koden:

Implicit_jsp7.jsp

Kodrad 11: vi ställer in attributet användare i sessionsvariabeln, och det värdet kan hämtas från sessionen i vilken jsp som helst anropas från den (_jsp8.jsp).

Kodrad 12: Vi anropar en annan jsp på href där vi kommer att få värdet för attribut användare som är satt.

Implicit_jsp8.jsp

Kodrad 11: Vi hämtar värdet av användarattributet från sessionsobjektet och visar det värdet

När du kör ovanstående kod får du följande utdata:

Session i JSP

När du klickar på länken för användarnamnet. Du kommer att få följande utdata.

Session i JSP

Produktion:

  • När vi klickar på länken som ges i implicit_jsp7.jsp omdirigeras vi till andra jsp-sidan, dvs (_jsp8.jsp) sida och vi får värdet från sessionsobjektet för användarattributet (_jsp7.jsp).

7) Sidkontext

  • Detta objekt är av typen sidkontext.
  • Den används för att hämta, ställa in och ta bort attributen från ett visst omfång

Omfattningarna är av 4 typer:

  • Sida
  • FÖRFRÅGAN
  • Session Test
  • Ansökan

Exempelvis:

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

Förklaring av koden:

Kodrad 11: vi ställer in attributet med hjälp av objektet pageContext, och det har tre parametrar:

  • Nyckel
  • Värderar
  • Omfattning

I ovanstående kod är nyckeln student och värdet är "gurustudent" medan omfattningen är sidomfattningen. Här är omfattningen "sida" och den kan endast användas med sidomfattning.

Kodrad 12: Vi får värdet av attributet med hjälp av pageContext

När du kör ovanstående kod får du följande utdata:

PageContext i JSP

Produktion:

  • Utdata kommer att skriva ut "studentens namn är gurustudent".

8) Sida

  • Sidans implicita variabel innehåller det för närvarande körda servletobjektet för motsvarande jsp.
  • Fungerar som detta objekt för aktuell jsp-sida.

Exempelvis:

I det här exemplet använder vi sidobjekt för att få sidnamnet med metoden toString

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

Förklaring av koden:

Kodrad 10-11: I det här exemplet försöker vi använda metoden toString() för sidobjektet och försöker få strängnamnet på JSP-sidan.

När du kör koden får du följande utdata:

Sida i JSP

Produktion:

  • Utdata är strängnamnet på ovanstående jsp-sida

9) Undantag

  • Undantag är det implicita objektet för den kastbara klassen.
  • Det används för undantagshantering i JSP.
  • Undantagsobjektet kan endast användas på felsidor.Exempelvis:
<%@ 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>

Förklaring av koden:

Kodrad 10-12 – Den har en array av tal, dvs num1 med fyra element. I utgången försöker vi skriva ut det femte elementet i arrayen från num1, som inte deklareras i arraylistan. Så det används för att få undantagsobjekt av jsp.

Produktion:

Undantag i JSP

Vi får ArrayIndexOfBoundsException i arrayen där vi får en num1 array av det femte elementet.