servletcontext.getRealPath("/")는 무엇을 의미하며 언제 사용해야 하나요?
소개
Java 서블릿 애플리케이션에서는 ServletContext#getRealPath() 메소드는 상대 웹 컨텐츠 경로를 절대 디스크 파일 시스템 경로로 변환하는 데 사용됩니다. 지정된 경로는 파일이거나 웹 콘텐츠 내의 디렉터리일 수 있습니다. 그러나 이 방법은 주의해서 사용해야 하며 최신 Java EE 개발에서는 일반적으로 권장되지 않습니다.
getRealPath("/")
/ getRealPath("/")에서 웹 콘텐츠 디렉터리의 루트를 나타냅니다. 웹 애플리케이션의 web.xml 파일이 포함된 디렉터리에 대한 절대 파일 시스템 경로입니다. 예를 들어 다음 프로젝트 구조에서
YourWebProject/
src/
:
web/
META-INF/
WEB-INF/
index.jsp
login.jsp
:
로그인 후 복사
getRealPath("/")를 실행하면 /path/to/server/work와 같은 웹 디렉터리에 대한 파일 시스템 경로가 반환됩니다. /folder/some.war/web.
주의 및 제한 사항
getRealPath()는 특정 상황에서 유용할 수 있지만 몇 가지 제한 사항이 있으며 일반적으로 다음과 같은 이유로 권장되지 않습니다.
-
쓰기는 허용되지 않습니다. 지속성: getRealPath()를 사용하여 작성된 파일에 대한 변경 사항은 WAR 재배포 중에 손실됩니다.
-
확장 의존성: getRealPath()의 신뢰성은 WAR 파일 확장을 위한 서버 구성에 따라 달라집니다. WAR이 디스크 파일 시스템으로 확장되지 않으면 getRealPath()가 잘못된 경로 또는 null 경로를 반환할 수 있습니다.
-
이식 가능한 사용 사례 없음: 일반적으로 getRealPath를 사용하는 것보다 더 이식 가능하고 신뢰할 수 있는 대안이 있습니다. ().
대체 getRealPath()
getRealPath()를 사용하는 대신 다음 대안을 고려하십시오.
- ServletContext#getResourceAsStream()을 사용하여 웹 내의 리소스에 대한 InputStream을 얻습니다. content.
- 사용 가능한 목록을 검색하려면 ServletContext#getResourcePaths()를 사용하세요. 리소스 경로.
- 리소스에 대한 URL을 얻으려면 ServletContext#getResource()를 사용하세요.
- 파일 업로드 또는 임시 파일 생성에 대해서는 아래 "참조" 링크를 참조하세요.
참고
- [getResourceAsStream() 대 FileInputStream](https://stackoverflow.com/questions/4212943/resource-as-inputstream-in-java-best-practice)
- [권장 방법 업로드된 파일을 서블릿에 저장 애플리케이션](https://stackoverflow.com/questions/5797716/recommended-way-to-save-uploaded-files-in-a-servlet-application)
- [재배포 시 데이터를 유지하는 간단한 방법 자바 EE 7 웹 애플리케이션](https://stackoverflow.com/questions/11736935/simple-ways-to-keep-data-on-redeployment-of-java-ee-7-web-application)
위 내용은 `ServletContext.getRealPath('/')`는 무엇을 하며, 최신 Java EE 애플리케이션에서 사용을 피해야 하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!