WEB-INF 안에 있는 Properties파일 읽기
부루
안녕하세요.
다음의 코드가 서로 다른 결과를 가지는것은 무었일까요?
class Test {
public static void main(String args[]) {
System.out.println( new Test().getClass().getResource(prop.properites));
System.out.println( .getClass().getResource(prop.properites));
}
}
결과값:
현재 실행 경로\prop.properties
현재 실행 경로\prop.properties
public classTestServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println( getClass().getResource(prop.properties));
System.out.println( .getClass().getResource(prop.properties));
}
}
결과값:
웹 어플리케이션경로\prop.properties
null
참 희안하게 아래에는 null값이 나옵니다. 서블릿과 일반 클래스 사이에는 무슨 차이가 있길래...
이 질문이 나오게 된 경위는 Log4J처럼 WEB-INF의 properties파일이 있다면 그 파일을 읽고 없다면 기본 설정 파일을 읽고 싶어서 입니다.
서블릿 컨텍스트를 받아오지 않은 상태에서 일반 클래스가 WEB-INF의 파일을 읽을수 있는 방법이 있을까요?
-
화이트캣
TestServlet.class 와 같은 폴더에 넣어야할것 같은데요
-
물
네. 현재 파일의 위치에 무관하게 읽고 싶습니다. jar파일로 만들어서 설정파일이 클래스패스의 WEB-INF(웹일경우만), 클래스 패스의 루트, 설정 클래스와 같은 위치를 순차적으로 검색하고 싶습니다. 다만 똑같은 getResourceAsStream이라고 할지라도 서블릿 환경에서는 결과값이 null로 나오네요.
-
비치
파일을 절대 경로로 접근하게 하지 않고 상대경로로 접근하게 하고 싶으신 것인가요? 파일의 위치에 무관하게 읽어들이게 하고 싶은거라는 의미인지... 단순히 서블릿 컨텍스트의 존재 여부에 따라 달라지는 것이라면 해당 설정 파일의 위치를 절대 경로로 표시하고 읽어들인 다음 Properties class 등을 이용해서 속성값들을 이용하셔도 될 거라는 생각이 드네요
-
나라찬
케누님 물론 그렇게 해보았습니다만, 여전히 안됩니다;;
-
물
WEB-INF/classes/prop.properties 로 옮겨서 테스트해보세요.
properties파일은 class파일 취급하니까요.