2009-08-11 4 views
1

Java ee 프로젝트에 xml 파일을 추가하고 코드에서 사용하고 싶지만 src 디렉토리에서 파일을 처리 할 때 내 주소를 이해하지 못하고 tomcat의 bin 디렉토리에서 파일을 검색합니다. 내 프로젝트는 wicket framwork 및 JavaEE를 사용하고 있습니다. 누구든지 파일 주소 지정 방법을 알고 있습니까? 아니면 액세스 할 파일을 프로젝트에서 가져와야합니까?Java EE 프로젝트에 파일을 추가하는 방법은 무엇입니까?

this.getServletContext().getResource(path); 

public java.net.URL getResource(java.lang.String path) 
         throws java.net.MalformedURLException 

는 지정된 패스에 맵 된 자원에 대한 URL을 반환 할 수있는 서블릿 내부

답변

1

xml 파일이 서버 측에만 액세스해야하는 리소스 인 경우 최상의 선택은 전쟁의 WEB-INF 디렉토리 또는 WEB-INF의 일부 하위 디렉토리에 배치하는 것입니다. 이렇게하면 웹에서 리소스에 액세스 할 수 없게됩니다. 피터 D.에 의해 지적

그런 다음 당신이 (예외가 생략 핸들링)

예를 들어, 서블릿에서 당신이 이런 식으로 검색 할 수 ServletContext.getResource를 사용하여 검색 할 수 있습니다

String path = "/WEB-INF/my.xml"; 
URL url = getServletConfig().getServletContext().getResource(path); 
InputStream in = url.openStream(); 
// read content from input stream... 
0

. 경로는 "/"로 시작해야하며 현재 컨텍스트 루트에 상대적인 것으로 해석됩니다.

이 방법을 사용하면 서블릿 컨테이너는 모든 소스의 서블릿에서 리소스를 사용할 수 있습니다. 리소스는 로컬 또는 원격 파일 시스템, 데이터베이스 또는 .war 파일에 위치 할 수 있습니다.

서블릿 컨테이너는 리소스에 액세스하는 데 필요한 URL 처리기 및 URLConnection 객체를 구현해야합니다.

리소스가 경로 이름에 매핑되지 않으면이 메서드는 null을 반환합니다.

일부 컨테이너의 경우 URL 클래스의 메서드를 사용하여이 메서드에서 반환 한 URL에 쓸 수 있습니다.

자원 내용이 직접 반환되므로 .jsp 페이지 요청시 JSP 소스 코드가 반환된다는 점에 유의하십시오. 대신에 RequestDispatcher를 사용하여 실행 결과를 포함 시키십시오.

이 메소드는 java.lang.Class.getResource와는 다른 용도로 사용되며, 클래스 로더를 기반으로 리소스를 찾습니다. 이 메소드는 클래스 로더를 사용하지 않습니다.

+1

것은 신용을 제공/http://java.sun.com/products/servlet/2.3/javadoc/javax/servlet/ServletContext 링크를 클릭하십시오.html # getResource (java.lang.String) –

+0

JEE, 정말로 어디에서 왔는지 말할 필요가 있습니까? 대답은 도움이되고 관련성이 있으며, downvote – djna

+0

을 모욕하지는 않지만, 참조없이 소스에서 복사 및 붙여 넣기 한 것입니다. –

0

일반적으로 런타임시 src는 사용되지 않습니다. 나는 바람둥이를 사용하지 않지만, 내 환경에서 비 Java 파일을 src에서 bin 디렉토리로 복사하는 작업을 빌드했습니다.

classloader getResourceAsStream()을 사용하여 클래스를 가져 오는 것과 동일한 디렉토리를 검색하도록 파일을 여는 것이 필요할 수도 있습니다.

여기서는 XML 에 전달하려는 것으로 가정합니다. 또는 다른 곳에서 사용하는 것을 선호 할 수도 있습니다. URI 리소스 참조가 도움이 될 수 있습니다.

0

리소스 파일에 XML 파일을 저장하지 않는 이유는 무엇입니까? 다음 클래스를 사용하여 액세스 할 수 있습니다.

MyClass.class.getClassLoader(). getResourceAsStream (filename);

관련 문제