IT박스

웹 아카이브의 WEB-INF 디렉토리에서 리소스를로드하는 방법

itboxs 2020. 12. 25. 09:06
반응형

웹 아카이브의 WEB-INF 디렉토리에서 리소스를로드하는 방법


WEB-INF 디렉토리에 파일이있는 웹 아카이브가 있습니다.

Java 클래스에서 해당 파일을 어떻게로드합니까?

나는 그것을 classes 디렉토리에 넣고 거기에서 불러올 수 있다는 것을 알고 있습니다. 그냥 WEB-INF에 넣을 것입니다.


getResourceAsStream()ServletContext 객체 에서 메소드를 사용하십시오.

servletContext.getResourceAsStream("/WEB-INF/myfile");

ServletContext에 대한 참조를 얻는 방법은 응용 프로그램에 따라 다릅니다. Servlet 또는 JSP에서 수행 하시겠습니까?

편집 됨 : Servlet 객체 내부에 있다면 getServletContext(). JSP를 사용하는 경우 사전 정의 된 변수를 사용하십시오 application.


다음은 서블릿을 사용하지 않고 어떻게 작동하는지 보여줍니다.

project / WebContent / WEB-INF / web.xml에서 web.xml에 액세스하려고한다고 가정 해 보겠습니다.

  1. 프로젝트 속성 Source-tab에서 WEB-INF 폴더의 상위 컨테이너를 가리켜 소스 폴더를 추가합니다 (내 경우에는 WebContent).

  2. 이제 클래스 로더를 사용하겠습니다.

    InputStream inStream = class.getClass().getClassLoader().getResourceAsStream("Web-INF/web.xml")
    

Java (저지) 서버에서 만든 sqlite db 파일에 액세스하는 문제는 전적으로 경로 때문이었습니다. 일부 문서에서는 jdbc 연결 URL이 "jdbc : sqlite : //path-to-file/sample.db"와 같아야한다고 말합니다. 이중 슬래시는 htt 프로토콜 스타일 경로의 일부이고 배포시 제대로 매핑 될 것이라고 생각했지만 실제로는 절대 또는 상대 경로입니다. 따라서 WebContent 폴더 (tomcat 프로젝트)의 루트에 파일을 배치했을 때 이와 같은 URI가 "jdbc : sqlite : sample.db"로 작동했습니다.

저를 던지는 한 가지는 디버거를 밟을 때 "opening db : ... permission denied"라는 메시지를 받았다는 것입니다. 파일 시스템 권한 또는 SQL 사용자 권한의 문제라고 생각했습니다. SQLite에 MySQL 등과 같은 역할 / 권한의 개념이 없다는 것을 알게 된 후, 올바른 솔루션이라고 생각하기 전에 결국 파일 권한을 변경했지만 잘못된 메시지라고 생각합니다 (예 : 파일을 찾을 수 없음 대신 권한이 거부 됨).

이것이 누군가를 돕기를 바랍니다.

참조 URL : https://stackoverflow.com/questions/1108434/how-to-load-a-resource-from-web-inf-directory-of-a-web-archive

반응형