Rylah's Study & Daily Life

07. JSP Page Implicit Object 본문

Web Study/JSP

07. JSP Page Implicit Object

Rylah 2022. 3. 19. 15:42

1. 내장 객체(Implicit Object)

  • 내장객체는 JSP 페이지 내에서 제공하는 특수한 레퍼런스 타입의 변수(또는 객체)로 사용하고자 하는 변수와 메소드로 접근
  • JSP 페이지에서 사용하게 되는 특수한 레퍼런스 타입의 변수가 아무런 선언과 객체 생성 없이 사용할 수 있음.

2. 내장 객체(Implicit Object)의 종류

내장 객체 리턴 타입(Return Type) 설명
request javax.servlet.http.HttpServletRequest
javax.servlet.ServletRequest
웹 브라우저의 요청 정보를 저장하고 있는 객체
response javax.servlet.http.HttpServletResponse
javax.servlet.ServletResponse
웹 브라우저의 요청에 대한 응답 정보를 저장하고 있는 객체
out javax.servlet.jsp.JspWriter JSP 페이지를 출력할 내용을 가지고 있는 출력 스트림 객체
session javax.servlet.http.HttpSession 하나의 웹 브라우저 내에서 정보를 유지하기 위한 세션 저장 객체
application javax.servlet.ServletContext 웹 애플리케이션 Context의 정보를 저장하고 있는 객체
page Context javax.servlet.jsp.PageContext JSP에 대한 정보를 저장하고 있는 객체
page java.lang.Object JSP 페이지를 구현한 자바 클래스 객체
config javax.servlet.ServletConfig JSP 페이지에 대한 설명 정보를 저장하고 있는 객체
exception java.lang.Throwable JSP 페이지에서 예외가 발생한 경우 사용하는 객체

 

request 내장객체

