1. JSP 내장객체는?
JSP에는 기본적인 요청과 응답, 화면 출력 등을 수행할 수 있는 총 9가지의 내장객체가 있다.
(request / resopnse / out / session / application / pageContext / page / config / exception)
웹은 클라이언트가 요청을 보내고 서버는 응답을 돌려주는데
내장객체는 이러한 과정에서 발생하는 정보를 쉽게 다룰 수 있게 도와준다.
2. 내장객체의 특징
- JSP가 실행될 때 서블릿으로 변경되는데, JSP코드는 _jspService() 메소드에 모두 삽입됨
- 별도의 객체가 필요 없이 내장객체의 메소드를 사용할 수 있음
3. 내장객체 소개
request, response, out, session, application 만 소개하도록 하겠다.
session 객체가 궁금하다면 https://myvelop.tistory.com/13?category=906898 참고
내장객체 | 타입 | 설명 |
request | HttpServletRequest | 클라이언트의 요청 정보를 저장 |
response | HttpServletResponse | 요청에 따른 응답 정보를 저장 |
out | JspWriter | 출력스트림으로 출력할 내용을 저장 |
exception | Throwable | 예외가 발생한 경우에 사용 |
application | ServletContext | 어플리케이션 관련 정보를 저장 |
- Request
JSP에서 가장 많이 사용되는 객체다. 브라우저(클라이언트)가 전송한 요청 정보를 가지고 있는 객체이다.
html이나 jsp 파일의 html폼에 의해 입력된 값을 request객체를 통해 가져온다.
- request 메소드 소개
메소드 | 소개 |
getParameter("name") | HTML폼 중 name="name" 값을 가지고 있는 폼의 매개변수 값을 가져온다. |
getMethod() | 현재 요청이 GET인지 POST인지를 알려준다. (전송방식을 알려줌) |
getParameterNames() | HTTP 요청 헤더에 포함된 모든 헤더 이름을 객체로 반환, 브라우저의 CPU 비트, 언어타입, 버전, 호스트, 쿠키 등의 정보를 가지고 있다. |
getCharacterEncoding() | 클라이언트가 요청한 정보를 전송할 때 사용한 인코딩 정보를 반환한다. |
setCharacterEncoding("UTF-8") | JSP로 전송된 내용을 변환할 때 "UTF-8"로 변환해줌. 한글입력에 필수!! |
getRemoteAddr() | 클라이언트의 IP 주소를 알려준다. |
getQueryString() | 쿼리스트링을 반환한다. (홈페이지주소 뒤에 붙은 쿼리스트링) |
getServerPort() | 서버의 포트번호를 반환한다. |
getServerName() | 서버의 이름을 반환한다. (ex) localhost |
getProtocol() | HTTP 프로토콜을 반환한다.(버전 정보) (ex)HTTP/1.1 |
getRequestURL() | 호스트를 포함한 전체주소를 반환한다. |
getRequestURI() | 호스트를 제외한 전체주소를 반환한다. |
getrRequestDispatcher("주소") .forward(request, response) |
"주소"로 포워드한다. |
- Response
request는 요청정보를 저장하는 역할이라면 response는 요청에 대한 응답을 웹 브라우저로 보내주는 역할을 한다.
많이 사용되는 기능으로는 리다이렉트(redirect)와 HTTP 헤더에 정보 추가하기 기능이다.
- response 메소드 소개
메소드 | 소개 |
sendRedirect("주소") | 클라이언트의 요청을 "주소"페이지로 보낸다. |
addDateHeader("name", value) | "name"헤더의 날짜형 정보 value를 추가 |
addIntHeader("name", value) | "name"헤더의 정수형 정보 value를 추가 |
addHeader("name", value) | "name"헤더의 문자형 정보 value를 추가 |
setDateHeader("name", value) | "name"헤더의 날짜형 정보 value를 지정 |
setIntHeader("name", value) | "name"헤더의 정수형 정보 value를 지정 |
setHeader("name", value) | "name"헤더의 문자형 정보 value를 지정 |
getHeader("name") | "name"헤더 정보의 문자열을 가지고 옴 |
getStatus() | HTTP 상태 코드를 반환한다. |
sendError(status, "msg") | HTTP상태코드 status를 지정하고 메시지 "msg"를 보냄 |
addCookie(Cookie cookie) | 클라이언트 브라우저에 쿠키 정보를 삽입함 |
- Out
앞에서 말했다시피 출력스트림으로 브라우저에 출력하기 위해 사용되는 객체이다.
<%= %>과 EL이 훨씬 편리하기에 쓸 일이 그렇게 많지는 않다.
하지만 스크립트릿 내의 변수를 브라우저로 출력해야한다면 out객체를 쓰는 것이 더 좋을 것이다.
- out메소드 소개
메소드 | 소개 |
clearBuffer() | 버퍼를 비운다. |
getBufferSize() | 페이지에 설정된 버퍼의 크기를 가져온다. (디폴트값 = 8KB) |
getRemaining() | 사용하고 남은 버퍼의 크기를 가져온다. |
print(내용) | 변수나 문자열을 브라우저에 출력한다. |
flush() | 현재 버퍼에 담긴 내용을 강제로 출력하고 비운다. 출력스트림도 비워준다. |
- Exception
exception 내장 객체는 JSP 페이지에서 오류가 발생했을 때 예외 페이지를 처리할 수 있게 도와주는 객체이다.
- exception 메소드 소개
메소드 | 소개 |
getMessage() | 발생한 오류 메시지를 반환한다. |
toString() | 발생한 오류 클래스명과 메시지를 반환한다. |
printStackTrace() | 발생한 오류를 서버에 출력 |
- Application
이 내장 객체는 어플리케이션 하나 당 하나씩만 생성되며 모든 JSP페이지에 접근할 수 있다.
웹 어플리케이션에 필요한 정보를 저장하고 서버의 정보, 물리적 경로 등을 가져올 수 있다.
일반적으로 톰캣서버와 동일한 수명(Life Cycle)을 가지고 있다.
web.xml과 함께 사용된다.
- application 메소드 소개
메소드 | 소개 |
getInitParameter("name") | "name"에 해당하는 초기화 매개변수를 읽어온다. |
getInitParameterNames() | 초기 매개변수들의 설정 이름을 열거객체로 읽어온다. |
getRealPath("path") | "path"의 물리적경로를 반환한다. |
getAttribute("name") | "name"에 해당하는 값이 있으면 Object형태로 반환한다. |