Chap. 6 보충 bioagent2004@daum.net
JSP 내장객체 JSP 에서선언하지않고사용할수있는객체 컨테이너에의해미리선언된자바클래스의참조변수 스크립트릿이나표현식에서사용할수있음 주요활용 HTML 폼에서입력한값을가지고올때. 세션관련작업을처리할때. 스크립트릿에서브라우저출력이필요할때. 사용자요청을다른페이지로전달할때. 현재 JSP 에대한각종정보를알고자할때.
내장객체목록
Request 클래스 javax.servlet.http.httpservletrequest 주요기능 사용자요청 (request) 과관련된정보를처리할때사용. 주로 HTML 폼을통해전달된값을가져올때사용함. 메서드 설명 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 폼에서한글입력시정상적으로처리해주려면반드시필요하다.
연습 request_form.html request_result.jsp
Response 클래스 javax.servlet.http.httpservletresponse 주요기능 사용자요청에대한응답처리, 페이지전환 주요메소드 메서드 setcontenttype(type) setheader(name,value) setdateheader(name, date) senderror(status,msg) sendredirect(url) 설명 문자열형태의 MIME Type 으로 ContentType 설정 문자열 name 이름으로문자열 value 값을헤더로세팅 문자열 name 이름으로 date 에설정된밀리세컨드시간값을헤더에설정 에러코드를세팅하고메시지보냄 클라이언트요청을다른페이지보냄
연습 page_control.jsp forward_action2.jsp response_sendredirect.jsp page_control_end.jsp
Out 클래스 javax.servlet.jsp.jspwriter 주요기능 스크립트릿에서브라우저출력, 버퍼컨트롤 주요메소드 메서드 getbuffersize( ) getremaining( ) clearbuffer( ) flush( ) close( ) println(content) print(content) 설명 output buffer 크기를바이트로알려준다. 남아있는버퍼크기중사용가능한비율을알려준다. 버퍼에있는컨텐츠를모두지운다. 버퍼를비우고 output stream도비운다. output stream을닫고버퍼를비운다. content에내용을 newline과함께출력 content에내용을출력
Session 클래스 javax.servlet.http.httpsession 주요기능 클라이언트와의지속적인연결유지를위한세션처리 세션은하나의애플리케이션내에서만유효함. 두개의서로다른애플리케이션에서는쿠키를사용해야함. 세션은단순한쿠키대용이아님.
연습 session.jsp session_result.jsp 이클립스내장브라우저와별도의브라우저를동시에띄워서실험시카운터가상호영향을받아증가함.
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 관리필요 web.xml 에초기화파라미터가설정되어야함. 애플리케이션의 ServetContext 객체를가져옴.
Config 주요메소드 메서드 getinitparameternames( ) getinitparameter(name) getservletcontext( ) 설명 초기파라미터값의설정이름을 Enumeration 객체로리턴 문자열 name 에해당하는초기화파라미터값을리턴 현재애플리케이션의 ServetContext 객체를반환내장객체인 application 과동일한객체참조
Application 클래스 javax.servlet.http.servletcontext 주요기능 웹애플리케이션 ( 컨텍스트 ) 전체를관리하는객체 개발자를위한서버정보 서버의각종자원정보 로그관련정보 application scope 의속성관련정보 이클립스내장브라우저와별도의브라우저를동시에띄워서실험시카운터가상호영향을받지않고각각증가함.
Application 개발자를위한서버관련정보메소드 메서드 getserverinfo( ) getmajorversion( ) getminorversion( ) 설명 JSP/ 서블릿컨테이너이름과버전반환컨테이너가지원하는서블릿 API의 Major 버전정보반환컨테이너가지원하는서블릿 API의 Minor 버전정보반환
Application 서버정보자원메소드 메서드 getmimetype(filename) getresource(path) getresourceasstream(path) getrealpath(path) getcontext(path) getresourcedispatcher(path) 설명 문자열 filename 에지정된파일에대한 MIME type 을반환 문자열 path 에지정된자원을 URL 객체로반환 문자열 path 에지정된자원을 InputStream 객체로반환 문자열 path 에지정된자원을파일시스템의실제경로로반환 문자열 path 에지정된자원의컨텍스트정보를반환 문자열 path 에지정된자원을위한 request dispatcher 를생성
Application 로그관련메소드 메서드 log(message) log(message,exception) 설명 문자열 message 내용을로그파일에기록로그파일위치는컨테이너에따라다름 예외상황과관련한정보를포함하여로그파일에기록
Application 속성관련메소드 메서드 getattribute(string name) getattributenames( ) setattribute (String name, Object value) removeattribute(string name) 설명 문자열 name 에해당하는속성값이있다면 Object 형태로가져옴. 반환값에대한적절한형변환이필요 현재 application 객체에저장된속성이름을 Enumeration 형태로가져옴. 문자열 name 이름으로 Object 형데이터를저장 Object 형이므로자바클래스형태로도저장가능 문자열 name 에해당하는속성을삭제
연습 application.jsp Application 내장객체의유효범위는애플리케이션단위로시작과종료를하는것이아니라톰캣서비스를종료하고시작하는경우가많음. 즉톰캣의시작과종료를 application 내장객체의유효범위로봄. Session 내장객체가브라우저종료나시간지정에의한범위인것과차이가있음. application_result.jsp
Page 클래스 javax.servlet.jsp.pagecontext 주요기능 JSP 컨테이너에서생성된서블릿인스턴스객체를참조 JSP 파일에서자기자신을참조할때사용함. <%@page language=java...%> 인경우 java 에서는 page 참조변수를통하지않고도서블릿멤버변수나메소드에직접접근이가능하므로크게의미는없음.
PageContext 클래스 javax.servlet.jsp.pagecontext 주요기능 include, forward 액션의실제구현에응용됨. 모든내장객체에대한프로그램적인접근방법제공 <%@page language=java...%> 인경우크게의미는없음. Ex1) <jsp:forward page= HelloWorld.jsp /> pagecontext.forward( HelloWorld.jsp ) Ex2) <% out.flush(); pagecontext.include( HelloWorld.jsp ); %> <jsp:include page= HelloWorld.jsp flush=true />
Exception 클래스 java.lang.throwable 주요기능 page 지시어에 iserrorpage= true 로지정된에러페이지에서사용 현재호출된에러정보제공. 속성관련메소드 메서드 getmessage( ) printstacktrace( ) tostring( ) 설명문자열로된에러메시지를반환한다. 표준출력스트림으로스택추적정보를출력한다. 예외클래스이름과함께에러메시지를반환한다.
JSP 내장객체와속성관리 내장객체생성시점소멸시점 request 해당페이지요청시해당페이지로딩완료시점 session 해당컨텍스트내특정파일요청시 웹브라우저종료시 일정시간경과시 Application/context 웹애플리케이션시작시점웹애플리케이션종료시점 >> 실습!!! 파일명 login.jsp 역할 로그인화면 selproduct.jsp 상품선택화면. 상품추가가능. add.jsp checkout.jsp 선택한상품을세션에넣는과정. 여러상품을저장해야하므로 ArrayList를이용하여저장후, setproduct.jsp로리턴세션이살아있고하나이상의상품선택시, 선택상품의목록표시