2012-05-21 3 views
2

Tomcat 서블릿 애플리케이션에서 파일을 상대적으로 볼 수 있도록 배치 할 위치 ??서블릿/Tomcat 상대 파일 경로

더 자세히 : 외부 라이브러리를 사용하는 동안 은 내가 서블릿 페이지를 개발하고있다. 해당 라이브러리는 외부 로드 된 XML 파일 (상대 파일 경로)에 크게 의존합니다. 따라서이 XML 파일을 서블릿을 실행중인 디렉토리에 넣어야합니다.

파일에 액세스 할 수있는 방법이 있습니까? ? 웹 응용 프로그램을 톰캣에 배포하는 경우

+1

현재 System.getProperty ("user.dir")'을 사용하여 현재 작업 디렉토리를 가져올 수 있습니다. 그것을 인쇄하면 파일을 어디에 둘 것인지 알 수 있습니다 ... –

+0

거기에서 전체 파일 구조에 액세스 할 수 있습니다. 위대한 의견 모리츠. – Ewald

+0

그래, 내가 simillar 아이디어를 완료, 그 디렉토리에있는 파일에 작성했지만 그것은 바람둥이가 만드는 임시 디렉토리로 밝혀졌습니다 ... – Betamoo

답변

2

는 웹 응용 프로그램의 루트는 내 경로에있는 XML 파일에 액세스하는 서블릿을 사용하는 경우와 같은 $에 CATALINA_HOME/webapps에/YOUR_WEB_APP/

될 수있을 테니까요

request.getServletContext().getResourceAsStream("PATH/TO/YOUR/XML_FILE.xml") 

이는 InputStream으로 XML 파일을로드합니다 : 웹 응용 프로그램의 루트는, 당신은 다음을 사용할 수 있습니다.

File f; 
try { 
    f = new File(url.toURI()); 
} catch(URISyntaxException e) { 
    f = new File(url.getPath()); 
} 

편집 : 당신은 파일 자체에 대한 액세스를 원하는 경우에, 당신은 항상 File 객체 (다른 방법 포함)과 같이 얻을 수있는에서 URL를 얻기 위해 getResource(String resource) 방법을 사용할 수 있습니다에 그것들을 상대적으로 웹 브라우저에서 볼 수있게 만들려면 단순히 ./WEB-INF 및 ./META-INF 디렉토리에 두지 마십시오.

+0

넣어 외부 라이브러리의 코드에 액세스 할 수 없습니다 ... 나는 단지 그것이 상대 경로와 파일을로드 알아요 .. – Betamoo

+0

난 혼란 스러울거야. 너 뭐하려고? 외부 라이브러리에서 XML 파일에 액세스 할 수있게 만드시겠습니까? 그렇다면 상대 경로가 응용 프로그램 루트입니다. – Zach

0

만약이 라이브러리가 Hibernate 나 Log4J처럼 클래스 패스에서 파일을 검색하려고한다면, XML 파일을 WEB-INF에 넣어야 만 할 것이다. 그러나 수동으로하지 않는 것이 좋습니다. 파일을 응용 프로그램의 소스 디렉토리에 넣으면 파일이 올바른 위치에 배포되는지 확인할 수 있습니다.

0

이것은 오래된 질문입니다. 저는 Tomcat 9에서 일하고 있습니다. Tomcat 설치 디렉토리를 기본으로 삼아 꽤 성공적이었습니다. (CATALINA_HOME) 예를 들어 ROOT에있는 파일의 상대 경로는 "webapps/ROOT/someDir/fileName"입니다.

반복되는 질문에 대한 답변은 반복되는 질문을 다루는 곳입니다.