programing

war/WEB-INF 폴더의 리소스에 대한 파일 경로

goodsources 2022. 11. 1. 00:03
반응형

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");

http://tomcat.apache.org/tomcat-5.5-doc/servletapi/javax/servlet/ServletContext.html#getRealPath(java.lang.String)

그러면 원하는 리소스에 대한 전체 시스템 경로를 얻을 수 있습니다.그러나 서블릿 컨테이너가 Tomcat과 같이 WAR 파일을 확장하지 않으면 작동하지 않습니다.동작하는 것은, 서블릿 콘텍스트의getResource방법들.

ServletContext context = getContext();
URL resourceUrl = context.getResource("/WEB-INF/test/foo.txt");

또는 입력 스트림만 원하는 경우:

InputStream resourceContent = context.getResourceAsStream("/WEB-INF/test/foo.txt");

http://tomcat.apache.org/tomcat-5.5-doc/servletapi/javax/servlet/ServletContext.html#getResource(java.lang.String)

후자의 접근 방식은 사용하는 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

반응형