5w_JSP내장객체.ppt

Download Report

Transcript 5w_JSP내장객체.ppt

2008년 10월 2일 실습

실험제목
◦ JSP 내장 객체

목표
◦ JSP에서 기본으로 사용할 수 있는 내장객체 종류와 각 내장 객체별 주요 기능과
method를 이해한다.

목차
◦
◦
◦
◦
◦
◦
JSP 내장 객체 개요
request
response
out
session
application
requestTest.jsp
requestTest.jsp 실행 결과
requestTest1.jsp
request객체를 이용
해 form을 통해 입력
받은 정보를 이용
requestTest1.jsp 실행 결과

JSP 내장 객체
◦ JSP내에서 선언하기 않고도 사용하는 객체
◦ JSP가 Servlet 형태로 자동 변환된 코드 내에 포함되어 있는 Class instance의 이
름, 또는 참조 변수
◦ 주로 request, response, session, out 등의 내장객체를 사용을 주로 사용
◦ 내장 객체의 종류
내장객체의
참조변수명
자바 클래스
주요 역할
request
javax.servlet.http.HttpServletRequest
HTML 폼 요소의 선택 값 등 사용자 입력 정보를 읽어
올 때 사용
response
javax.servlet.http.HttpServletResponse
사용자 요청에 대한 응답을 처리하기 위해 사용
pageContext
javax.servlet.jsp.Pagecontext
현재 JSP 실행에 대한 context 정보를 참조하기 위해
사용
session
javax.servlet.http.HttpSession
클라이언트에 대한 세션 정보를 처리하기 위해 사용
application
javax.servlet.ServeltContext
웹 서버의 애플리케이션 처리와 관련된 정보를 참조하
기 위해 사용
out
javax.servlet.jsp.JspWriter
사용자에게 전달하기 위한 output 스트림을 처리
config
javax.servlet.ServletConfig
현재 JSP에 대한 초기화 환경을 처리하기 위해 사용
page
java.lang.Object
현재 JSP 페이지에 대한 클래스 정보
exception
java.lang.Throwable
예외 처리를 위해 사용



request가 참조하고 있는
HttpServletRequest는 인터
페이스이며, ServletRequest
인터페이스를 확장하고 있음.
이 인터페이스의 구현은 JSP
Container가 함
주로 HTML 폼을 통해 전달되는 값을 가져올 때 사용
request는 javax.servlet.http.HttpServletRequest의 instance를 참조
주요 method
method
설명
getParameterNames()
현재 요청에 포함된 매개변수들의 이름을 Enumeration 형태로 반환
getParameter(name)
문자열 name과 같은 이름을 가진 매개변수의 값을 반환
getParameterValues(n
ame)
문자열 name과 같은 이름을 가진 매개변수의 값을 배열 형태로 반환, checkbox,
multiple list 등에 주로 사용
getCookies()
모든 쿠키 값을 javax.servlet.http.Coolie의 배열 형태로 반환
getMethod()
현재 요청이 Get 방식인지, Post 방식인지를 문자열로 반환
getSession()
현재 Session 객체를 반환
getRemoteAddr()
클라이언트의 IP 주소를 반환
getProtocol()
현재 서버의 프로토콜을 문자열로 반환
setCharacterEncoding() 현재 JSP로 전달되는 내용을 지정한 캐릭터셋으로 변환, HTML 폼에서 한글 입력 시 정상
적으로 처리해주려면 반드시 필요
cookie를 설정하는
javascript
<input
type=text>
<input
type=checkbox>
<input
type=submit>
<select>
<input
type=reset>
request를 통해 전달되는 데이터
문자셋을 지정하는 method,
HTmL 폼에서 입력한 한글을 제
대로 표시하기 위해 사용
expression을 사용하여
username이라는 매개변수
의 값을 출력
job이라는 매개변
수의 값을 출력
앞의 HTML페이지에서 option 태그를
사용해 favorite로 이름붙인 매개변수
중 선택된 것을 문자열 배열로 반환
문자열 배열 favorites의 원소를 처음부
터 차례로 사용하겠다는 의미, for {int
i=0;i<favorites.length;i++) 과 같은
의미로 사용
확인
클릭



