Chapter 5 내장 객체

Ruinak·2021년 5월 13일
0

JSP 웹 프로그래밍

목록 보기
4/5
post-thumbnail

5-1 내장 객체의 개요

  • 내장 객체(implicit object)는 JSP 페이지에서 사용할 수 있도록 JSP 컨테이너에 미리 정의된 객체로 그 종류가 다양함
  • JSP 페이지가 서블릿 프로그램으로 번역될 때 JSP 컨테이너가 자동으로 내장 객체를 멤버 변수, 메소드 매개변수 등의 각종 참조 변수(객체)로 포함함
    - JSP 페이지에 별도의 import문 없이 자유롭게 사용할 수 있음
    - 스크립틀릿 태그나 표현문 태그에 선언을 하거나 객체를 생성하지 않고도 직접 호출하여 사용할 수 있음

내장 객체의 종류

1) request : 웹 브라우저의 HTTP 요청 정보를 저장함
- 반환 유형 : javax.servlet.http.HttpServletRequest
2) response : 웹 브라우저의 HTTP 요청에 대한 응답 정보를 저장함
- 반환 유형 : javax.servlet.http.HttpServletResponse
3) out : JSP 페이지에 출력할 내용을 담고 있는 출력 스트림임
- 반환 유형 : javax.servlet.jsp.jsp.jspWriter
4) session : 웹 브라우저의 정보를 유지하기 위한 세션 정보를 저장함
- 반환 유형 : javax.servlet.http.HttpSession
5) application : 웹 애플리케이션의 콘텍스트 정보를 저장함
- 반환 유형 : javax.servlet.ServletContext
6) pageContext : JSP 페이지의 정보를 저장함
- 반환 유형 : javax.servlet.PageContext
7) page : JSP 페이지를 구현한 자바 클래스로 JSP 페이지 자체를 나타냄
- 반환 유형 : javax.lang.Object
8) config : JSP 페이지의 설정 정보를 저장함
- 반환 유형 : javax.servlet.ServletConfig
9) exception : JSP 페이지의 예외 발생을 처리함
- 반환 유형 : javax.lang.Throwable

  • 내장 객체는 서블릿 프로그램에서 모두 _jspService() 메서드 내부에 있음
  • 메소드 매개변수인 request, response를 비롯해 pageContext, session, application, config, out, page 등은 메서드 내에서 참조할 수 있는 참조 변수임
  • 모든 내장 객체는 JSP 컨테이너가 관리하는 객체로, 이 중 requset, session, application, pageContext를 이용하여 속성을 관리할 수 있음
    - 속성은 각각의 내장 객체가 존재하는 동안 JSP 페이지 사이에서 정보를 주고받거나 공유하는데 사용됨

속성 처리 메서드의 종류

1) setAttribute(String name, Object value) : 해당 내장 객체의 속성 이름이 name인 속성 값을 value로 저장함
- 반환 유형 : void
2) getAttribute(String name) : 해당 내장 객체의 속성 이름이 name인 속성 값을 가져옴
- 반환 유형 : Object
3) removeAttribute(String name) : 해당 내장 객체의 속성 이름이 name인 속성을 삭제함
- 반환 유형 : void
4) getAttributeNames() : 해당 내장 객체의 모든 속성 이름을 가져옴(단 pageContext 내장 객체는 이 메서드를 제공 안함)
- 반환 유형 : java.util.Enumeration

5-2 request 내장 객체의 기능과 사용법

  • request 내장 객체는 JSP 페이지에서 가장 많이 사용되는 기본 내장 객체
  • 웹 브라우저에서 서버의 JSP 페이지로 전달하는 정보를 저장함
    - 폼 페이지로부터 입력된 데이터를 전달하는 요청 파라미터 값을 JSP 페이지로 가져옴
  • JSP 컨테이너는 웹 브라우저에서 서버로 전달되는 정보를 처리하기 위해 javax.servlet.http.HttpServletRequest 객체 타입의 request 내장 객체를 사용하여 사용자의 요구 사항을 얻어냄

