JSP 내장객체
1)내장객체 개요.
- JSP 내장객체란?
-
JSP내장객체란 JSP내에서 선언하지 않고 사용할 수 있는 객체라는 의미에서 붙여진 이름이다.
-
구조적으로는 JSP가 서블릿 형태로 자동 변환된 코드 내에 포함되어 있는 멤버변수, 메서드 매개변수 등의 각종 참조 변수(객체)를 말한다.
※ 주요 JSP내장객체
request, reponse, session, applcation…
- 내장객체의 구조적 특징
-
서블릿으로 변경된 JSP코드는 모두 .jspService()매서드에 위치함.
-
매서드 매개변수인 request, reponse를 비롯한 pageContent, session,applcation,page,config,out 등 매서드 내에서 참조할 수 있는 참조변수들이 내장객체가된다.
- 내장객체를 이용한 속성관리 기법
- 내장객체가 단순히 특정한 기능을 제공하는 컨테이너 관리 객체라는 점 외에도 한가지 특징이 있다. 바로 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
- 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
- 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에 해당하는 속성을 삭제한다.
출처: https://dhzzang.tistory.com/85
출처 : https://sas-study.tistory.com/197?category=796126