JSP 내장객체 정리
JSP 내장 객체의 영역
page 영역은 한 번의 웹 브라우저(클라이언트)의 요청에 대해 하나의 JSP 페이지가 호출된다.
request 영역은 한 번의 웹 브라우저(클라이언트)의 요청에 대해 같은 요청을 공유하는 페이지가 대응된다.
session 영역은 하나의 웹 브라우저당 1개의 session 객체가 생성된다.
application 영역은 하나의 웹 어플리케이션당 1개의 application 객체가 생성된다.
1. request 내장 객체
request 객체는 웹 브라우저에서 JSP 페이지로 전달되는 정보의 모임으로 HTTP 헤더와 HTTP 바디로 구성이 되어 있다.
2. response 내장 객체
response 객체는 웹 브라우저로 응답할 응답 정보를 가지고 있다.
3. out 내장 객체
out 객체는 JSP 페이지가 생성한 결과를 웹 브라우저에 전송해 주는 출력 스트림이며,
JSP 페이지가 웹 브라우저에게 보내는 모든 정보는 out 객체로 통해서 전송 된다.
여기서 모든 정보는 스크립트요소 뿐만 아니라 비스트립트 요소인 HTML, 일반텍스트도 모두 포함된다.
4. pageContext 내장 객체
pageContext 객체는 현재 JSP 페이지의 컨텍스트를 나타내며, 주로 다른 내장객체를 구하거나,
페이지의 프름제어 그리고 에러데이터를 얻어낼 때 사용된다.
5. session 내장 객체
session 객체는 웹 브라우저의 요청시 요청한 웹 브라우저에 관한 정보 저장하고 관리하는
내장 객체라 할 수 있다. session 객체는 웹 브라우저(클라이언트)당 1개가 할당된다.
따라서 주로 회원관리에서 사용자 인증에 관련된 작업을 수행할 때 사용된 작업을 수행할 때 사용된다.
6. application 내장 객체
application 객체는 웹 어플리케이션이 실행되는 서버의 설정 정보 및 자원에 대한 정보를 얻어내거나
어플리케이션이 실행되고 있는 동안에 발생할 수 있는 이벤트 로그 정보와 관련된 기능들을 제공한다.
7. config 내장 객체
config 내장 객체는 서블릿이 초기화되는 동안 참조해야 할 정보를 전달해 주는 역할을 한다.
config 내장 객체는 컨테이너당 1개의 객체가 생성된다.
같은 컨테이너에서 서비스되는 모든 페이지는 같은 객체를 공유한다.
8. page 내장 객체
page 내장 객체는 JSP 페이지 그 자체를 나타내는 객체로
JSP 페이지 내에서 page 객체는 this 키워드로 자기 자신을 참조할 수 있다.
9. exception 내장 객체
exception 내장 객체는 JSP 페이지에서 예외가 발생하였을 경우,
예외를 처리할 페이지를 지정하였을 때 예외 페이지에 전달되는 객체이다.
■ out 내장 객체 메서드
isAutoFlush() : 출력 버퍼가 가득찼을 때 자동으로 밀어낼 것인지 여부 지정 (true/false)
getBufferSize() : 출력 버퍼 전체 사이즈를 구함
getRemaining() : 출력 버퍼 중 남아 있는 사이즈를 구함
clearBuffer() : 출력 버퍼를 비운다.
println() : String 을 출력한다.
flush() : 출력 버퍼의 내용을 밀어낸다.
close() : 출력 버퍼의 내용을 밀어내고, 출력 버퍼를 닫는다.
■ request 내장 객체 메서드
getMethod() : 요청 방식 알아내기 (get, post)
getRequestURI() : 요청 파일 경로 알아내기 (ex, jsp2/RequestTest.jsp)
getRequestURL() : 요청 경로 알아내기 (ex, http://localhost:9000/jsp2/Request.jsp)
getRemoteHost() : 클라이언트 호스트 이름 알아내기
getRemoteAddr() : 클라이언트 주소 알아내기
getRemoteUser() : (인증을 이용한 경우) 이용자 ID 알아내기
getProtocol() : 사용중인 프로토콜 알아내기 (ex, HTTP1.1)
getServerName() : 서버 도메인 이름 알아내기
getServerPort() : 서버 포트 알아내기
getHeader(name) : name 에 해당되는 요청 헤더 항목 값 알아내기
getParameter(name) : name 에 해당되는 파라미터 값을 얻는다.
getParameterValues(name) : name 에 해당되는 파라미터 값을 모두 얻는다.
getParameterNames() : form 에 있는 모든 파라미터 이름을 얻는다.
■ response 내장 객체 메서드
setContentType(type) : 출력 문서의 contentType 설정
getCharacterEncoding() : 문자 인코딩 설정 내용 알아내기
setHeader(name, value) : 헤더 설정
(ex, response.setHeader("Refresh", "3;URL=http://www.daum.net"); // 3초후 지정한 URL 로 이동)
sendRedirect(url) : 지정 URL 로 요청을 재전송한다.
※ forward 액션 태그
방법1 <jsp:forward page="로컬URL"/>
방법2 <jsp:forward page="로컬URL"></jsp:forward>
방법3 <jsp:forward page="로컬URL">
<jsp:param name="id" value="kim"/>
<jsp:param name="pwd" value="123"/>
</jsp:forward>
※ response.sendRedirect 와 forward 액션태그의 차이점
- sendRedirect() 는 웹브라우저가 다른 페이지로 이동할 때,
다른 페이지로 가기 위해 웹브라우저는 웹서버에 새로운 Http 요청을 보낸다.
즉, TCP 네트워크 연결이 다시 만들어지는 것이다.
response.sendRedirect("로컬URL"); <-- 가능
respnose.sendRedirect("외부URL"); <-- 가능
- 이에 비해 forward 액션은 JSP 엔진에서 Http 요청을 다른 페이지로 보낸다.
즉, Http 요청 처음 만들어진 것 하나만 있는 것이다.
<jsp:forward page="로컬URL"/> <-- 가능
<jsp:forward page="외부URL"/> <-- 불가능
- sendRedirect() 를 사용하면 웹브라우저에서 처음에 전송한 Http 요청과
이 요청에 포함된 데이터들은 새로 이동된 페이지에서 사용할 수 없게 된다.
반면, forward 액션을 사용하면 Http 요청은 하나만 사용하기 때문에 새로
이동된 페이지에서도 클라이언트에서 전송된 데이터를 사용할 수 있다.
※ include 지시자
단순히 문서를 포함시킨다.
포함시킬 문서는 헤더 부분을 넣지 말아야 한다.
<%@ include file="파일명.확장자" %>
※ include 액션
포함된 파일이 실행된 결과물을 현재 페이지에 포함시킨다.
방법1 <jsp:include page="로컬URL" flush="true"/>
방법2 <jsp:include page="로컬URL" flush="true>
<jsp:param name="" value=""/>
<jsp:param name="" value=""/>
...
</jsp:include>
■ application 내장 객체 메서드
application 내장 객체는 서블릿 또는 어플리케이션 외부환경정보(context)의 내부 객체.
application 은 javax.servlet.ServletContext 의 객체.
String getServletInfo() : 서버 정보를 구한다.
String getMimeType(fileName) : 지정한 File 에 대한 MIME 타입을 리턴한다.
String getMajorVersion() : 서버가 지원하는 서블릿 규약의 Major version 을 리턴.
String getMinorVersion() : 서버가 지원하는 서블릿 규약의 Minor version 을 리턴.
String getRealPath(url) : 지정한 Url 의 실제 경로를 리턴한다.
void log("message") : message 내용을 파일에 기록한다.
■ session 내장 객체 메서드
session 은 쇼핑몰과 같이 제품을 클릭할 때마다 누가 클릭했는지 기억을 해야 하는
사이트에서 웹 서버 쪽에서 사용자별 기록을 남기고자할 때 사용.
String getId() : 해당 세션의 고유한 세션 아이디를 리턴
void setMaxInactiveInterval(time) : 세션 유지시간 설정 (초 : 기본 30분)
int getMaxInactiveInterval() : 세선 유지시간이 얼마인지 알아낸다.
isNew() : 새로 생성된 세션이면 true
invalidate() : 세션 제거
setAttribute(name, value) : 세션에 name, value 값의 항목을 추가
getAttribute(name) : 세션에서 name 에 해당되는 value 값을 얻어냄.
★ Cookie 내장 객체 생성자 & 메서드
- 생성자
Cookie(name, value) : 이름이 name 이고, 값이 value 인 쿠키 생성
- 메서드
setValue() : 쿠키값 설정
setDomain() : 쿠키에 전달되는 도메인 설정
setPath() : 쿠키에 전달되는 경로 설정
setMaxAge() : 쿠키 유효기간 설정 (초)
setSecure() : 보안 프로토콜(Https)에서만 쿠키를 전달되도록 설정.
getName() : 쿠키 이름 얻기
getValue() : 쿠키값 얻기
getDomain() : 쿠키가 전달되는 도메인 알아내기
getPath() : 쿠키가 전달되는 경로 알아내기
getMaxAge() : 쿠키 유효기간 알아내기
getSecure() : 보안 프로토콜(Https)에서만 쿠키가 전달되는지 알아내기.
<< 쿠키 심는 방법 >>
Cookie cookie = new Cookie("쿠키이름", URLEncoder.encode("쿠키값"));
response.addCookie(cookie);
<< 클라이언트가 보내주는 쿠키를 모두 받아서 특정 이름의 쿠키값 알아내기 >>
Cookie[] cookies = request.getCookies(0);
if (cookies != null) {
for (int i = 0; i < cookies.length; i++) {
if (cookies[i].getName().equals("쿠키이름")) {
cookieValue = URLDecoder.decode(cookies.getValue());
out.println("쿠키값:" + cookieValue);
}
}
}