서블릿의라이프사이클 뇌를자극하는 JSP & Servlet

Similar documents
뇌를 자극하는 JSP & Servlet 슬라이드

뇌를 자극하는 JSP & Servlet 슬라이드

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

혼자서일을다하는 JSP. 이젠일을 Servlet 과나눠서한다. JSP와서블릿의표현적인차이 - JSP는 <html> 내에서자바를사용할수있는수단을제공한다. - 서블릿은자바내에서 <html> 을작성할수있는수단을제공한다. - JSP나서블릿으로만웹페이지를작성하면자바와다양한코드가

뇌를 자극하는 JSP & Servlet 슬라이드

뇌를 자극하는 JSP & Servlet 슬라이드

14-Servlet

2장 변수와 프로시저 작성하기

JSP 의내장객체 response 객체 - response 객체는 JSP 페이지의실행결과를웹프라우저로돌려줄때사용되는객체이다. - 이객체는주로켄텐츠타입이나문자셋등의데이터의부가정보 ( 헤더정보 ) 나쿠키 ( 다음에설명 ) 등을지정할수있다. - 이객체를사용해서출력의방향을다른

<param-value> 파라미터의값 </param-value> </init-param> </servlet> <servlet-mapping> <url-pattern>/ 매핑문자열 </url-pattern> </servlet-mapping> - 위의예에서 ServletC

04장

JavaGeneralProgramming.PDF

Data Provisioning Services for mobile clients

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r

뇌를 자극하는 JSP & Servlet 슬라이드

Microsoft PowerPoint - 7강.pptx

파일로입출력하기II - 파일출력클래스중에는데이터를일정한형태로출력하는기능을가지고있다. - PrintWriter와 PrintStream을사용해서원하는형태로출력할수있다. - PrintStream은구버전으로가능하면 PrintWriter 클래스를사용한다. PrintWriter

J2EE Concepts

본 강의에 들어가기 전

뇌를 자극하는 JSP & Servlet 슬라이드

<4D F736F F F696E74202D203130C0E52EBFA1B7AF20C3B3B8AE205BC8A3C8AF20B8F0B5E55D>

12-file.key

Data Provisioning Services for mobile clients

뇌를 자극하는 JSP & Servlet 슬라이드

<4D F736F F F696E74202D20C1A63236C0E520BED6C7C3B8B428B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20B5A5C0CCC5CDBAA3C0CCBDBA5F3130C1D6C2F75F31C2F7BDC32E >

뇌를 자극하는 JSP & Servlet 슬라이드

KYO_SCCD.PDF

Microsoft PowerPoint - aj-lecture7.ppt [호환 모드]

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호

Data Provisioning Services for mobile clients

Microsoft PowerPoint - 4강.pptx

rmi_박준용_final.PDF

PowerPoint 프레젠테이션

Microsoft PowerPoint 웹 연동 기술.pptx

Microsoft PowerPoint - aj-lecture1.ppt [호환 모드]

뇌를 자극하는 JSP & Servlet 슬라이드

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum


중간고사

PowerPoint 프레젠테이션

PowerPoint Presentation

TCP/IP Model

2) 활동하기 활동개요 활동과정 [ 예제 10-1]main.xml 1 <LinearLayout xmlns:android=" 2 xmlns:tools="

PowerPoint 프레젠테이션

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

작성자 : 김성박\(삼성 SDS 멀티캠퍼스 전임강사\)

Microsoft PowerPoint - Supplement-03-TCP Programming.ppt [호환 모드]

Research & Technique Apache Tomcat RCE 취약점 (CVE ) 취약점개요 지난 4월 15일전세계적으로가장많이사용되는웹애플리케이션서버인 Apache Tomcat에서 RCE 취약점이공개되었다. CVE 취약점은 W

C++ Programming

슬라이드 1

PowerPoint Presentation

<4D F736F F F696E74202D20C1A63234C0E520C0D4C3E2B7C228B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

웹 개발자를 위한 서블릿/JSP

신림프로그래머_클린코드.key

Microsoft PowerPoint - 03-TCP Programming.ppt

