1)내장객체 개요.
1. JSP 내장객체란?
- JSP내장객체란 JSP내에서 선언하지 않고 사용할 수 있는 객체라는 의미에서 붙여진 이름이다.
- 구조적으로는 JSP가 서블릿 형태로 자동 변환된 코드 내에 포함되어 있는 멤버변수, 메서드 매개변수 등의 각종 참조 변수(객체)를 말한다.
※ 주요 JSP내장객체
request, reponse, session, applcation...
2. 내장객체의 구조적 특징
- 서블릿으로 변경된 JSP코드는 모두 .jspService()매서드에 위치함.
- 매서드 매개변수인 request, reponse를 비롯한 pageContent, session,applcation,page,config,out 등 매서드 내에서 참조할 수 있는 참조변수들이 내장객체가된다.
3. 내장객체를 이용한 속성관리 기법
- 내장객체가 단순히 특정한 기능을 제공하는 컨테이너 관리 객체라는 점 외에도 한가지 특징이 있다. 바로 page, request, session, application 내장객체를 이용한 속성관리 기법이다. 이 내장객체들은 각자 지정된 생명주기가 있으며, setAttribute(), getAttribute()라는 메서드를 통해 해당 생명주기동안 자바객체를 유지하눈 기능을 제공한다.
2)request
1.request 내장객체
- request는 사용자 요청과 관련된 기능을 제공하는 내장객체로 javax.servlet.http.HttpServletRequest 클래스에 대한 참조 변수이다.
- 주요 클라이언트에서 서버로 전달되는 정보를 처리하기 위해 사용.
- 대표적으로 HTML폼을 통해 입력된 값을 JSP에서 가져올때 사용한다.
※ request주요 메서드
메서드 |
설명 |
getParameterNames() |
현재 요청에 포함된 매개변수의 이름을 열거(Enumeration) 형태로 넘겨준다. |
getParameter(name) |
문자열 name과 이름이 같은 매개변수의 값을 가져온다. |
getParameterValues(name) |
문자열 name과 이름이 같은 매개변수의 값을 배열형태로 가져온다.
checkbox, multiple list등에 주로 사용한다. |
getCookies() |
모든 쿠키 값을 javax.servlet.http.Cookie의 형태로 가져온다. |
getMethod() |
현재 요청이 GET아나 POST형태로 가져온다. |
getSession() |
현재 세션 객체를 가져온다. |
getRemoteAddr() |
클라이언트의 IP주소를 알려준다. |
getProtocol() |
현재 서버의 프로토콜을 문 |
setCharacterEncoding() |
현재 JSP로 전달되는 내용을 지정한 케릭터셋으로 변환해준다. ,HTML폼에서 한글 입력을 정상적으로 처리 해주려면 반드시 필요하다. |
3) reponse
1. reponse 내장객체
- reponse는 request와 반대되는 개념으로, 사용자 응답과 관련된 기능을 제공
- 사용자 요청(request)을 처리하고 응답을 다른 페이지로 전달하는 등의 기능을 제공.
- javax.servlet.http.HttpServletResponse 객체에 대한 참조변수로, request에 만큼 많이 사용되지는 않으나 setContentType,sendRedirect와 같은 메서드는 잘알아야한다.
※reponse 주요 메서드
메서드 |
설명 |
setContentType(type) |
문자열 형태의 type에 지정된 MIME으로 content Type을 설정 |
setHeader(name,value) |
문자열 name의 이름으로 문자열 value의 값을 헤더러 세팅 |
setDateHeader(name,date) |
문자열 name의 이름으로 date에 설정된 밀리세컨드 시간 값을 헤더에 설정 |
sendError(status,msg) |
오류코드를 세팅하고 메시지를 보냄 |
sendRedirect(url) |
클라이언트 요청을 다른페이지로 보냄. |
4)out
1. out내장객체
- out은 출력스트림으로써, 사용자 웹 브라우저로 출력하기 위한 내장 객체임.
- 스트립트에서 브라우저로 덱스트를 출력하는 데 사용.
- out은 javax.servlet.jspWriter객체의 참조변스로, 버퍼관련 메서드와 출력 관련 메서드로 구성되며, out를 이용해서 출력한 내용은 서버의 콘솔이 아닌 사용자에게 전달된다.
※out주요 메서드
메서드 |
설명 |
getBufferSize() |
output buffer의크기를 바이트로 알려준다. |
getRemaining() |
남아있는 버퍼의 크기중 사용가능한 비율을 알려준다. |
clearBuffer() |
버퍼에 있는 콘텐트를 모두 지운다. |
flush() |
버퍼를 비우고 output stream도 비운다. |
close() |
output stream을 닫고 버퍼를 비운다 |
println(content) |
content의 내용을 newline과 함께 출력한다. |
print(content) |
content의 내용을 출력한다. |
5)session 내장객체
- HTTP프로토콜이 비연결형 프로토콜이기 때문에 출력된 다음에는 클라이언트와 연결이 끊어진다. 따라서 한번 로그인한 사용자가 로그아웃할 때 까지 페이지를 이동해도 보관해야 할 정보가 있다면 이에 대한 처리가 매우 곤란해진다.
- 이러한 HTTP프로토콜 문제점을 해결하려고 나온 것이 쿠기와 세션이다.
- session은 javax.servlet.http.Http Session 인터페이스 참조 변수 이다.
- session은 접속하는 사용자 별로 따로 생성되며 일정시간 유지되고 소멸된다.
- 이러한 세션의 특징을 이용해 setAttribute()메서드를 이용해 임의의 값을 저장해놓고 활용할 수 있다.
- 세션이 주로 사용되는 경우
┌① 사용자 로그인 후 세션을 설정하고, 일정시간이 지난 경우 다시 사용자 인증을 요구 할 때.
│
├② 쇼핑물에서 장바구니 기능을 구현할 때.
│
└③ 사용자의 페이지 이동 동선 등 웹페이지 트래킹 분석 기능 등을 구현 할때.
※ session내장객체 메서드
메서드 |
설명 |
getId() |
각 접속에 대한 세션 고유의 ID를 문자열 형태로 반환한다. |
getCreatingTime() |
세션 생성기간을 January 1,1970 GMT부터 long형 밀리세컨드 값으로 반환 한다. |
getLastAccessedTime() |
현재세션으로 마지막 작업한 시간을 long형 밀리세컨드 값으로 반환한다. |
getMaxInactiveInterval() |
세션의 유지시간을 초로 반환한다. 이를통해 세션의 유효시간을 알수 있다. |
setMaxInactiveInterval(t) |
세션의 유효시간을 t에 설정된 초 값으로 설정한다. |
invalidate() |
현재 세션을 종료한다. 세션과 관련된 값들을 모두 지워진다. |
getAttribute(attr) |
문자열 attr로 설정된 세션값을 java.lang.Object 형태로 반환한다. |
setAttribute(name,attr) |
문자열 name으로 java.lang.Object attr을 설정한다. |
그밖의 내장객체
1).config
- 서블릿이 최초로 메모리에 적재될 때 컨터이너는 서블릿 초기화와 관련된 정보를 읽고 javax.servlet.ServletConfig 객체에 저장한다.
- config는 바로 ServletConfig클래스에 대한 참조 변수로 web.xml에 설정된 초기화 파라미터를 참조하기 위한 용도로 사용할 수 있다.
※config 메서드
메서드 |
설명 |
getInitParameterNames() |
초기 매개변수 값들의 설정 이름을 열거 객체로 반환 한다. |
getInitParameter(name) |
문자열 name에 해당하는 초기화 매개변수 값을 반환한다. |
2)application
- application은 웹 애플리케이션(컨텍스트) 전체를 관리하는 객체로 application 객체를 통해 각 서블릿이나 JSP에서 공유하려고 하는 각종 정보를
설정하고 참조할 수 있다.
- application은 javax.servletContext객체에 대한 참조 변수로써, config 객체를 통해 생성한다.
ServletContext 객체는 컨터이너와 관련된 여러정보를 제공하며, application참조 변수를 통해서 서블릿이 실행되는 환경이나 서버 자원과 관련한 정보를 얻거나 로그파일을 기록하는 작업등을 수행한다.
- application 내장객체는 일반적으로 톰캣의 시작과 종료 라이프사이클을 가진다.
- 유형별로 많은 메서드를 제공하므로 주로 관리 기능의 웹 애플리케이션 개발에 유용하다.
※ 개발자를 위한 서버정보
메서드 |
설명 |
getServerInfo() |
JSP/서블릿 컨테이너의 이름과 버전을 반환한다. |
getMajorVersion() |
컨테이너가 지원하는 서블릿 API의 주 버전정보를 반환한다. |
getMinorVersion() |
컨테이너가 지원하는 서블릿 API의 하위버전 정보를 반환한다. |
※서버 지원정보
메서드 |
설명 |
getMineType(filename) |
문자열 filename에 지정된 파일에 대한 MIME Typ을 반환한다. |
getResource(path) |
문자열 path에 지정된 자원을 URL객체로 반환한다. |
getResourceAsStream(path) |
문자열 path에 지정된 자원을 InputStream 객체로 반환한다. |
getRealPath(path) |
문자열Path에 지정된 자원을 파일시스템의 실제경로로 반환한다. |
getContext(path) |
문자열 path에 지정된 자원의 컨텍스트 정보를 반환한다. |
getRequestDispatcher(path) |
문자열 path에 지정된 자원을 위한 request dispatcher을 생성한다. |
※로그관련 정보
메서드 |
설명 |
log(message) |
문자열 message의 내용을 파일에 기록한다. 로그파일의 위치는 컨테이너에 따라 다르다. |
log(message,exception) |
예외 상황에 대한 정보를 포함하여 로그 파일에 기록한다. |
※속성 관련 정보
메서드 |
설명 |
getAttribute(String name) |
문자열 name에 해당하는 속성 값이 있다면 Object형태로 가져온다. 따라서 변환 값에 대한 적절한 형 변환이 필요하다. |
getAttributeNames() |
현재 application객체에 저장된 속성들의 이름을 열거 형태로 가져온다. |
setAttribute(String name, Object Value) |
문자열 name이름으로 Object형 데이터를 저장한다. Object형이므로 자바 클래스 형태로도 저장 할 수 있다. |
removeAttribute(String name) |
문자열 name에 해당하는 속성을 삭제한다. |