request가 참조하고 있는
HttpServletRequest는 인터
페이스이며, ServletRequest
인터페이스를 확장하고 있음.
이 인터페이스의 구현은 JSP
Container가 함
사용자 요청에 대한 응답을 처리하기 위해 사용
request는 javax.servlet.http.HttpServletResponse의 instance를 참조
주요 method
method
설명
setContentYpte(type)
문자열 형태의 type에 지정된 MIME type으로 contentYpte을 설정
page지시어에서 contentType으로 지정한 MIME type을 무시하고 새로운 MIME type을
헤더로 전달
setHeader(name,
value)
문자열 name의 이름으로 문자열 value의 값을 헤더로 셋팅
setDate-Header(name,
date)
문자열 name의 이름으로 date에 설정된 milli second 시간 값을 헤더에 설정
sendError(stauts, msg)
오류 코드를 세팅하고 메시지를 전송
sendRedirect(url)
클라이언트 요청을 다른 페이지로 보낸다
page_control.jsp
실행화면
forward_action2.jsp
response_sendRedirect.jsp
page_control_end.jsp
forward action을 사
용할 때, ‘tel’이라는
매개변수 지정
sendRedirect 실행
forward action 실행
클릭
클릭
forward_action2.jsp
response_sendRedirect.jsp
forward action을 사용한 jsp의
request와 response객체를 유지하여
매겨번수와 지정한 값를 갖고 있음
새로운 request,
resposne 객체가 생성되
어 매개변수를 갖고 있지
않음



Scriptlet에서 출력하는데 사용
out은 javax.servlet.jsp.JspWriter의 instance를 참조
주요 method
method
설명
isAutoFlush()
out 객체는 버퍼가 다 찼을 경우, 자동으로 전송하여 버퍼를 비울 것이지를 결정하는
boolean 변수를 갖고 있으며, true일 경우 자동 전송. isAutoFlush() method는 이
boolean변수의 값을 반환
getBufferSize()
출력 버퍼의 전체 크기를 반환
getRemainning()
현재 남아 있는 출력 버퍼의 크기를 반환
clearBuffer()
현재 출력 버퍼에 저장되어 있는 내용을 웹브라우저에 전송하지 않고 삭제
println(str)
주어진 문자열 str을 줄바꿈 문자와 함께 출력 버퍼에 저장
print(str)
주어진 문자열 str을 출력 버퍼에 저장
flush()
현재 출력 버퍼에 저장되어 있는 내용을 웹 브라우저에 전송하고 버퍼에서 삭제
close()
현재 출력 버퍼에 저장되어 있는 내용을 웹브라우저에 전송하고 출력 스트림을 닫음
outTest1.jsp
총 버퍼 크기를 int 타입 변수
bufferSize에 할당
남아있는 버퍼 크기를 int 타입
변수 remainSize에 할당
사용된 크기를 계산
실행 결과




