JSP 암시적 객체

JSP 암시적 객체란 무엇입니까?

  • JSP 암시적 객체는 JSP를 서블릿으로 변환하는 단계에서 생성됩니다.
  • 이러한 개체는 서비스 메서드에 포함되는 스크립트에서 직접 사용할 수 있습니다.
  • 컨테이너에 의해 자동으로 생성되며 개체를 사용하여 액세스할 수 있습니다.

JSP에서 사용할 수 있는 암시적 객체는 몇 개입니까?

컨테이너에는 9가지 유형의 암시적 개체가 있습니다.

  1. 아웃
  2. 의뢰
  3. 응답
  4. 구성
  5. 어플리케이션
  6. 세션
  7. 페이지컨텍스트
  8. 페이지
  9. 예외

하나씩 공부해보자

1) 아웃

  • Out은 버퍼에 데이터를 쓰고 응답으로 클라이언트에 출력을 보내는 암묵적 객체 중 하나입니다.
  • Out 객체를 사용하면 서블릿의 출력 스트림에 액세스할 수 있습니다.
  • Out은 javax.servlet.jsp.jspWriter 클래스의 객체입니다.
  • 작업하는 동안 서블릿, 인쇄기 개체가 필요합니다

예:

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

코드 설명:

코드 라인 11-12– out은 출력 스트림으로 인쇄하는 데 사용됩니다.

위 코드를 실행하면 다음과 같은 출력이 나옵니다.

JSP로 나가기

출력:

  • 출력에서 num1과 num2의 값을 얻습니다.

2) 요청

  • 요청 객체는 java.servlet.http.HttpServletRequest의 인스턴스이며 서비스 메소드의 인수 중 하나입니다.
  • 모든 요청에 ​​대해 컨테이너에 의해 생성됩니다.
  • 매개변수, 헤더 정보, 서버 이름 등과 같은 정보를 요청하는 데 사용됩니다.
  • 요청 매개변수에 액세스하기 위해 getParameter()를 사용합니다.

예:

Implicit_jsp2.jsp(요청이 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(작업이 수행되는 위치)

JSP로 요청

코드 설명:

코드 라인 10-13: implicit_jsp2.jsp(form) 요청이 전송되므로 username 변수가 처리되어 JSP의 작업인 guru.jsp로 전송됩니다.

Guru.jsp

코드 라인10-11: 요청이 처리되는 곳은 Action JSP이고 사용자 이름은 jsp 형식에서 가져옵니다.

위 코드를 실행하면 다음과 같은 출력이 나옵니다.

출력:

JSP로 요청

테스트를 작성하고 제출 버튼을 클릭하면 다음과 같은 출력인 "Welcome Test"가 표시됩니다.

JSP로 요청

3) 응답

  • "Response"는 HttpServletResponse 인터페이스를 구현하는 클래스의 인스턴스입니다.
  • 컨테이너는 이 객체를 생성하고 _jspservice() 메소드에 매개변수로 전달합니다.
  • "응답 개체"는 각 요청에 대해 컨테이너에 의해 생성됩니다.
  • 클라이언트에게 제공할 수 있는 응답을 나타냅니다.
  • 응답 암시적 개체는 콘텐츠 유형, 쿠키 추가 및 응답 페이지로 리디렉션하는 데 사용됩니다.

예:

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

코드 설명:

코드 라인 11: 응답 객체에서 콘텐츠 유형을 설정할 수 있습니다.

여기서는 응답 개체의 콘텐츠 유형만 설정합니다. 따라서 이에 대한 출력이 없습니다.

4) 구성

  • "구성"은 java.servlet.servletConfig 유형입니다.
  • 각 JSP 페이지의 컨테이너에 의해 생성됩니다.
  • web.xml에서 초기화 매개변수를 가져오는 데 사용됩니다.

예:

Web.xml(서블릿의 이름과 매핑 지정)

JSP에서 구성

Implicit_jsp5.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 JSP5</title>
</head>
<body>
<% String servletName = config.getServletName();
out.println("Servlet Name is " +servletName);%>
</body>
</html>

코드 설명:

web.xml에서

코드 라인 14-17: web.xml에는 서블릿을 클래스에 매핑합니다.

Implicit_jsp5.jsp

코드 라인 10-11: JSP에서 서블릿의 이름을 얻으려면 config.getServletName을 사용할 수 있습니다. 이는 서블릿의 이름을 얻는 데 도움이 됩니다.

위 코드를 실행하면 다음과 같은 출력이 나옵니다.

JSP의 응답

출력:

  • web.xml에 이름이 있으므로 서블릿 이름은 "GuruServlet"입니다.

