war/WEB-INF 폴더의 리소스에 대한 파일 경로
앱 엔진 프로젝트의 war/WEB-INF 폴더에 파일이 있습니다.자주 묻는 질문에서 서블릿 컨텍스트에서 파일을 읽을 수 있다고 읽었습니다.리소스에 대한 경로를 구성하는 방법을 알 수 없습니다.
/war/WEB-INF/test/foo.txt
위의 그림과 같이 File()에서 사용하는 리소스에 대한 경로를 어떻게 구성해야 합니까?
감사해요.
몇 가지 방법이 있습니다.WAR 파일이 확장되면(.war 파일이 아닌 파일 세트) 다음 API를 사용할 수 있습니다.
ServletContext context = getContext();
String fullPath = context.getRealPath("/WEB-INF/test/foo.txt");
그러면 원하는 리소스에 대한 전체 시스템 경로를 얻을 수 있습니다.그러나 서블릿 컨테이너가 Tomcat과 같이 WAR 파일을 확장하지 않으면 작동하지 않습니다.동작하는 것은, 서블릿 콘텍스트의getResource
방법들.
ServletContext context = getContext();
URL resourceUrl = context.getResource("/WEB-INF/test/foo.txt");
또는 입력 스트림만 원하는 경우:
InputStream resourceContent = context.getResourceAsStream("/WEB-INF/test/foo.txt");
후자의 접근 방식은 사용하는 Servlet 컨테이너와 애플리케이션이 설치된 위치에 관계없이 작동합니다.전자의 접근방식은 전개 전에 WAR 파일의 압축을 해제하는 경우에만 유효합니다.
EDIT: get Context() 메서드는 구현해야 합니다.JSP 페이지에서는,context
서블릿에서 당신은 그것을 당신의 집에서 얻을 수 있습니다.ServletConfig
서블릿으로 전달된다.init()
방법.그때 저장하면 그 후 언제든지 ServletContext를 얻을 수 있습니다.
이제 Java EE 7을 통해 리소스를 보다 쉽게 찾을 수 있습니다.
InputStream resource = getServletContext().getResourceAsStream("/WEB-INF/my.json");
https://docs.oracle.com/javaee/7/api/javax/servlet/GenericServlet.html#getServletContext--
늦은 건 알지만 보통은 이렇게 하는데
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
InputStream stream = classLoader.getResourceAsStream("../test/foo.txt");
언급URL : https://stackoverflow.com/questions/4340653/file-path-to-resource-in-our-war-web-inf-folder
'programing' 카테고리의 다른 글
스트림에서 Collections.toMap()을 사용할 때 목록의 반복 순서를 유지하려면 어떻게 해야 합니까? (0) | 2022.11.01 |
---|---|
PHP에서 ++$i와 $i++의 차이점은 무엇입니까? (0) | 2022.11.01 |
세트를 어레이로 변환하는 방법 (0) | 2022.11.01 |
내장된 가우스 기능을 사용하지 않고 이미지를 흐리게 하는 방법은 무엇입니까? (0) | 2022.10.30 |
상태 표시줄 및 백분율 인쇄 방법 (0) | 2022.10.30 |