2012-09-21 4 views
3

는 내가 getRealPath(String s)에 대한 설명서를 읽고, 그리고 난이ServletContext getRealPath 메소드 - 가상 경로 란 무엇입니까?

가 지정된 가상 패스에 대응하는 실제의 패스를 포함한 String를 돌려줍니다이 문장을 읽을 때 나는 혼란되었다. 예를 들어, 서버의 파일 시스템에 대한 절대 파일 경로를 반환 /index.html 경로

가상 경로는 무엇입니까 ..의 contextPath는,이 ServletContext의 문맥 패스입니다 http://host/contextPath/index.html에 대한 요청에 의해 제공 될 것인가? 내 배포 환경에서 내부에 있다고 가정 해 봅시다. getRealPath ("index.html")는 대개 WEB-INF 디렉토리를 가리 킵니까? 또는 getRealPath()가 루트 디렉토리 (웹 응용 프로그램의 폴더 이름 안에 있음)를 읽기 시작합니까?

+1

그래서 우리가 루트라고 말하면 eclipse에서 "Web-Content"입니까? – KyelJmD

+0

답변에서 설명하거나 자세히 설명해 주시겠습니까? 답변으로 의견을 선택하고 싶습니다. – KyelJmD

답변

3

ServletContext.getRealPath(String s)은 실제 파일 시스템 경로를 반환합니다. 입력 문자열은 웹 응용 프로그램의 컨텍스트 경로와 관련하여 해석됩니다.

예 : 일식 이것은 일반적으로 웹 응용 프로그램 프로젝트 내에있는 WebContent 폴더입니다 (사용자 정의 할 수 있음). 프로젝트에서 WAR 파일을 빌드 한 후에는 WebContent 폴더가 사라 졌으므로 서버에서 입력 문자열이 WAR 파일의 폴더 (또는 .war 라이브러리)와 관련하여 해석됩니다. 이는 WAR를 분해하는지 여부에 달려 있습니다 배포 도중 또는하지 않음). 보안

이 방법에

주의 사항 은 당신이 서버 측에서 파일을 액세스 할 경우에 사용 (MUST NOT)한다. 일반적인 시나리오는 시작 중에 구성 파일을 구문 분석하는 것입니다. 응용 프로그램의 호출자가 주어진 자원의 실제 파일 시스템 경로를 알 수 없도록주의하십시오.

8

웹 컨테이너에서 액세스하는 리소스의 경로는 모두 가상 경로입니다. 가상 루트는 웹 응용 프로그램의 기본 폴더입니다. 그러나 실제 운영 체제 그들이있는 곳에, 그들은 "콘크리트"위치에 확실히있을 것입니다. getRealPath은 그 경로를 제공합니다.

enter image description here

를 적어 둡니다 당신이 사용할 때마다, 당신은 당신의 웹 애플리케이션의 이식성에 균열을 만드는 것을 :

이라는 이름의 JSP index.jsp를을 말해봐 .