2.1 요청 파라미터 관련 메서드

  • 요청 파라미터는 사용자가 폼 페이지에 데이터를 입력한 후 서버에 전송할 떄 전달되는 폼 페이지의 입력된 정보 형태를 말함
  • <name=value> 형식으로 웹 브라우저에서 서버의 JSP 페이지로 전송됨
  • 요청 파라미터는 폼 페이지에서 <input type="text"...>처럼 입력 양식이 텍스트 유형인 경우 값을 입력하지 않으면 서버로 빈 문자열이 전송됨

요청 파라미터 관련 메서드

1) getParameter(String name) : 요청 파마리터 이름이 name인 값을 전달받고, 값이 없으면 null을 반환
- 반환 유형 : String
2) getParameterValues(String name) : 모든 요청 파라미터 이름이 name인 값을 배열 형태로 전달받고, 값이 없으면 null을 반환
- 반환 유형 : String[]
3) getParameterNames() : 모든 요청 파라미터의 이름과 값을 Enumeration 객체 타입으로 전달 받음
- 반환 유형 : java.util.Enumeration
4) getParameterMap() : 모든 요청 파라미터의 이름과 값을 Map 객체 타입으로 전달 받음(Map 객체 타입은(요청 파라미터 이름, 값) 형식으로 구성됨
- 반환 유형 : java.util.Map

  • request 내장 객체 사용 예 : 요청 파라미터 값 출력하기
    1) request문

    2) process문

예제 5-1 request 내장 객체로 폼 페이지로부터 아이디와 비밀번호를 전송받아 출력하기

1) request문

2) process문

2.2 요청 HTTP 헤더 관련 메서드

  • 웹 브라우저는 HTTP 헤더에 부가적인 정보를 담아 서버로 전송함
  • request 내장 객체는 헤더 정보나 쿠키 관련 정보를 얻을 수 있는 메서드를 제공함

요청 HTTP 헤더 관련 메서드의 종류

1) getHeader(String name) : 설정한 name의 헤더 값을 가져옴
- 반환 유형 : String
2) getHeaders(String name) : 설정한 name의 헤더 목록 값을 가져옴
- 반환 유형 : Enumeration
3) getHeaderNames() : 모든 헤더 이름을 가져옴
- 반환 유형 : Enumeration
4) getIntHeader(String name) : 설정한 name의 헤더 값을 정수로 가져옴
- 반환 유형 : int
5) getDateHeader(String name) : 설정한 name의 헤더 값을 시간 값으로 가져옴
- 반환 유형 : long
6) getCookies() : 모든 쿠키 값을 가져옴
- 반환 유형 : javax.servlet.http.Cookie

  • request 내장 객체 사용 예 : 요청 HTTP 헤더 정보 값 출력하기

예제 5-2 request 내장 객체로 모든 HTTP 헤더 정보 값 출력하기

2.3 웹 브라우저/서버 관련 메서드

  • request 내장 객체는 웹 브라우저의 요청 및 서버 관련 정보를 얻을 수 있는 메서드를 제공함

웹 브라우저/서버 관련 메서드의 종류

1) getRemoteAddr() : 웹 브라우저의 IP 주소를 가져옴
- 반환 유형 : String
2) getContentLength() : 웹 브라우저의 요청 파라미터 길이를 가져옴
- 반환 유형 : long
3) getCharacterEncoding() : 웹 브라우저의 문자 인코딩을 가져옴
- 반환 유형 : String
4) getConentType() : 웹 브라우저의 콘텐츠 유형을 가져옴
- 반환 유형 : String
5) getProtocol() : 웹 브라우저의 요청 프로토콜을 가져옴
- 반환 유형 : String
6) getMethod() : 웹 브라우저의 HTTP 요청 메서드(GET, POST)를 가져옴
- 반환 유형 : String
7) getrequestURI() : 웹 브라우저가 요청한 URI 경로를 가져옴
- 반환 유형 : String
8) getContextPath() : 현재 JSP 페이지의 웹 애플리케이션 콘텍스트 경로를 가져옴
- 반환 유형 : String
9) getServerName() : 서버 이름을 가져옴
- 반환 유형 : String
10) getServerPort() : 실행 중인 포트 서버를 가져옴
- 반환 유형 : int
11) getQuerySting() : 웹 브라우저의 전체 요청 파라미터 문자열(물음표(?) 다음 URL에 할당된 문자열)을 가져옴
- 반환 유형 : String

  • 웹 브라우저의 정보로는 요청 정보 길이, 전송 방식, 요청 URI 등을, 서버 정보로는 서버 이름과 포트를 출력함
  • request 내장 객체 사용 예 : 웹 브라우저/서버 정보 출력하기
    1) request문

    2) process문

