본문 바로가기

JAVA /JSP & Servlet

Path , 자원 접근 메소드

절대 경로로 작성될 경우, 유지보수에 따른 어려움이 발생한다.

그리하여 , application 기본 객체는, 이런 문제를 해결할 수 있도록 웹 어플리케ㅣ션의 자원에 접근할 수 있는

메소드를 제공한다 .

 

getRealPath(String path) 리턴타입 , String

-> 웹 어플리케이션 내에서 지정한 경로에 해당하는 자원의 시스템 상에서의 자원 경로를 리턴한다.

-> 즉, 루트 경로를 포함한 실제 경로를 리턴한다.

getResource(String path) -> URL 타입으로 리턴, 웹 어플리케이션 내에서 지정한 경로에 해당하는 자원에 접근할 수 있는

URL 객체를 리턴한다.

getResourceAsStream(String path) -> InputStream 타입 리턴 , 지정한 경로에 해당하는 자원으로부터 데이터를 읽어올 수 있는

InputStream 을 리턴한다 .

 

이 메소드들은, 루트 패스 이후의 하위 디텍토리에 대한, 실제 경로를 갖기 때문에, 루트 디텍토리가 바뀌어도,

수정할 필요가 없어진다.

 

사용 예)

<%

String resourcePath = "/img/aaa.jpg";              //루트 이후의 경로.

%>

<%= application.getRealPath(resourcePath) %>      : 실제 경로. 루트를 포함한 절대 경로를 리턴한다.

<%

// 스트림 리턴 받기.  getResourceAsStream

try {

br = new BufferedReader( new InputStreamReader( application.getResourceAsStream(resourcePath) ));

while( (len = br.read(buf)) != -1) {

out.print(new String(buf,0,len);

}

}catch(IOException ee){}

finally {

if(br != null ) try { br.close(); } catch(IOException ee){}

}

%>

// URL 객체를 리턴하는 getResource() 메소드

<%

try{

URL url = application.getResource(resourcePath);

br = new BufferedReader( new InputStreamReader( url.openStream()));

while( (len = br.read(buf)) != -1  ) {

out.print(new String(buf,0,len);

}

}catch(IOException ee){}

finally{

if(br != null) try { br.close(); } catch(IOException ee){}

}

%>