본문 바로가기
Java

[JSP] 내장 객체_1

by lmyourpearl 2025. 12. 3.

내장 객체(implicit object)

JSP 페이지에서 사용할 수 있도록 JSP컨테이너에 미리 정의된 객체로 JSP 페이지가 서블릿 프로그램으로 번역될 때 JSP 컨테이너가 자동으로 내장 객체를 멤버 변수, 메소드 매개변수 등의 각종 참조 변수(객체)로 포함함.

JSP 페이지에 별도의 import문 없이 자유롭게 사용할 수 있으며, 스크립틀릿 태그나 표현문 태그에 선언을 하거나 객체를 생성하지 않고도 직접 호출하여 사용할 수 있음.

 

내장 객체의 종류

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

내장 객체는 서블릿 프로그램에서 모두 _jspService( )메소드 내부에 있으며, 메소드 매개변수인 request, response를 비롯해 pageContext, session, application, config, out, page등은 메소드 내에서 참조할 수 있는 참조변수.

모든 내장 객체는 JSP 컨테이너가 관리하는 객체로, 이 중에서 request, session, application, pageContext를 이용하여 속성을 관리할 수 있음.

속성은 각각의 내장 객체가 존재하는 동안 JSP 페이지 사이에서 정보를 주고받거나 공유하는데 사용됨.

 

속성 처리 메소드의 종류

메소드 반환 유형 설명
setAttribute(String name, Object value) void 해당 내장 객체의 속성 이름이 name인 속성값을 value로 저장
getAttribute(String name) object 해당 내장 객체의 속성 이름이 name인 속성값을 가져옴
removeAttribute(String name) void 해당 내장 객체의 속성 이름이 name인 속성을 삭제
getAttributeNames( ) java.util.Enumeration 해당 내장 객체의 모든 속성 이름을 가져옴. (단, pageContext 내장 객체는 이 메소드를 제공하지 않음.)

 

속성을 공유할 수 있는 유효 범위

내장 객체가 존재하는 동안 사용할 수 있는 속성의 영역(scope)

영역 내장 객체 속성의 유효 범위
page pageContext 해당 페이지가 클라이언트에게 서비스를 제공하는 동안 유효하다.
request request 클라이언트의 요청이 처리되는 동안 유효하다.
session session 세션이 유지되는 동안 유효하다.
application application 웹 애프리케이션이 실행되고 있는 동안 유효하다.(서버를 죽여야함)

request 내장 객체

JSP 페이지에서 가장 많이 사용되는 기본 내장 객체로, 웹 브라우저에서 서버의 jsp페이지로 전달하는 정보를 저장. 즉, 폼 페이지로부터 입력된 데이터를 전달하는 요청 파라미터 값을 JSP페이지로 가녀옴.

JSP 컨테이너는 웹 브라우저에서 서버로 전달되는 정보를 처리하기 위해 jakarta.servlet.http.HttpservletRequest 객체 타입의 request 내장 객체를 사용하여 사용자의 요구 사항을 언더냄.

 

요청 파라미터 관련 메소드

요청 파라미터는 사용자가 폼 페이지에 데이터를 입력한 후 서버에 전송할 때 전달되는 폼 페이지의 입력된 정보 형태이며, 이러한 요청 파라미터는 <name=value> 형식으로 웹 브라우저에서 서버의 JSP 페이지로 전송됨.

요청 파라미터는 폼 페이지에서 <input type=”text”…>처럼 입력 양식이 텍스트 유형일 때 값을 입력하지 않으면 서버로 빈 문자열이 전송.

 

getParameter는 체크박스와 라디오 버튼 유형일 땐 어떤 것도 선택하지 않고 전송하면 요청 파라미터 자체가 전달되지 않음. 그래서 getParameterValues(String name)을 사용해야 여러개의 값이 배열로 저장됨. String[ ] hobby = request.getParameterValues(”hobby”); -이런식으로 저장해야함.

이렇게 값이 여러개이면 getParameterValues 사용.(for문)

 

요청 파라미터 관련련 메 메소드 종류

요청 파라미터 관련 메소드 반환유형 설명
getParameter (String name) String 요청 파라미터 이름이 name인 값을 전달 받으며, 요청 파라미터 값이 없으면 null을 반환
getParameterValues(String name) Sting[ ] 모든 요청 파라미터 이름이 name인 값을 배열 형태로 전달받으며, 요청 파라미터 값이 없으면 null을 반환
getParamterNames( ) java.util.Enumeration 모든 요청 파라미터의 이름과 값을 Enumeration 객체 타입으로 전달 받는다.
getParameterMap ( ) java.util.Map 모든 요청 파라미터의 이름과 값을 Map 객체 타입으로 전달 받는다 [Map 객체 타입은 (요청 파라미터 이름, 값) 형식으로 구성됨.]

요청 HTTP 헤더 관련 메소드

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

 

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