HTTP 프로토콜을 비연결형이므로 클라이언트와 서버의 연결이 유지되지 못하므로,
사용자와 관련된 정보를 저장하기 위한 방법으로 session과 cookie가 사용됨
session은 서버에 관련 정보를 저장하며, cookie는 클라이언트에 저장
session은 javax.servlet.http.HttpSession의 instance를 참조
주요 method
method
설명
setAttribute()
•문자열 값인 이름과 Object의 인스턴스를 인자로 갖고, session에 속성으로 저장
•Object는 모든 클래스의 상위 클래스이므로, 모든 클래스의 객체를 속성으로 저장 가능
•int, float 등의 기본형은 Integer, Float 등의 해당 객체로 저장
getAttribute()
문자열 값인 이름을 인자로 받아서 session에 설정된 속성 객체를 반환
getId()
해당 session의 고유한 session id를 반환
getCreatingTime()
해당 session이 생성된 시간를 반환
getLastAccessedTime()
웹브라우저의 요청이 시도된 마지막 접근 시간을 반환
setMaxInactiveInterval
(time)
해당 session을 유지할 시간을 초단위로 설정
getMaxInactiveInterval
()
지정되어 있는 session유지 시간을 초단위로 반환
isNew()
새로 생성된 session의 경우 true값을 반환
invalidate()
현재 설정된 session의 속성값을 모두 제거, 주로 session을 종료시킬 때 사용
아이디와 패스워드를 입력받는 페이지
sessionTestForm.jsp
sessionTest.jsp
문자열 변수인 id, passwd에 입
력받은 id와 password를 할당
session에 id 속성 지정
session 유지 시간 지정
sessionTest2.jsp
form을 통해 입력받은 정보를 문
자열 변수 sports와 animation에
할당
session 속성과 session 아이디를
문자열 변수 id와 sessionId에 할당
sessionTestForm.jsp
sessionTest.jsp
id정보를 session저장
session에서 id정보를
가져옴
sessionTest2.jsp



컨테이너와 관련된 정보 제공, Servlet이 실행되는 환경이나 서버 자원과 관련한 정보
를 얻거나 로그 파일을 기록하는 작업 등을 수행
application은 javax.servlet.ServletContext의 instace를 참조
주요 method
method
설명
개발자를 위한 서버 정보
getServerInto()
JSP/Servlet 컨테이너의 이름과 버전을 반환
getMajorVersion()
컨테이너가 지원하는 Servlet API의 Major 버전 정보를 반환
getMinorVersion()
컨테이너가 지원하는 Servlet API의 Minor 버전 정보를 반환
서버 자원 정보
getMimeType(filename)
문자열 filename에 지정된 파일에 대한 MIME Type을 반환
getResourse(path)
문자열 path에 지정된 자원은 URL 객체로 반환
getResourceAsStream(path)
문자열 path에 지정된 자원을 InputStream 객체를 반환
getRealPath(path)
문자열 path에 자원을 파일 시스템의 실제 경로로 반환
getContext(path)
문자열 path에 지정된 자원을 컨텍스트 정보를 반환
getRequestDispatcher(path)
문자열 path에 지정된 자원을 위한 request dispatcher를 생성
서버의 다른 자원으로 request를 보내기
위한 forward, response에 다른 자원을
포함하기 위한 include method 제공

주요 method(Continued)
method
설명
로그 관련 정보
log(message)
문자열 message의 내용을 컨테이너에 지정된 로그 파일에 기록
log(message, exception)
예외 상황에 대한 정보를 포함하여 로그 파일에 기록
속성 관련 정보
getAttribute(name)
문자열 name에 해당하는 속성 값이 있다면 Object의 instace를 반환, 적절한 형변
환 필요
getAtrributeNames()
현재 application 객체에 저장된 속성들의 이름을 Enumeration 형태로 반환
setAttribute(name, value)
문자열 name 이름으로 Object의 instance로 저장, 모든 객체 저장 가능
removeAttribute(name)
문자열 name에 해당하는 속성을 삭제
자바의 모든 Class는 Object의 클래스의
자식 Class이므로, Object로 형변환할 경
우, 속성으로 저장 가능

application 내장 객체를 이용하여 서버 정보를 화면에 출력하고, ‘setAttribute’
method를 이용하여 application에 객체 속성을 지정
application.jsp
•Autoboxing, unboxing : 자바 프
로그래밍에서 int, float등 기본형을
객체로 다룰 필요가 있을 때, 명시적
으로 Integer, Float object로 선언하
지 않아도 자동으로 기본형 변수를
객체로(autoboxing), 객체를 기본형
변수로(unboxing) 변환해 주는 기능