예제 5-3 request 내장 객체로 모든 웹 브라우저 및 서버 정보 값 출력하기


5-3 response 내장 객체의 기능과 사용법

  • response 내장 객체는 사용자의 요청을 처리한 결과를 서버에서 웹 브라우저로 전달하는 정보를 저장함
    - 서버는 응답 헤더와 요청 처리 결과 데이터를 웹 브라우저로 보냄
    - JSP 컨테이너는 서버에서 웹 브라우저로 응답하는 정보를 처리하기 위해 javax.servlet.http.HttpServletResonse 객체 타입의 response 내장 객체를 사용하여 사용자의 요청에 응답함

3.1 페이지 이동 관련 메서드

  • 사용자가 새로운 페이지를 요청할 때와 같이 페이지를 강제로 이동하는 것을 리다이렉션(redirection)이라고 함
  • 서버는 웹 브라우저에 다른 페이지로 강제 이동하도록 response 내장 객체의 리다이렉션 메서드를 제공함
  • 페이지 이동 시에는 문자 인코딩을 알맞게 설정해야 함

페이지 이동 방법

  • 포워드(forward) 방식
    - 현재 JSP 페이지에서 이동할 URL로 요청 정보를 그대로 전달하므로 사용자가 최초로 요청한 정보가 이동된 URL에서도 유효함
    - 이동된 URL이 웹 브라우저의 주소 창에 나타나지 않고 처음 요청한 URL이 나타나기 때문에 이동 여부를 사용자가 알 수 없음
    - 형식 : <jsp:forward page = "이동할 페이지"/>
  • 리다이렉트(redirect) 방식
    - 처음 요청받은 현재 JSP 페이지로부터 이동할 URL을 웹 브라우저로 반환함
    - 이 때 웹 브라줘에서는 새로운 요청을 생성하여 이동할 URL에 다시 요청을 전송하므로 처음 보낸 요청 정보가 이동된 URL에서는 유효하지 않음
    - 즉 클라이언트가 새로 페이지를 요청한 것과 같은 방식으로 페이지가 이동함
    - 따라서 이동된 URL이 웹 브라우저의 주소 창에 보이는 것임
    - 형식 : response.senRedirect("이동할 페이지")

페이지 이동 관련 메서드의 종류

  • sendRedirect(String url) : 설정한 URL 페이지로 강제 이동함
    - 반환 유형 : void
  • response 내장 객체 사용 예 : 페이지 이동하기

예제 5-4 response 내장 객체로 페이지 이동하기

1) request문

2) response문

3) 결과

3.2 응답 HTTP 헤더 관련 메서드

  • 응답 HTTP 헤더 관련 메서드는 서버가 웹 브라우저에 응답하는 정보에 헤더를 추가하는 기능을 제공함
  • 헤더 정보에는 주로 서버에 대한 정보가 저장되어 있음

응답 HTTP 헤더 관련 메서드의 종류

1) addCookie(Cookie cookie) : 쿠키를 추가합니다.
- 반환 유형 : void
2) addDateHeader(String name, long date) : 설정한 헤더 이름 name에 날짜/ 시간을 추가함
- 반환 유형 : void
3) addHeader(String name, String value) : 설정한 헤더 이름 name에 value를 추가함
- 반환 유형 : void
4) addIntHeader(String name, int value) : 설정한 헤더 이름 name에 정수 값 value를 추구함
- 반환 유형 : void
5) setDateHeader(String name, long date) : 설정한 헤더 이름 name에 날짜/시간을 설정함
- 반환 유형 : void
6) setHeader(String name, Stringvalue) : 설정한 헤더 이름 name에 문자열 값 value를 설정함
- 반환 유형 : void
7) setIntHeader(String name, int value) : 설정한 헤더 이름 name에 정수 값 value를 설정함
- 반환 유형 : void
8) containsHeader(String name) : 설정한 헤더 이름 name이 HTTP 헤더에 포함되었는지 여부를 확임함. 포함하고 있는경우 true를 반환하고, 그렇지 않은 경우 false를 반환함
- 반환 유형 : boolean
9) getHeader(String name) : 설정한 헤더 이름 name 값을 가져옴
- 반환 유형 : String

  • response 내장 객체 사용 예 : 응답 HTTP 헤더에 정보 추가하기