요청 HTTP 헤더 관련 메소드  반환 유형 설명
getHeader(String name) String 설정한 name의 헤더 값을 가져온다.
getHeaders(String name) Enumeration 설정한 name의 헤더 목록 값을 가져온다.
getHeaderNames( ) Enumeration 모든 헤더 이름을 가져온다.
getIntHeader(String name) int 설정한 name의 헤더 값을 정수로 가져온다.
getDateHeader(String name) long 설정한 name의 헤더 값을 시간 값으로 가져온다.
getCookies( ) java.servlet.http.Cookie 모든 쿠키 값을 가져온다.

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

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

 

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

웹 브라우저/서버 관련 메소드 반환 유형 설명
getRemoteAddr( ) String 웹 브라우저의 IP 주소를 가져옴.
getContentLength( ) long 웹 브라우저의 요청 파라미터 길이를 가져옴
getCharacterEncoding( ) String 웹 브라우저의 문자 인코딩을 가져옴
getContentType( ) String 웹 브라우저의 콘텐츠 유형을 가져옴
getProtocol( ) String 웹 브라우저의 요청 프로토콜을 가져옴
getMethod( ) String 웹 브라우저의 HTTP 요청 메소드(GET,POST)를 가져옴
getRequestURI( ) String 웹 브라우저가 요청한 URI 경로를 가져옴
getContextPath( ) String 현재 JSP 페이지의 웹 애츨리케이션 콘텍스트 경로를 가져옴
getServerName( ) String 서버 이름을 가져옴
getServerPort( ) int 실행중인 서버 포트 번호를 가져옴
getQueryString( ) String 웹 브라우저의 전체 요청 파라미터 문자열[물음표(?) 다음 URL에 할당된 문자열]을 가져옴.
<%@ page contentType="text/html; charset=UTF-8" %>
<html>
<head>
<title>Implicit Objects</title>
</head>
<body>
		<p>클라이언트 IP : <%=request.getRemoteAddr() %></p>
		<p>요청 정보 길이: <%=request.getContentLength() %></p>
		<p>요청 정보 인코딩 : <%=request.getCharacterEncoding() %></p>
		<p>요청 정보 콘텐츠 유형 : <%=request.getContentType() %></p>
		<p> 요청 정보 프로토콜 : <%=request.getProtocol()%></p>
		<p> 요청 정보 전송 방식 : <%=request.getMethod() %></p>
		<p> 요청 URI: <%=request.getRequestURI() %>
		<p> 콘텍스트 경로 : <%=request.getContextPath() %></p>
		<p> 서버이름 : <%=request.getServerName() %></p>
		<p> 서버포트: <%=request.getServerPort() %></p>
		<p>쿼리문 : <%=request.getQueryString() %>
</body>
</html>

  • 프로토콜 (Protocol): 대화를 나누는 '방식과 순서' (예: 만나면 '안녕하세요'라고 인사하기)

프로토콜은 **컴퓨터끼리 서로 통신하기 위해 정해놓은 '규칙과 약속'**입니다.

웹 브라우저(클라이언트)와 웹 서버(JSP가 실행되는 곳)가 서로 "말을 알아듣기 위해" 이 규칙을 따릅니다.

핵심: 어떤 순서로 정보를 요청하고, 어떤 형식으로 응답할지 정한 약속입니다

request.getProtocol(): 브라우저가 어떤 프로토콜(예: "HTTP/1.1")로 요청했는지 알려줍니다.

request.getMethod(): 어떤 방식(예: "GET", "POST")으로 요청했는지 알려줍니다.

 

  • 인코딩 (Encoding): 대화에 사용하는 '언어' (예: 한국어, 영어)

인코딩 (Encoding): '문자 번역기’

인코딩은 **사람이 쓰는 문자(가, 나, A, B)를 컴퓨터가 이해하는 숫자(0과 1)로 바꾸는 '규칙'**입니다.

컴퓨터는 '가'라는 글자를 모르고, 오직 0과 1로 된 바이트(byte)만 저장할 수 있습니다. 인코딩은 이 변환 규칙을 정한 '코드북'이나 '번역 사전'과 같습니다.

전 세계 거의 모든 문자를 표현할 수 있는 표준 방식입니다. 특별한 이유가 없다면 무조건 UTF-8을 사용해야 합니다.

request.setCharacterEncoding("UTF-8"): 브라우저가 보낸 한글 데이터(예: 폼 전송)가 깨지지 않도록 "UTF-8 사전으로 해독해 줘"라고 서버에게 알려줍니다. (주로 POST 방식일 때)

response.setContentType("text/html; charset=UTF-8"): 서버가 브라우저에게 보낼 HTML이 "UTF-8 사전으로 만들어졌으니 이걸로 봐"라고 알려줍니다.


'Java' 카테고리의 다른 글

[Java] 예외 처리  (1) 2025.11.15
[Java] 예외 클래스  (0) 2025.11.15
[Java] 익명 객체  (0) 2025.11.15
[Java] 중첩 클래스와 중첩 인터페이스  (0) 2025.11.15
[Java] 타입 변환과 다형성  (0) 2025.11.14