JSP 내장객체 JSP 내장객체 524730-1 2019 년봄학기 3/25/2019 박경신 내장객체 (Implicit Objects) JSP 페이지에서사용할수있도록 JSP 컨테이너에미리정의된객체 JSP 페이지가서블릿프로그램으로번역될때 JSP 컨테이너가자동으로내장객체를멤버변수, 매개변수등의각종참조변수 ( 객체 ) 로포함 JSP 페이지에별도의 import 문없이자유롭게사용가능 스크립틀릿태그나표현문태그에선언을하거나객체를생성하지않고도직접호출하여사용가능 request, response, out, session, application, config, pagecontext, page, exception JSP 내장객체 내장객체 (Implicit Objects) 주요활용 HTML 폼에서입력한값을가지고올때 세션관련작업을처리할때 스크립트릿에서브라우저출력이필요할때 사용자요청을다른페이지로전달할때 현재 JSP에대한각종정보를알고자할때 내장객체 기본객체실제타입 request javax.servlet.http.httpservletrequ est 웹브라우저의 HTTP 요청정보를저장 response javax.servlet.http.httpservletresp onse 웹브라우저의 HTTP 요청에대한응답정보를저장 pagecontext javax.servlet.jsp.pagecontext JSP 페이지에대한정보를저장 session javax.servlet.http.httpsession 웹브라우저의정보를유지하기위한세션정보를저장 application javax.servlet.servletcontext 웹애플리케이션의콘텍스트정보를저장 out javax.servlet.jsp.jspwriter JSP 페이지에출력할내용을담고있는출력스트림 config javax.servlet.servletconfig 현재 JSP 페이지의설정정보를저장 page java.lang.object JSP 페이지를구현한자바클래스인스턴스 exception java.lang.throwable 예외객체. 에러페이지에서사용
내장객체와영역 PAGE - 하나의 JSP 페이지를처리할때사용되는영역 REQUEST - 하나의 HTTP 요청을처리할때사용되는영역 SESSION - 하나의웹브라우저와관련된영역 APPLICATION - 하나의웹어플리케이션과관련된영역 내장객체속성처리 request, session, application, pagecontext 는속성기능제공 속성처리 setattribute(name, value) getattribute(name) removeattribute(name) getattributenames() 해당내장객체의속성이름이 name 인속성값을 value 로저장 해당내장객체의속성이름이 name 인속성값을거져옴 해당내장객체의속성이름이 name 인속성을삭제 해당내장객체의모든속성이름을 java.util.enumeration 형태로가져옴 ( 단, pagecontext 내장객체는이를제공하지않음 ) 내장객체속성의활용 내장객체 영역 사용법 pagecontext PAGE ( 한번의요청을처리하는 ) 하나의 JSP 페 이지내에서공유될값을저장 request REQUEST 한번의요청을처리하는데사용되는모 든 JSP 페이지에서공유될값을저장 session SESSION 한사용자와관련된정보를 JSP 들이공 유하기위해서사용 application APPLICATION 모든사용자와관련해서공유할정보를 저장 request 내장객체 request (javax.servlet.http.httpservletrequest) JSP 페이지에서가장많이사용되는기본내장객체 사용자요청 (request) 과관련된정보를처리할때사용 웹브라우저에서서버의 JSP 페이지로전달하는정보를저장 폼페이지로부터입력된데이터를전달하는요청파라미터값을 JSP 페이지로가져옴 ( 주로 HTML Form 요소선택값과같은사용자입력정보를읽어올때사용 ) JSP 컨테이너는웹브라우저에서서버로전달되는정보를처리하기위해 javax.servlet.http.httpservletrequest 객체타입의 request 내장객체를사용하여사용자의요구사항을얻어냄
request 내장객체 getparameterxxxx 메서드 요청파라미터는사용자가폼페이지에데이터를입력한후서버에전송할때전달되는폼페이지의입력된정보형태를말함 요청파라미터는 <name=value> 형식으로웹브라우저에서서버의 JSP 페이지로전송 getparameternames() getparameter(name) getparametervalues(name) getparametermap() 현재요청에포함된인수이름을 Enumeration 형태로전달문자열name과같은이름을가진인수값을가져옴문자열 name과같은이름을가진인수값을배열형태로가져옴. checkbox, multiple list 등에주로사용모든요청된인수와값을 java.util.map 객체타입으로전달 request 내장객체 요청 HTTP 헤더관련메서드 웹브라우저는 HTTP 헤더에부가적인정보를담아서버로전송 getheader(name) getheaders(name) getheadernames() getintheader(name) getdateheader(name) getcookies() 설정한 name의헤더값을가져옴설정한 name의헤더목록값을가져옴모든헤더이름을가져옴설정한 name의헤더값을정수로가져옴설정한 name의헤더값을시간값으로가져옴모든쿠키값을 javax.servlet.http.cookie의배열형태로가져옴 request 내장객체 웹브라우저 / 서버관련 getremoteaddr() getmethod() getsession() getprotocol() getrequesturi() getcontenttype() getcontentlength() getquerystring() getcharacterencoding() setcharacterencoding() 웹브라우저 IP 주소를알려줌 현재요청이 GET, POST 인지가져옴 현재세션객체를가져옴 현재서버의프로토콜을문자열형태로알려줌 웹브라우저가요청한 URI 경로를가져옴 웹브라우저의콘텐츠유형을가져옴 웹브라우저의요청파라미터길이를가져옴 웹브라우저의전체요청파라미터문자열 (? 다음 URL 에할당된문자열 ) 을가져옴 웹브라우저의문자인코딩을가져옴현재 jsp 로전달되는내용을지정한캐릭터셋으로변환. html form에서한글입력시정상적으로처리하려면반드시필요 response 내장객체 response (javax.servlet.http.httpservletresponse) 사용자의요청을처리한결과를서버에서웹브라우저로전달하는정보를저장하고서버는응답헤더와요청처리결과데이터를웹브라우저로보냄 JSP 컨테이너는서버에서웹브라우저로응답하는정보를처리하기위해 javax.servlet.http.httpservletresponse 객체타입의 response 내장객체를사용하여사용자의요청에응답
response 내장객체 페이지이동관련 페이지이동 = 리다이렉션 (redirection) 사용자가새로운페이지를요청할때와같이페이지를강제로이동하는것 서버는웹브라우저에다른페이지로강제이동하도록 response 내장객체의리다이렉션를제공 페이지이동시에는문자인코딩을알맞게설정해야함 sendredirect(url) 설정한 URL 페이지로강제이동 response 내장객체 응답 HTTP 헤더관련메서드 응답 HTTP 헤더관련는서버가웹브라우저에응답하는 정보에헤더를추가하는기능을제공 헤더정보에는주로서버에대한정보가저장되어있음 getheader(name) 헤더이름 name 값을가져옴 containsheader(name) 헤더이름 name이 HTTP 헤더에포함되었는지 여부를확인 setheader(name, value) 헤더이름 name에 String값 value를설정 setintheader(name, value) 헤더이름 name에정수값 value를설정 setdateheader(name, date) 헤더이름 name에날짜 / 시간 date을설정 addheader(name, value) 헤더이름 name에 String값 value를추가 addintheader(name, value) 헤더이름 name에정수값 value를추가 adddateheader(name, date) 헤더이름 name에날짜 / 시간 date을추가 addcookie(cookie) 쿠키를추가 response 내장객체 응답콘텐츠관련 response 내장객체는웹브라우저로응답하기위해 MIME 유형, 문자인코딩, 오류메시지, 상태코드등을설정하고가져오는응답콘텐츠관련를제공 setcontenttype(type) 웹브라우저에응답할 MIME 유형을설정 getcontenttype() 웹브라우저에응답할 MIME 유형을가져옴 setcharacterencoding(charset) 웹브라우저에응답할문자인코딩을설정 getcharacterencoding() 웹브라우저에응답할문자인코딩을가져옴 senderror(statuscode, msg) 웹브라우저에응답할오류 ( 코드및오류메시지 ) 를설정해서보냄 setstatus(statuscode) 웹브라우저에응답할 HTTP 코드를설정 out 내장객체 out (javax.servlet.jsp.jspwriter) 웹브라우저에데이터를전송하는출력스트림객체 JSP 컨테이너는 JSP 페이지에사용되는모든표현문태그와 HTML, 일반텍스트등을 out 내장객체를통해웹브라우저에그대로전달 스크립틀릿태그에사용하여단순히값을출력하는표현문태그 (<%= %>) 와같은결과를얻을수있음 복잡한 if-else 사용시 out 기본객체사용하면편리 <% if (grade > 10) { out.println(gradestringa); } else if (grade > 5) { out.println(gradestringb); } %>
out 내장객체 출력및버퍼관련 out 메서드 print(str) 설정된 str 값을웹브라우저에출력 println(str) 설정된 str 값을웹브라우저에줄바꿈과함께출력 newline() 줄바꿈 (\r\n 또는 \n) 을출력 getbuffersize() 현재출력버퍼의크기를가져옴 getremaining() 현재남아있는출력버퍼의크기를가져옴 clear() 현재출력버퍼에저장되어있는내용을웹브라우저에전송하지 않고비움. 만약버퍼가이미플러시되었다면 IOException 발생 clearbuffer() 현재출력버퍼에저장되어있는내용을웹브라우저에전송하지 않고비움. 만약버퍼가이미플러시되었다면 IOException 발생안함 flush() 현재출력버퍼에저장되어있는내용을웹브라우저에전송하고 비움 isautoflush() 출력버퍼가채워졌을때의처리를결정. 자동으로플러시하는경 우 true 반환, 그렇치않은경우 false 반환 session 내장객체 session (javax.servlet.http.httpsession) 클라이언트와의지속적인연결유지를위한세션처리 세션은하나의애플리케이션내에서만유효함 두개의서로다른애플리케이션에서는쿠키를사용해야함 세션은단순한쿠키대용이아님 session 내장객체 config 내장객체 session 메서드 getid( ) getcreatingtime( ) getlastaccessedtime( ) getmaxinactiveinterval( ) setmaxinactiveinterval(t) invalidate( ) getattribute(attr) setattribute(name,attr) 각접속에대한세션고유의 ID를문자열형태로반환세션이생성된시간을 January 1, 1970 GMT. 부터 long형밀리세컨트값으로반환현재세션으로마지막작업한시간을 long형밀리세컨드값으로반환세션유지시간을초로반환세션유효시간을줌세션유효시간을 t에설정된초값으로설정현재세션을종료. 세션과관련한값을모두지움문자열 attr로설정된세션값을 java.lang.object 형태로반환문자열 name으로 java.lang.object attr을설정 config (javax.servlet.http.servletconfig) 애플리케이션에서공유할수있는초기화변수접근 web.xml 에초기화패러미터가설정되어야함. 애플리케이션의 ServetContext객체를가져옴.
config 내장객체 config 메서드 getinitparameternames( ) getinitparameter(name) getservletcontext( ) 초기파라미터값의설정이름을 Enumeration 객체로반환문자열 name에해당하는초기화파라미터값을반환현재애플리케이션의 ServetContext 객체를반환내장객체인 application과동일한객체참조 application (javax.servlet.http.servletcontext) 웹애플리케이션 ( 컨텍스트 ) 에관련된정보를제공 개발자를위한서버정보 서버의각종자원정보 로그관련정보 application scope의속성관련정보 개발자를위한서버관련정보 application 메서드 서버자원정보 application 메서드 getserverinfo( ) getmajorversion( ) getminorversion( ) JSP/ 서블릿컨테이너이름과버전반환컨테이너가지원하는서블릿 API의 Major 버전정보반환컨테이너가지원하는서블릿 API의 Minor 버전정보반환 getmimetype(filename) 문자열 filename에지정된파일에대한 MIME type을반환 getresource(path) 문자열 path에지정된자원을 URL 객체로반환 getresourceasstream( 문자열 path에지정된자원을 InputStream 객체로반환 path) getrealpath(path) 문자열 path에지정된자원을파일시스템의실제경로로반환 getcontext(path) 문자열 path에지정된자원의컨텍스트정보를반환 getresourcedispatcher (path) 문자열 path 에지정된자원을위한 request dispatcher 를생성
표로그관련 application 메서드 속성관련 application 메서드 log(message) 문자열 message 내용을로그파일에기록로그파일위치는컨테이너에따라다름 getattribute(string name) 문자열 name 에해당하는속성값이있다면 Object 형태로가져옴. 반환값에대한적절한형변환이필요 log(message,excepti on) 예외상황과관련한정보를포함하여로그파일에기록 getattributenames( ) 현재 application 객체에저장된속성이름을 Enumeration 형태로가져옴 setattribyte (String name, Object value) 문자열 name 이름으로 Object 형데이터를저장 Object 형이므로자바클래스형태로도저장가능 removeattribute(string name) 문자열 name 에해당하는속성을삭제 page 내장객체 page (javax.servlet.jsp.pagecontext) JSP 파일에서자기자신을참조할때사용함. <%@page language=java...%> 인경우크게의미는없음. pagecontext 내장객체 pagecontext (javax.servlet.jsp.pagecontext) include, forward 액션의실제구현에응용됨. 내장객체에대한프로그램적인접근방법제공 <%@page language=java...%> 인경우크게의미는없음. <jsp:forward page= HelloWorld.jsp /> <% out.flush(); pagecontext.include( HelloWorld.jsp ); %>
exception 내장객체 exception (java.lang.throwable) page 지시어에 iserrorpage= true 로지정된에러페이지에서사용 현재호출된에러정보제공 속성관련 exception getmessage( ) printstacktrace( ) tostring( ) 문자열로된에러메시지를반환표준출력스트림으로스택추적정보를출력예외클래스이름과함께에러메시지를반환