JSP 암시적 객체
JSP 암시적 객체란 무엇입니까?
- JSP 암시적 객체는 JSP를 서블릿으로 변환하는 단계에서 생성됩니다.
- 이러한 개체는 서비스 메서드에 포함되는 스크립트에서 직접 사용할 수 있습니다.
- 컨테이너에 의해 자동으로 생성되며 개체를 사용하여 액세스할 수 있습니다.
JSP에서 사용할 수 있는 암시적 객체는 몇 개입니까?
컨테이너에는 9가지 유형의 암시적 개체가 있습니다.
- 아웃
- 의뢰
- 응답
- 구성
- 어플리케이션
- 세션
- 페이지컨텍스트
- 페이지
- 예외
하나씩 공부해보자
1) 아웃
- Out은 버퍼에 데이터를 쓰고 응답으로 클라이언트에 출력을 보내는 암묵적 객체 중 하나입니다.
- Out 객체를 사용하면 서블릿의 출력 스트림에 액세스할 수 있습니다.
- Out은 javax.servlet.jsp.jsp의 객체입니다.Writer 수업
- 작업하는 동안 서블릿, 인쇄기 개체가 필요합니다
예:
<%@ 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>
코드 설명:
Code 전화번호 11-12– out은 출력 스트림으로 인쇄하는 데 사용됩니다.
위 코드를 실행하면 다음과 같은 출력이 나옵니다.
출력:
- 출력에서 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 (실행되는 작업 영역)
코드 설명:
Code 10~13행: implicit_jsp2.jsp(form) 요청이 전송되므로 username 변수가 처리되어 JSP의 작업인 guru.jsp로 전송됩니다.
Guru.jsp
Code 10-11행: 요청이 처리되는 곳은 Action JSP이고 사용자 이름은 jsp 형식에서 가져옵니다.
위 코드를 실행하면 다음과 같은 출력이 나옵니다.
출력:
테스트를 작성하고 제출 버튼을 클릭하면 다음과 같은 출력인 "Welcome Test"가 표시됩니다.
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>
코드 설명:
Code 11 라인 : 응답 객체에서 콘텐츠 유형을 설정할 수 있습니다.
여기서는 응답 개체의 콘텐츠 유형만 설정합니다. 따라서 이에 대한 출력이 없습니다.
4) 구성
- "구성"은 java.servlet.servletConfig 유형입니다.
- 각 JSP 페이지의 컨테이너에 의해 생성됩니다.
- web.xml에서 초기화 매개변수를 가져오는 데 사용됩니다.
예:
Web.xml (이름과 맵을 지정합니다)ping 서블릿의)
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에서
Code 14-17행: web.xml에는 map이 있습니다.ping 클래스에 대한 서블릿.
Implicit_jsp5.jsp
Code 10-11행: JSP에서 서블릿의 이름을 얻으려면 config.getServletName을 사용할 수 있습니다. 이는 서블릿의 이름을 얻는 데 도움이 됩니다.
위 코드를 실행하면 다음과 같은 출력이 나옵니다.
출력:
- 서블릿 이름은 "Guru웹.xml 파일에 "Servlet"이라는 이름이 있습니다.
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
Code 11 라인 : 우리는 세션 변수에 user 속성을 설정하고 있으며 해당 값은 jsp가 호출되는 세션(_jsp8.jsp)에서 가져올 수 있습니다.
Code 12 라인 : 설정된 user 속성 값을 가져오는 href에서 또 다른 jsp를 호출합니다.
Implicit_jsp8.jsp
Code 11 라인 : 세션 개체에서 사용자 속성 값을 가져와 해당 값을 표시합니다.
위 코드를 실행하면 다음과 같은 출력이 나옵니다.
사용자 이름에 대한 링크를 클릭하면 다음과 같은 출력이 표시됩니다.
출력:
- 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>
코드 설명:
Code 11 라인 : pageContext 객체를 사용하여 속성을 설정하고 있으며 여기에는 세 가지 매개변수가 있습니다.
- 키
- 가치관
- 범위
위 코드에서 키는 학생이고 값은 "gurustudent"이고 범위는 페이지 범위입니다. 여기서 범위는 "페이지"이며 페이지 범위만 사용하여 가져올 수 있습니다.
Code 12 라인 : 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>
코드 설명:
Code 10-11행: 이 예에서는 페이지 개체의 toString() 메서드를 사용하여 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>
코드 설명:
Code 전화번호 10-12 – 숫자 배열, 즉 1개의 요소가 있는 num1이 있습니다. 출력에서 우리는 배열 목록에서 선언되지 않은 numXNUMX의 배열의 다섯 번째 요소를 인쇄하려고 합니다. 그래서 그것은 jsp의 예외 객체를 얻는 데 사용됩니다.
출력:
다섯 번째 요소의 num1 배열을 가져오는 배열에서 ArrayIndexOfBoundsException을 가져옵니다.