쉽게 풀어쓴 C 프로그래밊

PowerPoint Presentation

PowerPoint Presentation

Design Issues

mytalk

Microsoft PowerPoint - 웹프로그래밍_ ppt [호환 모드]

뇌를 자극하는 JSP & Servlet 슬라이드

제8장 자바 GUI 프로그래밍 II

JUNIT 실습및발표

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

Microsoft PowerPoint - CSharp-10-예외처리

PowerPoint Presentation

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

Microsoft PowerPoint - Chap6_cmpl

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - Java7.pptx

PowerPoint Presentation

JAVA PROGRAMMING 실습 09. 예외처리

Microsoft PowerPoint - chap06-2pointer.ppt

<4D F736F F D20C0DAB9D9C0A5BDBAC5B8C6AE2E646F63>

Microsoft PowerPoint - 04-UDP Programming.ppt

Network Programming

PowerPoint Presentation

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

2장 변수와 프로시저 작성하기

어댑터뷰

Microsoft PowerPoint - GUI _DB연동.ppt [호환 모드]

Cluster management software

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

Microsoft PowerPoint - JasperReports 개발자 매뉴얼.ppt

PowerPoint 프레젠테이션

fundamentalOfCommandPattern_calmglow_pattern_jstorm_1.0_f…

JAVA Bean & Session - Cookie

JAVA PROGRAMMING 실습 08.다형성