5) 신청

  • 애플리케이션 객체(코드 라인 10)는 javax.servlet.ServletContext의 인스턴스이며 JSP에서 컨텍스트 정보와 속성을 가져오는 데 사용됩니다.
  • 애플리케이션 객체는 애플리케이션이 배포될 때 컨테이너에 의해 애플리케이션당 하나씩 생성됩니다.
  • Servletcontext 객체에는 서블릿 컨테이너와 상호 작용하는 데 사용되는 일련의 메소드가 포함되어 있습니다. 서블릿 컨테이너에 대한 정보를 찾을 수 있습니다

예:

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

코드 설명:

  • 위 코드에서 애플리케이션 속성은 JSP 페이지의 컨텍스트 경로를 가져오는 데 도움이 됩니다.

6) 세션

  • 세션은 "httpsession" 개체(코드 라인 10)를 보유하고 있습니다.
  • 세션 개체는 세션 범위에 대한 속성을 가져오고 설정하고 제거하는 데 사용되며 세션 정보를 가져오는 데에도 사용됩니다.

예:

Implicit_jsp7(속성이 설정됨)

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

코드 설명:

Implicit_jsp7.jsp

코드 라인 11: 우리는 세션 변수에 user 속성을 설정하고 있으며 해당 값은 jsp가 호출되는 세션(_jsp8.jsp)에서 가져올 수 있습니다.

코드 라인 12: 설정된 user 속성 값을 가져오는 href에서 또 다른 jsp를 호출합니다.

Implicit_jsp8.jsp

코드 라인 11: 세션 개체에서 사용자 속성 값을 가져와 해당 값을 표시합니다.

위 코드를 실행하면 다음과 같은 출력이 나옵니다.

JSP의 세션

사용자 이름에 대한 링크를 클릭하면 다음과 같은 출력이 표시됩니다.

JSP의 세션

출력:

  • implicit_jsp7.jsp에 제공된 링크를 클릭하면 두 번째 jsp 페이지, 즉 (_jsp8.jsp) 페이지로 리디렉션되고 사용자 속성(_jsp7.jsp)의 세션 개체에서 값을 가져옵니다.

7) 페이지 컨텍스트

  • 이 개체는 페이지 컨텍스트 유형입니다.
  • 특정 범위에서 속성을 가져오고 설정하고 제거하는 데 사용됩니다.

범위는 4가지 유형이 있습니다.

  • 페이지
  • 의뢰
  • 세션
  • 어플리케이션

예:

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

코드 설명:

코드 라인 11: pageContext 객체를 사용하여 속성을 설정하고 있으며 여기에는 세 가지 매개변수가 있습니다.

  • 가치관
  • 범위

위 코드에서 키는 학생이고 값은 "gurustudent"이고 범위는 페이지 범위입니다. 여기서 범위는 "페이지"이며 페이지 범위만 사용하여 가져올 수 있습니다.

코드 라인 12: pageContext를 사용하여 속성 값을 가져옵니다.

위 코드를 실행하면 다음과 같은 출력이 나옵니다.

JSP의 PageContext

출력:

  • 출력에는 "학생 이름은 gurustudent"가 인쇄됩니다.

8) 페이지

  • 페이지 암시적 변수는 해당 jsp에 대해 현재 실행되는 서블릿 객체를 보유합니다.
  • 현재 JSP 페이지에 대해 이 객체로 작동합니다.

예:

이 예에서는 페이지 개체를 사용하여 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>

코드 설명:

코드 라인 10-11: 이 예에서는 페이지 개체의 toString() 메서드를 사용하여 JSP 페이지의 문자열 이름을 가져오려고 합니다.

코드를 실행하면 다음과 같은 출력이 표시됩니다.

JSP의 페이지

출력:

  • 출력은 위 JSP 페이지의 문자열 이름입니다.

9) 예외

  • Exception은 던질 수 있는 클래스의 암시적 객체입니다.
  • 사용됩니다 JSP의 예외 처리.
  • 예외 개체는 오류 페이지에서만 사용할 수 있습니다.예:
<%@ 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>

코드 설명:

코드 라인 10-12 – 숫자 배열, 즉 1개의 요소가 있는 num1이 있습니다. 출력에서 ​​우리는 배열 목록에서 선언되지 않은 numXNUMX의 배열의 다섯 번째 요소를 인쇄하려고 합니다. 그래서 그것은 jsp의 예외 객체를 얻는 데 사용됩니다.

출력:

JSP의 예외

다섯 번째 요소의 num1 배열을 가져오는 배열에서 ArrayIndexOfBoundsException을 가져옵니다.