JSP

JSP 내부객체

PiccoBella 2023. 4. 4. 11:46

1. 내장객체란 무엇일까?

"JSP 내에서 선언하지 않고 사용할 수 있는 객체이다."

 

JSP가 서블릿 형태로 자동 변환된 코드 내에 자동으로 포함되어 있는 멤버변수, 메서드 매개변수 등의 각종 참조 변수들을 말한다. 보통 스크립트릿 내부에서 사용하며 내장객체를 통하면 사용자 요청을 컨트롤하거나 페이지 간의 데이터를 손쉽게 공유할 수 있다. 내장객체들은 특정 클래스에 대한 인스턴스 형태로서, 컨테이너를 통해서 초기화되고 다양한 기능과 정보들을 제공한다.

 

1. request 
 : javax.servlet.ServletRequest(javax.servlet.http.httpRequest)
   >> client의 http 요청정보를 저장하고 있는 객체

getParameterNames()현재 요청에 포함된 매개변수의 이름을 열거 형태로 리턴
getParameter(name)문자열 name에 매칭된 value를 리턴
getParamterValues(name)문자열 name에 매칭된 value를 배열 형태로 가져옴
getCookies()모든 쿠키 값을 javax.servlet.http.Cookie의 배열 형태로 리턴
getRemoteAddr()클라이언트의 IP 주소를 리턴한다.
setCharacterEncoding()현재 JSP로 전달되는 내용을 지정한 캐릭터셋으로 변환해준다.
HTML 폼에서 한글 입력을 정상적으로 처리하기 위해 필수




2. response
 : javax.servlet.ServletResponse(javax.servlet.http.httpResponse)
   >>  http 요청에 대한 응답정보를 저장하는 객체

setContentType(type)문자열 형태의 type에 짖어된 MIME Type으로 contentType을 설정한다.
sendRedirect클라이언트 요청을 다른 페이지로 보낸다.



3. session
 : javax.servlet.http.HttpSession
   >> client 가 서버에 접속했을 때 세션정보를 저장한 객체

getId()세션 고유의 ID를 문자열 형태로 리턴
getCreatingTime()세션 생성 시간을 January 1. 1970 GMT 부터 long 형 밀리세컨드 값으로 반환getLastAccessedTime()현재 세션으로 마지막 작업한 시간을 ong형 밀리세컨드 값으로 반환getMaxInactiveInterval()세션의 유지시간을 초로 반환 
setMaxInactiveInterval(t)세션의 유효 시간을 t에 설정된 초 값으로 설정
invalidate()세션 종료
getAttribute(attr)문자열 attr로 설정된 세션 값을 Object 형태로 가져옴
setAttribute(name, attr)문자열 name으로 Object attr을 저장


4. pageContext
 : javax.servlet.jsp.PageContext
   >> 응답 페이지 실행에 필요한 Context정보를 저장한 객체



5. out
 : javax.servlet.jsp.JspWriter
   >> 응답 페이지 전송을 위한 출력 stream

getBufferSize() output buffer의 크기를 바이트로 알려준다.
getRemaining() 남아 있는 버퍼의 크기 중 사용 가능한 비율을 알려준다.
clearBuffer() 버퍼에 있는 콘텐츠를 모두 지운다. flush() 버퍼를 지우고 output stream도 비운다.
close() output stream을 닫고 버퍼를 비운다.
println(content) content의 내용을 newline과 함께 출력한다.
print(content) content의 내용을 출력한다.





6. application
 : javax.servlet.ServletContext
   >> 동일한 Application 의 Context 정보를 저장하고 있는 객체 

log(message)문자열 message의 내용을 로그 파일에 기록한다.
log(message, exception)예외 상황에 대한 정보를 포함하여 로그 파일에 기록한다.
getAttribute(String name)문자열 name에 해당하는 속성 값이 있다면 Object 형태로 반환, 형변환이 필요하다.
getAttributeNames()application 객체에 저장된 속성들의 이름을 열거 형태로 가져온다.
setAttribute(String name, Object value)문자열 name의 이름으로 Object형 데이터를 저장한다.
removeAttribute(String name)문자열 name에 해당하는 속성을 삭제한다.



7. config -- 설정에 관련
 : javax.servlet.ServletConfig
   >> 특정 페이지의 서블릿 설정 정볼르 저장하고 있는 객체

getInitParameterNames() 초기 매개변수 값들의 설정 이름을 열거 객체로 반환
getInitParameter(name) 문자열 name에 해당하는 초기화 매개변수 값 반환


8. page
 : java.lang.Object
   >> 특정 페이지의 서블릿 객체(인스턴스화된 객체)


9. exception 
 : java.lang.Throwable
   >> 예외 처리를 위한 객체

getMessage()문자열로 된 오류 메시지를 반환한다.
printStackTrace()스택 추적 정보를 출력한다.
toString()예외 클래스 이름과 함께 오류 메시지를 반환한다.

 

 

■ request, session, application을 통해 관리할 수 있는 맵 형태의 속성들 

request, session, application은 맵 형태의 속성을 관리하는 기능을 제공한다. 해당되는 메서드는 setAttribute()와 getAttribute() 이다. JSP에서 내장객체에서 다루는 속성의 의미는 "각 내장객체의 생명주기 내에서 관리될 수 있는 자바 Object 형태의 데이터"로 정의할 수 있다. 

내장객체에서 맵 기반으로 속성을 관리하는 기본적인 방법은 "이름(Name): 값(Value)"의 쌍으로 객체를 저장하는 것이다. 이러한 방식은 자바의 대표적인 자료구조 중 하나인 해시 맵과 유사하다.

 

■  컨테이너 기반 프로그램의 특징과 JSP 내장객체

프로그램 관점에서 컨테이너란 프로그램 실행에 관연하면서 모듈화된 프로그램을 실행할 수 있게 하고 프로그램 간의 원활한 데이터(객체) 교환을 지원하는 소프트웨어를 말한다. 컨테이너 기반 프로그램의 장점은 다음과 같다.

 

  • 프로그램의 모듈화가 용이하다.
  • 독립적으로 실행하는 모듈 간의 데이터 교환이 용이하다.
  • 개별 프로그램에서 화면/상태 전환 시 데이터를 유지/관리하기 용이하다.
  • JSP에서는 컨테이너에 의해 관리되는 내장객체를 통해 임의의 객체를 각각의 생명주기 시점에 따라 공유할 수 있다.

 

JSP에서 내장객체를 이용한 속성 관리가 가능한 것은 JSP와 빈즈 객체들이 톰캣이라고 하는 컨테이너에 의해 관리되고 실행되기 때문이다. 

'JSP' 카테고리의 다른 글

JSP 웹소켓(WebSocket) 만들고 활용하기  (0) 2023.04.15
MVC 패턴 이란?  (0) 2023.04.14
JSTL이란? JSTL 사용법  (0) 2023.04.11
JSP Scope의 4가지 개념과 쓰임  (0) 2023.04.04
JSP(Java Server Pages) 란  (0) 2023.04.03