메소드 : 리턴 타입 설명
getProtocol() : String 웹 서버로 요청시, 사용 중인 프로토콜을 리턴
getServerName() : String 웹 서버로 요청시, 서버의 도메인 이름을 리턴
getMethod() : String 웹 서버로 요청시, 요청에 사용된 요청 방식(Get, Post, put..)을 리턴
getQueryString() : String 웹 서버로 요청시, 요청에 사용된 QueryString을 리턴
getRequestURI() : String 웹 서버로 요청시, 요청에 사용된 URL로 부터 URI 값을 리턴
getRemoteHost() : String 웹 서버로 정보를 요청한 웹 브라우저의 호스트 이름을 리턴
getRemoteAddr() : String 웹 서버로 정보를 요청한 웹 브라우저의 IP 주소를 리턴
getServverPort() : int 웹 서버로 요청시, 서버의  Port 번호를 리턴
getContextPath() : String 해당 JSP 페이지가 속한 웹 애플리케이션 Context Path를 리턴
getHeader(name) : String 웹 서버로 요청시, HTTP 요청 헤더(header) 헤더 이름 name에 해당하는 속성 값을 리턴
getHeaderNames() : Enumeration 웹 서버로 요청시, HTTP 요청 헤더(header에 있는 모든 헤더 이름을 리턴

response 내장 객체

메소드 설명
void setHeader(name, value) 헤더 정보의 값을 수정하는 메소드, name에 해당하는 정보를 value 값으로 설정
void setContentType(type) 웹 브라우저 요청의 결과로 보일 페이지의 ContentType을 설정
void sendRedirect(url) 페이지를 이동시키는 메소드, url로 주어진 페이지로 제어가 이동

out 내장 객체

메소드 설명
boolean isAutoFlush() 출력 버퍼가 다 찼을 때 처리 여부를 결정, 자동인 경우 true, 아니면 false
int getBufferSize() 출력 버퍼의 전체 크기를 리턴
int getRemaining() 현재 남아 있는 출력 버퍼의 크기를 리턴
void clearBuffer() 현재 출력 버퍼에 저장되어 있는 내용을 웹 브라우저에 전송하지 않고 비움
String println(str) 주어진 str 값을 웹 브라우저에 출력. 이때 줄바꿈은 적용되지 않음
void flush() 현재 출력 버퍼에 저장되어있는 내용을 웹 브라우저에 전송하고 비움
void close() 현재 출력 버퍼에 저장되어 있는 내용을 웹 브라우저에 전송하고 출력 스트림을 닫음

pageContext 내장 객체

메소드 : 리턴 타입 설명
getRequest() : ServletRequest 페이지 요청 정보를 가지고 있는 request 내장 객체를 리턴
getResponse() : ServletResponse 페이지 요청에 대한 응답 정보를 가지고 있는 response 내장 객체를 리턴
getOut() : JapWriter 페이지 요청에 대한 출력 스트림인 out 내장 객체를 리턴
getSession() : HttpSession 요청한 웹 브라우저의 세션 정보를 담고 있는 session 내장 객체를 리턴
getServletContext() : ServletContext 페이지에 대한 서블릿 실행 환경 정보를 담고 있는 application 내장 객체를 리턴
getPage() : Object page 내장 객체를 리턴
getServletConfig() : ServletConfig 해당 페이지의 서블릿 초기 정보 설정을 담고 있는 config 내장 객체 생성
getException() : Exception 실행 중에 발생하는 에러 페이지에 대한 예외 정보를 가진 exception 내장 객체 리턴

session 내장 객체

메소드 : 리턴 타입 설명
getId() : String 웹 브라우저에 대한 고유한 세션 ID를 리턴
getCreationTime() : long 해당 세션이 생성된 시간을 리턴
getLastAccessedTime() : long 웹 브라우저 요청이 시도된 마지막 접근 시간을 리턴
setMaxInactiveInterval(time) : void 해당 세션을 유지할 시간을 초단위로 설정
getMaxInactiveInterval() : int 기본 값은 30분으로 setMaxInactiveInterval(time)로 지정된 값을 리턴
isNew() : boolean 현재 웹 브라우저가 새로 로딩된 세션의 경우 true 값을 리턴
invalidate() : void 현재 정보의 유지로 설정된 세션의 속성 값을 모두 제거, 세션 무효화에 사용

application 내장 객체

메소드 : 리턴 타입 설명
getServerInfo() : String 웹 컨테이너의 이름과 버전을 리턴
getMimeType(fileName) : String 지정한 파일의 MIME 타입을 리턴
RealPath(path) : String 지정한 경로르레 웹 애플리케이션 시스템상의 경로로 변경하여 리턴
log(message) : void 로그 파일에 message를 기록

config 내장 객체

메소드 : 리턴 타입 설명
getInitParameterNames() : Enumeration  모든 초기화 파라미터 이름을 리턴
getInitParameter(name) : String 이름이 name인 초기화 파라미터 값을 리턴
getServletName() : String 서블릿 이름을 리턴
getServletContext() : ServletContext 실행하는 서블릿 ServletContext 객체를 리턴

page 내장 객체

 - JSP 그 자체를 나타내는 객체, this로 자기 자신 참조 가능

 - 웹 컨테이너는 Java만을 스크립트 언어로 지원, 다른 언어를 허용하려면 page 객체를 참조할 수 있음

 

exception 내장 객체

 - JSP 페이지에서 예외가 발생할 경우, 예외를 처리할 페이지에 전달되는 객체

 - exception 객체는 page Directive에 isErrorPage 속성을 true로 지정한 JSP 페이지에서만 사용 가능

메소드 : 리턴 타입 설명
getMessage() : String 발생한 예외의 메시지를 리턴
toString() : String 발생한 예외 클래스명과 메시지를 리턴
printStackTrace() : String 발생한 예외를 역추적하기 위해 표준 예외 스트림을 출력, 예외 발생할 곳을 찾을 때 사용

 

3. 내장 객체(Implicit Object)의 영역(Scope)

  • 웹 애플리케이션은 page, request, session, application이라는 4개의 영역을 가지고 있다. 기본 객체 영역은 객체의 유효기간이라고 부르며, 객체를 누구와 공유할 것인가를 나타낸다.
  • page 영역은 웹 브라우저의 요청이 들어오면 이때 단 한 개의 페이지만 대응이 된다. 따라서 page 영역은 객체를 하나의 페이지 내에서만 공유한다.
  • request 영역은 한 번의 웹 브라우저(클라이언트)의 요청에 대해 같은 요청을 공유하는 페이지가 대응된다. 따라서 웹 브라우저의 한 번의 요청에 단지 한 개의 페이지만 요청될 수 이쏙, 때에 따라 같은 request 영역이면 두 개의 페이지가 같은 요청을 공유할 수 있다.
  • session 영역은 하나의 웹 브라우저 당 1개의 session 객체가 생성된다. 즉, 같은 웹 브라우저 내에서 요청되는 페이지들은 같은 객체를 공유한다.
  • application 영역은 하나의 웹 애플리케이션 당 1개의 application 객체가 생성된다. 즉, 같은 웹 애플리케이션에 요청되는 페이지들은 같은 객체를 공유한다.

 

 

1. JSP 페이지 내에서 제공하는 9개의 내장 객체를 나열하고 그 객체가 하는 일을 간단히 기술하시오.

내장 객체 리턴 타입(Return Type) 설명
request javax.servlet.http.HttpServletRequest
javax.servlet.ServletRequest
웹 브라우저의 요청 정보를 저장하고 있는 객체
response javax.servlet.http.HttpServletResponse
javax.servlet.ServletResponse
웹 브라우저의 요청에 대한 응답 정보를 저장하고 있는 객체
out javax.servlet.jsp.JspWriter JSP 페이지를 출력할 내용을 가지고 있는 출력 스트림 객체
session javax.servlet.http.HttpSession 하나의 웹 브라우저 내에서 정보를 유지하기 위한 세션 저장 객체
application javax.servlet.ServletContext 웹 애플리케이션 Context의 정보를 저장하고 있는 객체
page Context javax.servlet.jsp.PageContext JSP에 대한 정보를 저장하고 있는 객체
page java.lang.Object JSP 페이지를 구현한 자바 클래스 객체
config javax.servlet.ServletConfig JSP 페이지에 대한 설명 정보를 저장하고 있는 객체
exception java.lang.Throwable JSP 페이지에서 예외가 발생한 경우 사용하는 객체

 

2. 속성 값을 저장하고 읽을 수 있는 메소드인 setAttribute() 메소드와 getAttribute 메소드를 제공하는 내장 객체는?

 - request, session, application, pageContext

 

3. 다음은 학번 이름 전공을 입력해서 화면에 표시하는 프로그램이다. problem07_03_fom.jsp의 소스와 problem07_03Pro.jsp 페이지의 소스가 제공되어있다 이 소스들을 완성하고 실행하세요.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>07_03 입력</title>
</head>
<body>
    <h2>정보를 입력하세요</h2>
    
    <form method="post" action="problem07_03Pro.jsp">
    학번 : <input type="text" name="stdNum"><br>
    이름 : <input type="text" name="stdName"><br>
    전공 : <select name="major">
            <option value="0" selected>=선택하세요=</option>
            <option value="컴퓨터공학">컴퓨터공학</option>
            <option value="전자공학">전자공학</option>
            <option value="기계공학">기계공학</option>
    </select><br>
    <input type="submit" value="입력완료">
    </form>
</body>
</html>
cs

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>07_03정보</title>
</head>
<body>
    <h2>입력한 정보</h2>
    <%request.setCharacterEncoding("UTF-8"); %>
    <%
        String stdNum = request.getParameter("stdNum");
        String stdName = request.getParameter("stdName");
        String major = request.getParameter("major");
    %>
    학번 : <%=stdNum %> <br>
    이름 : <%=stdName %> <br>
    전공 : <%=major %> <br>
</body>
</html>
cs

 

4. 다음에서 설명하는 객체의 영역을 기술하세요.

하나의 웹 브라우저당 1개의 객체가 생성된다. 따라서 같은 웹 브라우저 내에서 요청하는 페이지들은 같은 객체를 공유하게 된다.

세션

 

 

'Web Study > JSP' 카테고리의 다른 글

09. JSP Page Error  (0) 2022.03.20
08. JSP Page Action Tag  (0) 2022.03.19
06. JSP Page Operator, Control Flow, UTF-8  (0) 2022.03.16
05. JSP Page Script  (0) 2022.03.16
04. JSP Page Directive  (0) 2022.03.15