JSP 암시적 객체
JSP 암시적 객체란 무엇입니까?
- JSP 암시적 객체는 JSP를 서블릿으로 변환하는 단계에서 생성됩니다.
- 이러한 개체는 서비스 메서드에 포함되는 스크립트에서 직접 사용할 수 있습니다.
- 컨테이너에 의해 자동으로 생성되며 개체를 사용하여 액세스할 수 있습니다.
JSP에서 사용할 수 있는 암시적 객체는 몇 개입니까?
컨테이너에는 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은 출력 스트림으로 인쇄하는 데 사용됩니다.
위 코드를 실행하면 다음과 같은 출력이 나옵니다.
출력:
- 출력에서 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(작업이 수행되는 위치)
코드 설명:
코드 라인 10-13: implicit_jsp2.jsp(form) 요청이 전송되므로 username 변수가 처리되어 JSP의 작업인 guru.jsp로 전송됩니다.
Guru.jsp
코드 라인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>
코드 설명:
코드 라인 11: 응답 객체에서 콘텐츠 유형을 설정할 수 있습니다.
여기서는 응답 개체의 콘텐츠 유형만 설정합니다. 따라서 이에 대한 출력이 없습니다.
4) 구성
- "구성"은 java.servlet.servletConfig 유형입니다.
- 각 JSP 페이지의 컨테이너에 의해 생성됩니다.
- web.xml에서 초기화 매개변수를 가져오는 데 사용됩니다.
예:
Web.xml(서블릿의 이름과 매핑 지정)
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을 사용할 수 있습니다. 이는 서블릿의 이름을 얻는 데 도움이 됩니다.
위 코드를 실행하면 다음과 같은 출력이 나옵니다.
출력:
- 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: 세션 개체에서 사용자 속성 값을 가져와 해당 값을 표시합니다.
위 코드를 실행하면 다음과 같은 출력이 나옵니다.
사용자 이름에 대한 링크를 클릭하면 다음과 같은 출력이 표시됩니다.
출력:
- 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를 사용하여 속성 값을 가져옵니다.
위 코드를 실행하면 다음과 같은 출력이 나옵니다.
출력:
- 출력에는 "학생 이름은 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 페이지의 문자열 이름입니다.
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의 예외 객체를 얻는 데 사용됩니다.
출력:
다섯 번째 요소의 num1 배열을 가져오는 배열에서 ArrayIndexOfBoundsException을 가져옵니다.