예제 5-5 response 내장 객체로 5초마다 JSP 페이지 갱신하기

3.3 응답 콘텐츠 관련 메서드

  • response 내장 객체는 웹 브라우저로 응답하기 위해 MIME 유형, 문자 인코딩, 오류 페이지, 상태 코드 등을 설정하고 가져오는 응답 콘텐츠 관련 메서드를 제공함
    - 문자 인코딩과 콘텐츠 유형에 대해 값을 설정하고 각각의 값을 가져와 출력함

응답 콘텐츠 관련 메서드의 종류

1) getContentType(String type) : 웹 브라우저에 응답할 MIME 유형을 설정함
- 반환 유형 : void
2) setContentType() : 웹 브라우저에 응답할 MIME 유형을 가져옴
- 반환 유형 : String
3) getCharacterEncoding(STring charset) : 웹 브라우저에 응답할 문자 인코딩을 설정함
- 반환 유형 : void
4) setCharacterEncoding() : 웹 브라우저에 응답할 문자 인코딩을 가져옴
- 반환 유형 : String
5) getError(int status_code, STring message) : 웹 브라우저에 응답할 오류(코드 및 오류 메세지)를 설정함
- 반환 유형 : void
6) setStatus(int statuscode) : 웹 브라우저에 응답할 HTTP 코드를 설정함
- 반환 유형 : void

  • response 내장 객체 사용 예 : 응답 콘텐츠 설정하기

5-4 out 내장 객체의 기능과 사용법

  • out 내장 객체는 웹 브라우저에 데이터를 전송하는 출력 스트림 객체임
  • JSP 컨테이너는 JSP 페이지에 사용되는 모든 표현문 태그와 HTML, 일반 텍스트 등을 out 내장 객체를 통해 웹 브라우저에 전달함
  • out 내장 객체는 스크립틀릿 태그에 사용하여 단순히 값을 출력하는 표현문 태그(<%= ...%>)와 같은 결과를 얻을 수 있음

out 내장 객체 메서드의 종류

1) print(String str) : 설정된 str 값을 웹 브라우저에 출력함
- 반환 유형 : void
2) println(String str) : 설정된 str 값을 웹 브라우저에 출력함. 이때 줄바꿈(\r\n 또는 \n)이 적용되지 않음
- 반환 유형 : void
3) newLine() : 줄바꿈(\r\n 또는 \n)을 출력함
- 반환 유형 : void
4) getBufferSize() : 현재 출력 버퍼의 크기를 가져옴
- 반환 유형 : int
5) getRemaining() : 현재 남아 있는 출력 버퍼의 크기를 가져옴
- 반환 유형 : int
6) clear() : 현재 출력 버퍼에 저장되어 있는 내용을 웹 브라우저에 전송하지 않고 비움. 만약 버퍼가 이미 플러시되었다면 IOException이 발생함
- 반환 유형 : void
7) clearBuffer() : 현재 출력 버퍼에 저장되어 있는 내용을 웹 브라우저에 전송하지 않고 비움. 만약 버퍼가 이미 플러시되었다면 IOException이 발생하지 않음
- 반환 유형 : void
8) flush() : 현재 출력 버퍼에 저장되어 있는 내용을 웹 브라우저에 전송하고 비움
- 반환 유형 : void
9) isAutoFlush() : 출력 버퍼가 채워졌을 떄의 처리를 결정함. 자동으로 플러시하는 경우 true를 반환하고, 그렇지 않은 경우 false를 반환함
- 반환 유형 : boolean

  • out 내장 객체 사용 예

예제 5-6 out 내장 객체로 오늘의 날짜 및 시각 출력하기

예제 5-7 out 내장 객체로 오늘의 날짜 및 시각 출력하기

1) request문

2) process문

profile
Nil Desperandum <절대 절망하지 마라>

0개의 댓글