var answer = confirm(" 확인이나취소를누르세요."); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write(" 확인을눌렀습니다."); else { document.write(" 취소를눌렀습니다.");

쉽게 풀어쓴 C 프로그래밍

자바-11장N'1-502

PowerPoint Template

<4D F736F F F696E74202D20C1A63139C0E520B9E8C4A120B0FCB8AEC0DA28B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

WAS 의동작과 WEB, Servlet, JSP 엑셈컨설팅본부 /APM 박종현 웹어플리케이션서버란? 웹어플리케이션서버방식은웹서버가직접어플리케이션프로그램을처리하는것이아니라웹어플리케이션서버에게처리를넘겨주고어플리케이션서버가어플리케이션프로그램을처리한다. 여러명의사용자가동일한페

MasoJava4_Dongbin.PDF

2009년 상반기 사업계획

Transcription:

서블릿의라이프사이클 뇌를자극하는 JSP & Servlet

Contents v 학습목표 서블릿클래스로부터서블릿객체가만들어지고, 서블릿객체가초기화되어서서블릿이되고, 서블릿이사용되고, 최종적으로소멸되기까지의전과정을서블릿의라이프사이클이라고한다. 이장에서는서브릿의라이프사이클에관련된프로그래밍기술을배워보자. v 내용 서블릿의라이프사이클 서블릿클래스의 init 메서드의 destroy 메서드 JSP 페이지의 jspinit 메서드와 jspdestroy 메서드 서블릿의환경을표현하는 ServletContext 객체 2/39

1. 서블릿의라이프사이클 서블릿클래스는웹브라우저에의해바로호출되는것이아니라서블릿클래스로부터 서블릿객체가만들어지고, 그객체가웹컨테이너에의해초기화된다음에호출된다. 웹브라우저의요청을처리할수있는상태의서블릿객체를서블릿이라고한다. [ 그림 6-1] 서블릿의라이프사이클 3/38

1. 서블릿의라이프사이클 웹컨테이너는서블릿을언제제거할까? 웹컨테이너는자신이종료되기전이나웹애플리케이션을리로드 (unload) 하기전에그에속하는모든서블릿을제거한다. 서블릿라이프사이클전체에거쳐서한번만실행되어야할코드는서블릿클래스안에 init 메서드와 destroy라는메서드를선언하고그안에써놓으면된다. public class SomeServlet extends HttpServlet { public void init() throws ServletException { 서블릿이초기화될때해야할일을기술하는부분 public void doget(httpservletrequest request, HttpServletResponse response) throws IOException, ServletException { out.println( <HTML> ); out.println( <HEAD><TITLE>Hello</TITLE></HEAD> ); out.println( <BODY>Hello, Everyone.</BODY> ); out.println( </HTML> ); public void destroy() { 서블릿이제거되기전에해야할일을기술하는부분 [ 그림 6-2] 서블릿클래스의 init 메서드와 destroy 메서드 4/38

1. 서블릿의라이프사이클 JSP 기술에서는초기화작업과마무리작업단계에해야할일을 jspinit 와 jspdestroy 메 서드안에써놓으면웹컨테이너에의해자동으로호출된다. <%! public void jspinit() { JSP 페이지로부터변환된서블릿이초기화될때해야할일을기술하는부분 %> <HTML> <HEAD><TITLE>Hello</TITLE></HEAD> <BODY> Hello, Everyone. </BODY> </HTML> <%! public void jspdestroy() { JSP 페이지로부터변환된서블릿이제거되기전에해야할일을기술하는부분 %> [ 그림 6-3] JSP 페이지의 jspinit 메서드와 jspdestroy 메서드 5/38

2. 서블릿클래스의 init 메서드와 destroy 메서드 v init 메서드의작성방버 init 메서드는파라미터가없는메서드로선언해야하고, 리턴타입은 void로지정해야하며, public 메서드로선언해야한다. public void init() throws ServletException { 우리가작성할코드가들어가는부분 위의점선으로표시된부분에서블릿클래스의초기화작업중에실행해야할코드를써 놓으면 init 메서드가완성된다. 6/38

2. 서블릿클래스의 init 메서드와 destroy 메서드 v init 메서드의작성방법 [ 예제 6-1] 피보나치수열을출력하는서블릿클래스 import javax.servlet.http.*; import javax.servlet.*; import java.io.*; import java.math.biginteger; public class FibonacciServlet extends HttpServlet { private BigInteger arr[]; public void init() { arr = new BigInteger[100]; arr[0] = new BigInteger( 1 ); arr[1] = new BigInteger( 1 ); for (int cnt = 2; cnt < arr.length; cnt++) arr[cnt] = arr[cnt-2].add(arr[cnt-1]); public void doget(httpservletrequest request, HttpServletResponse response) throws IOException, ServletException { String str = request.getparameter( NUM ); int num = Integer.parseInt(str); if (num > 100) num = 100; response.setcontenttype( text/html;charset=euc-kr ); PrintWriter out = response.getwriter(); out.println( <HTML> ); out.println( <HEAD><TITLE> 피보나치수열 </TITLE></HEAD> ); for (int cnt = 0; cnt < num; cnt++) out.println(arr[cnt] + ); out.println( </BODY> ); out.println( </HTML> ); 7/38

2. 서블릿클래스의 init 메서드와 destroy 메서드 v init 메서드의작성방법 톰캣의 webapps 디렉터리아래에 brain06이라는이름의웹애플리케이션디렉터리를만들고, 서블릿클래스를컴파일한결과를다음과같이설치하고등록한다. 2 WEB-INF/classes 서브디렉터리에 [ 예제 6-1] 의컴파일결과를저장하세요 3 WEB-INF 서브디렉터리에다음과같은 web.xml 파일을만들어서저장하세요 1 톰캣의 webapps 디렉터리아래에 brain06/web-inf/classes 서브디렉터리를만드세요 8/38

2. 서블릿클래스의 init 메서드와 destroy 메서드 v init 메서드의작성방법 [ 예제 6-1] 을호출하면서출력할항의수를 URL 뒤에쓰세요. [ 그림 6-5] 예제 6-1 의실행결과 웹컨테이너가시작될때서블릿이초기화되도록만드는엘리먼트 [ 그림 6-6] 웹컨테이너가시작될때서블릿이초기화되도록만드는엘리먼트 9/38

2. 서블릿클래스의 init 메서드와 destroy 메서드 v destroy 메서드의작성방법 destroy 메서드의작성방법은 init 메서드와비슷하다. 파라미터가없어야하고, 리턴타입은 void여야하고, public 메서드로선언해야한다. 하지만 init 메서드와달리 throws 절을쓸수없다. public void destroy() { 우리가작성할코드가들어가는부분 [ 그림 6-7] 인사말을출력하는웹애플리케이션의화면설계 10/38

2. 서블릿클래스의 init 메서드와 destroy 메서드 v destroy 메서드의작성방법 http://localhost:8080/brain06/yourname.html [ 그림 6-7] 의왼쪽화면의 URL [ 예제 6-2] 이름을입력받는 HTML 문서 http://localhost:8080/brain06/greeting [ 그림 6-7] 의오른쪽화면의 URL <HTML> <HEAD> <META http-equiv= Content-Type content= text/html;charset=euc-kr > <TITLE> 이름입력 </TITLE> </HEAD> <BODY> <H3> 이름을입력하십시오.</H3> <FORM ACTION=greeting> 이름 : <INPUT TYPE=TEXT NAME=NAME> <INPUT TYPE=SUBMIT VALUE= 확인 > </FORM> </BODY> </HTML> 11/38

2. 서블릿클래스의 init 메서드와 destroy 메서드 v destroy 메서드의작성방법 [ 예제 6-3] 인사말을출력하는서블릿클래스 import javax.servlet.http.*; import javax.servlet.*; import java.io.*; import java.util.*; public class GreetingServlet extends HttpServlet { private PrintWriter logfile; public void init() throws ServletException { try { logfile = new PrintWriter(new FileWriter( c:\\data\\log.txt, true)); catch (IOException e) { throw new ServletException(e); public void doget(httpservletrequest request, HttpServletResponse response) throws IOException, ServletException { String name = request.getparameter( NAME ); String greeting = 안녕하세요, + name + 님. ; if (logfile!= null) { GregorianCalendar now = new GregorianCalendar(); logfile.printf( %TF %TT - %s %n, now, now, name); response.setcontenttype( text/html;charset=euc-kr ); PrintWriter out = response.getwriter(); out.println( <HEAD><TITLE> 인사하기 </TITLE></HEAD> ); out.println( <BODY> ); out.println(greeting); out.println( </BODY> ); out.println( </HTML> ); public void destroy() { if (logfile!= null) logfile.close(); 12/38

2. 서블릿클래스의 init 메서드와 destroy 메서드 v destroy 메서드의작성방법 2 [ 예제 6-3] 의컴파일결과를 classes 디렉터리에저장하세요. 3 web.xml 파일을열어서다음과같은두엘리먼트를추가하세요 1 brain06 웹애플리케이션디렉터리의 WEB-INF 서브디렉터리로가세요. 13/38

2. 서블릿클래스의 init 메서드와 destroy 메서드 v destroy 메서드의작성방법 [ 그림 6-10] 예제 6-3 이만든로그파일의내용확인하기 출력메시지 14/38

2. 서블릿클래스의 init 메서드와 destroy 메서드 v 서블릿의초기화파라미터 서블릿의초기화파라미터란서블릿의초기화작업에필요한데이터의의미한다. <servlet> <servlet-name>agreement-servlet</servlet-name> <servlet-class>agreementservlet</servlet-class> <init-param> <param-name>file_name</param-name> <param-value>agreement.txt</param-value> </init-param> </servlet> 파라미터의이름파마미터의값 하나의서블릿클래스에둘이상의초기화파라미터를넘겨줄수있다. 서블릿클래스안에서초기화파라미터값을가져오려면 getinitparameter 라는메서드를 호출하면된다. 서블릿의초기화파라미터 String filename = getinitparameter( FILE_NAME ); 초기화파라미터의이름 15/38

2. 서블릿클래스의 init 메서드와 destroy 메서드 v 서블릿의초기화파라미터 [ 예제 6-4] 인사말을출력하는서블릿클래스 서블릿의초기화파라미터사용 import javax.servlet.http.*; import javax.servlet.*; import java.io.*; import java.util.*; public class GreetingServlet extends HttpServlet { private PrintWriter logfile; public void init() throws ServletException { String filename = getinitparameter( FILE_NAME ); try { logfile = new PrintWriter(new FileWriter(filename, true)); catch (IOException e) { throw new ServletException(e); public void doget(httpservletrequest request, HttpServletResponse response) throws IOException, ServletException { String name = request.getparameter( NAME ); String greeting = 안녕하세요, + name + 님. ; if (logfile!= null) { GregorianCalendar now = new GregorianCalendar(); logfile.printf( %TF %TT - %s %n, now, now, name); response.setcontenttype( text/html;charset=euc-kr ); PrintWriter out = response.getwriter(); out.println( <HEAD><TITLE> 인사하기 </TITLE></HEAD> ); out.println( <BODY> ); out.println(greeting); out.println( </BODY> ); out.println( </HTML> ); public void destroy() { if (logfile!= null) logfile.close(); 16/38

2. 서블릿클래스의 init 메서드와 destroy 메서드 v 서블릿의초기화파라미터 brain06 웹애플리케이션디렉터리의 WEB-INF/web.xml 파일에서블릿을등록할때다음과같이 FILE_NAME 라는이름의초기화파라미터를기재한다. [ 예제 6-4] 를등록하는 <servlet> 엘리먼트안에 <init-param> 서브엘리먼트를추가하세요. [ 그림 6-11] 예제 6-4 의등록방법 [ 그림 6-12] 예제 6-4 가만든로그파일의내용확인하기 17/38

2. 서블릿클래스의 init 메서드와 destroy 메서드 v 서블릿의초기화파라미터 [ 예제 6-4] 를등록하는기존의엘리먼트 [ 예제 6-4] 를등록하는새로운엘리먼트 [ 그림 6-13] 하나의서블릿클래스를가지고두개의서블릿을등록하는방법 18/38

3. JSP 페이지의 jspinit 메서드와 jspdestroy 메서드 v jspinit 메서드와 jspdestroy 메서드의작성방법 jspinit 메서드의작성방법은서블릿클래스의 init 메서드와비슷하다. 파라미터가없는메서드로만들어야하고, 리턴타입은 void로지정해야하고, public 메서드로선언해야한다. 하지만 throw 절을쓸수없다는점은 init 메서드와다르다. public void jspinit() { 우리가작성할코드가들어가는부분 jspdestroy 메서드의작성규칙은서블릿클래스의 destroy 메서드와비슷하다. 파라미터 가없어야하고, 리턴타입은 void 로지정하며, public 메서드로선언해야한다. public void jspdestroy() { 우리가작성할코드가들어가는부분 19/38

3. JSP 페이지의 jspinit 메서드와 jspdestroy 메서드 v jspinit 메서드와 jspdestroy 메서드의작성방법 [ 예제 6-5] jspinit, jspdestroy 메서드의사용예를보여주는 JSP 페이지 <%@page contenttype= text/html; charset=euc-kr import= java.io.*, java.util.* %> <%! private PrintWriter logfile; public void jspinit() { String filename = c:\\data\\datetime_log.txt ; try { logfile = new PrintWriter( new FileWriter(filename, true)); catch (IOException e) { System.out.printf( %TT - %s 파일을열수없습니다. %n, new GregorianCalendar(), filename); %> <HTML> <HEAD><TITLE> 현재의날짜와시각 </TITLE></HEAD> <BODY> <% GregorianCalendar now = new GregorianCalendar(); String date = String.format( 현재날짜 : %TY 년 %Tm 월 %Te 일, now, now, now); String time = String.format( 현재시각 : %TI 시 %Tm 분 %TS 초, now, now, now); out.println(date + <BR> ); out.println(time + <BR> ); if (logfile!= null) logfile.printf( %TF %TT 에호출되었습니다.%n, now, now); %> </BODY> </HTML> <%! public void jspdestroy() { if (logfile!= null) logfile.close(); %> 20/38

3. JSP 페이지의 jspinit 메서드와 jspdestroy 메서드 v jspinit 메서드와 jspdestroy 메서드의작성방법 [ 그림 6-14] 예제 6-5 의실행방법 [ 그림 6-15] 예제 6-5 가저장한로그파일의내용확인하기 21/38

3. JSP 페이지의 jspinit 메서드와 jspdestroy 메서드 v JSP 페이지의초기화파라미터 JSP 페이지는서블릿클래스와달리 web.xml 파일에등록하지않아도웹브라우저에서호출할수있지만, 초기화파라미터를기재하기위해서는 web.xml 파일에등록해야한다. web.xml 파일의루트엘리먼트인 <web-app> 아래에 <servlet> 과 <servle-mapping> 이라는두개의서브엘리먼트를쓴다. <web-app> <servlet> </servlet> <servlet-mapping> </servlet-mapping> </web-app> JSP 페이지의본래의 URL 경로명이들어갈부분 JSP 페이지를호출할때사용할 URL 경로명이들어갈부분 22/38

3. JSP 페이지의 jspinit 메서드와 jspdestroy 메서드 v JSP 페이지의초기화파라미터 <servlet> 엘리먼트안에 <servlet-name> 과 <jsp-file> 이라는서브엘리먼트를쓰고, <servlet-mapping> 엘리먼트안에 <servlet-name> 과 <url-pattern> 이라는서브엘리먼트를쓴다. <jsp-file> 엘리먼트안에는 JSP 페이지의 URL 경로명을써야하는데, 이경로명은웹애플리케이션내에서의경로명이어야하고반드시슬래시 (/) 로시작해야한다. <web-app> <servlet> <servlet-name>winners-jsp</servlet-name> <jsp-file>/winners.jsp</jsp-file> </servlet> <servlet-mapping> <servlet-name>winners-jsp</servlet-name> <url-pattern>/winners</url-pattern> </servlet-mapping> </web-app> 23/38

3. JSP 페이지의 jspinit 메서드와 jspdestroy 메서드 v JSP 페이지의초기화파라미터 JSP 페이지의초기화파라미터를기재하는방법은서블릿클래스의경우와동일하다. <servlet> 엘리먼트안에 <init-param> 이라는서브엘리먼트를쓰고, 그안에다시 <param-name> 과 <param-value> 라는두개의서브엘리먼트를쓴다. <web-app> <servlet> <servlet-name>winners-jsp</servlet-name> <jsp-file>/winners.jsp</jsp-file> <init-param> <param-name>file_name</param-name> <param-value>winner-list.txt</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>winners-jsp</servlet-name> <url-pattern>/winners</url-pattern> </servlet-mapping> </web-app> 초기화파라미터를지정하는엘리먼트 String filename = getinitparameter( FILE_NAME ); 초기화파라미터의이름 24/38

3. JSP 페이지의 jspinit 메서드와 jspdestroy 메서드 v JSP 페이지의초기화파라미터 [ 예제 6-6] 초기화파라미터를가져오는 JSP 페이지 <%@page contenttype= text/html; charset=euc-kr %> <HTML> <HEAD><TITLE> 초기화파라미터테스트 </TITLE></HEAD> <BODY> <% String dbname = getinitparameter( DB_NAME ); %> 데이터베이스이름 : <%= dbname %> <BR> </BODY> </HTML> [ 예제 6-6] 을등록하는엘리먼트 JSP 페이지의초기화파라미터 [ 그림 6-17] 예제 6-6 의실행결과 25/38

4. 서블릿의환경을표현하는 ServletContext 객체 v 서블릿의환경정보를가져오는방법 서블릿클래스나 JSP 페이지의환경에관련된정보는 javax.servlet 패키지의 ServletContext 인터페이스타입의객체를이용해서얻을수있다. 서블릿클래스에서이타입의객체를구하기위해서는 getservletcontext라는메서드를호출하면된다. ServletContext context = getservletcontext(); ServletContext 객체에대해 getserverinfo 라는메서드를호출하면서블릿이속하는웹서 버종류가리턴된다. ServletContext 객체를리턴하는메서드 String str = context.getserverinfo(); 웹서버의종류를리턴하는메서드 26/38

4. 서블릿의환경을표현하는 ServletContext 객체 v 서블릿의환경정보를가져오는방법 ServletContext 객체에대해 getmajorversion 과 getminorversion 이라는메서드를호출하 면웹컨테이너가지원하는서블릿규격서의메이저버전과마이너버전이리턴된다. int num1 = context.getmajorversion(); 서블릿의메이저버전을가져오는메서드 int num2 = context.getminorversion(); 서블릿의마이너버전을가져오는메서드 27/38

4. 서블릿의환경을표현하는 ServletContext 객체 v 서블릿의환경정보를가져오는방법 [ 예제 6-7] 웹서버의정보를출력하는 JSP 페이지 import javax.servlet.http.*; import javax.servlet.*; import java.io.*; public class ServerInfoServlet extends HttpServlet { public void doget(httpservletrequest request, HttpServletResponse response) throws IOException, ServletException { ServletContext context = getservletcontext(); String serverinfo = context.getserverinfo(); int majorversion = context.getmajorversion(); int minorversion = context.getminorversion(); response.setcontenttype( text/html;charset=euc-kr ); PrintWriter out = response.getwriter(); out.println( <HTML> ); out.println( <HEAD><TITLE> 웹서버의정보 </TITLE></HEAD> ); out.println( <BODY> ); out.printf( 웹서버의종류 : %s <BR>, serverinfo); out.printf( 지원하는서블릿버전 : %d.%d <BR>, majorversion, minorversion); out.println( </BODY> ); out.println( </HTML> ); 28/38

4. 서블릿의환경을표현하는 ServletContext 객체 v 서블릿의환경정보를가져오는방법 2 [ 예제 6-3] 의컴파일결과를 classes 디렉터리에저장하세요. 3 web.xml 파일을열어서다음과같은두엘리먼트를추가하세요 1 brain06 웹애플리케이션디렉터리의 WEB-INF 서브디렉터리로가세요. 29/38

4. 서블릿의환경을표현하는 ServletContext 객체 v 서블릿의환경정보를가져오는방법 [ 예제 6-8] application 내장변수의사용예를보여주는 JSP 페이지 <%@page contenttype= text/html; charset=euc-kr %> <HTML> <HEAD><TITLE> 웹서버의정보 </TITLE></HEAD> <BODY> 웹서버의종류 : <%= application.getserverinfo() %> <BR> 지원하는서블릿버전 : <%= application.getmajorversion() %>.<%= application.getminorversion() %> <BR> </BODY> </HTML> [ 그림 6-17] 예제 6-6 의실행결과 30/38

4. 서블릿의환경을표현하는 ServletContext 객체 v 웹애플리케이션의초기화파라미터값을가져오는 getinitparameter 메서드 web.xml 파일에웹애플리케이션전체에속하는초기화파라미터를기재할수도있다. web.xml 파일의루트엘리먼트인 <web-app> 엘리먼트바로아래 <context-param> 이라 는이름의서브엘리먼트를쓰고, 그안에 <param-name> 과 <param-value> 라는서브엘 리먼트를쓰면된다. <web-app... > <context-param> <param-name>db_name</param-name> <param-value>malldb</param-value> </context-param> </web-app> 웹애플리케이션의초기화파라미터 파라미터의이름 파마미터의값 String str = application.getinitparameter( DB_NAME ); 초기화파라미터의이름 31/38

4. 서블릿의환경을표현하는 ServletContext 객체 v 웹애플리케이션의초기화파라미터값을가져오는 getinitparameter 메서드 [ 예제 6-9] 웹애플리케이션의초기화파라미터를읽는 JSP 페이지 <%@page contenttype= text/html; charset=euc-kr %> <HTML> <HEAD><TITLE> 웹애플리케이션의초기화파라미터 </TITLE></HEAD> <BODY> 데이터베이스이름 : <%= application.getinitparameter( DB_NAME ) %> <BR> </BODY> </HTML> [ 그림 6-22] 웹애플리케이션의초기화파라미터지정방법 [ 그림 6-23] 예제 6-9 의실행결과 32/38

4. 서블릿의환경을표현하는 ServletContext 객체 v 로그메시지를기록하는 log 메서드 ServletContext 인터페이스의 log 메서드를이용하면로그파일에메시지를기록할수있다. log 메서드를호출할때는다음과같이파라미터로로그메시지를넘겨주어야한다. application.log( 인사하기 JSP 페이지가호출되었습니다. ); 로그메시지 log 메서드는파라미터로넘겨준메시지를톰캣의설치디렉터리아래의 logs 라는이름 의서브디렉터리안의 localhost.yyyy-mm-dd.log 라는이름의파일에기록한다. 33/38

4. 서블릿의환경을표현하는 ServletContext 객체 v 로그메시지를기록하는 log 메서드 [ 예제 6-10] log 메서드의사용예를보여주는 JSP 페이지 <%@page contenttype= text/html; charset=euc-kr %> <HTML> <HEAD><TITLE> 인사하기 </TITLE></HEAD> <BODY> 안녕하세요, <%= request.getparameter( NAME ) %> 님 <% application.log( [ 인사하기 ] JSP 페이지가호출되었습니다. ); %> </BODY> </HTML> 로그파일에기록을합니다 [ 그림 6-24] 예제 6-10 의실행결과 34/38

4. 서블릿의환경을표현하는 ServletContext 객체 v 같은웹애플리케이션에속하는웹컴포넌트들끼리데이터를주고받는방법 ServletContext 인터페이스의 setattribute, getattribute, removeattribute 메서드는같은웹애플리케이션디렉터리에있는웹컴포넌트들끼리데이터를공유할수있도록만드는메서드이다. setattibute 메서드는웹애플리케이션에할당된공유데이터영역에데이터를저장하는기능을한다. setattribute 메서드는그영역에있는데이터를읽어오는기능을한다. removeattribute 메서드는그영역의데이터를삭제하는기능을한다. application.setattribute( ID, lee77 ); 데이터이름 데이터값 String str = (String) application.getattribute( ID ); application.removeattribute( ID ); 데이터이름 35/38

4. 서블릿의환경을표현하는 ServletContext 객체 v 같은웹애플리케이션에속하는웹컴포넌트들끼리데이터를주고받는방법 [ 예제 6-11] 웹애플리케이션의데이터영역에데이터를저장하는 JSP 페이지 <%@page contenttype= text/html; charset=euc-kr %> <% String name = request.getparameter( NAME ); application.setattribute( NAME, name); %> <HTML> <HEAD><TITLE> 웹애플리케이션데이터저장하기 </TITLE></HEAD> <BODY> NAME 데이터가저장되었습니다. </BODY> </HTML> [ 예제 6-12] 웹애플리케이션의데이터영역으로부터데이터를읽어오는 JSP 페이지 <%@page contenttype= text/html; charset=euc-kr %> <HTML> <HEAD><TITLE> 웹애플리케이션데이터조회하기 </TITLE></HEAD> <BODY> 이름 : <%= application.getattribute( NAME ) %> </BODY> </HTML> 36/38

4. 서블릿의환경을표현하는 ServletContext 객체 v 같은웹애플리케이션에속하는웹컴포넌트들끼리데이터를주고받는방법 [ 예제 6-13] 웹애플리케이션의데이터영역에있는데이터를삭제하는 JSP 페이지 <%@page contenttype= text/html; charset=euc-kr %> <% application.removeattribute( NAME ); %> <HTML> <HEAD><TITLE> 웹애플리케이션데이터삭제하기 </TITLE></HEAD> <BODY> NAME 데이터가삭제되었습니다. </BODY> </HTML> [ 그림 6-26] 예제 6-11, 예제 6-12, 예제 6-13 의실행결과 37/38

4. 서블릿의환경을표현하는 ServletContext 객체 v 웹애플리케이션에관련된파일경로명을가져오는메서드 ServletContext 인터페이스에는웹애플리케이션의 URL 경로명을리턴하는 getcontextpath 라는메서드도있다. String apppath = application.getcontextpath(); 웹애플리케이션의 URL 경로명을리턴하는메서드 ServletContext 인터페이스의 getrealpath 메서드는웹애플리케이션디렉터리내의파 일경로명을파일시스템전체에대한절대경로명으로바꾸어서리턴하는메서드이다. String absolutepath = application.getrealpath( /sub1/intro.html ); 웹애플리케이션내에서의파일경로명 38/38

뇌를자극하는 JSP & Servlet