application 내장 객체를 이용하여 서버 정보를 화면에 출력하고, ‘setAttribute’
method를 이용하여 application에 객체 속성을 지정
application_result.jsp
Autoboxing,
unboxing 의 지원
으로 Integer 객체
에 바로 ‘++’ 연산
자를 사용 가능
application.jsp
서버 정보 출력
Sevlet의 Major, Minor
버전 출력
application에 username 속성 설정
eclipse를 이용해 실행하여
로그 파일이 생성되지는 않음
application에 count 속성 설정
클릭
application_result.jsp 처음 실행
application_result.jsp 두번째 실행
새로 고침
F5
1이 더해진 count 값 출력
다시 1이 더해진 count 값 출력

다음 두 개의 JSP 페이지를 작성하시오
◦ sessionEx.jsp : session에 “number’라는 이름으로, 값이 1인 Integer 객체를 속
성으로 설정하고, post속성을 가진 form 태그를 이용하여 sessionExResult.jsp페
이지로 넘어가도록 기술
sessionEx.jsp 의 결과
◦ sessionExResult.jsp : sessionEx.jsp에서 설정된 session의 number 속성을 읽
어 현재 저장되어 있던 값을 출력하고, 1을 더하여 session에 다시 속성으로 설정
한 다음, 그 값을 출력하도록 기술, form 태그를 이용해 sessionExResult.jsp페이
지로 다시 로드 되도록 Reload 버튼기술
sessionExResult(1)
sessionExResult(2)
sessionExResult(3)

out 내장 객체 예제(outTest1.jsp)를 응용하여 다음 화면을 출력하시오.
◦ ‘가’를 출력하고, 현재 사용한 버퍼의 크기를 출력하고, ‘나’를 출력하고, 다시 현재
버퍼의 크기를 출력하도록 기술하여 ‘바’까지 차례로 출력

JSP 내장 객체
◦
◦

request
◦


사용자 요청에 대한 응답을 처리하기 위해 사용
out
◦
JSP 페이지가 생성할 결과를 웹 브라우저에 전송해주는
출력 스트림
◦
Scriptlet에서 출력하기 위해 사용
session
◦

주로 HTML폼을 통해 전달되는 값을 가져올 때 사용
response
◦

JSP 에서 선언하지 않고 기본적으로 사용할 수 있는 객체
request, response, pageContext, session,
application, out, config, page, exception 등의 참조변
수를 통해 사용
비연결형인 HTTP 프로토콜을 보완하여 사용자와 관련된
정보를 저장하고자 할 때 사용
application
◦
컨테이너와 관련된 정보, servlet을 수행하는 서버 자원
등의 정보를 얻거나, 로그 파일을 기록하기 위해 사용

session의 setAttribute method는 문자열
인 속성의 이름과 Object 타입인 속성을
session에 저장한다. 따라서 Integer,
ArrayList 등 모든 객체는 session에 속성으
로 저장될 수 있다.
연습문제에서 작성한 sessionEx.jsp 와 sessionExResult.jsp를 수정하여
session에 ArrayList<Integer>의 객체를 “primenumbers”라는 이름으로
속성으로 설정하고, sessionExResult에서 reload 버튼을 누를 때마다 제
일 작은 소수부터 ArrayList<Integer>의 객체에 저장되도록 기술
1.
◦
ArrayList : Java Collection의 일부로, 배열과 같이 사용할 수 있음
수정된 sessionEx.jsp
sessionExResult(1)
sessionExResult(2)
Reload버튼을 누르면 하나의 소
수가 다시 ArrayList<Integer>
에 들어가도록 기술
sessionExResult(3)
ArrayList<Integer>의 객체를
session속성으로 설정함
scriptlet에서 for문을 이용해 현
재 ArrayList객체에 저장되어 있
는 소수들을 출력