Java 웹에서 경로 문제를 해결하십시오.
Java에서 사용되는 경로는 절대 경로와 상대 경로의 두 가지 유형으로 나뉩니다. 궁극적으로 Java는 절대 경로를 사용하여 자원을 찾을 수 있습니다. 상대 경로에서 자원을 찾는 모든 방법은 몇 가지 편리한 방법 일뿐입니다. 그러나 자원을 찾기 위해 바닥에 절대 경로를 구축하는 데 도움이되는 것은 API입니다!
웹 응용 프로그램을 개발할 때는 종종 서버에서 현재 Webroot의 물리적 경로를 얻어야합니다.
서블릿, 액션, 컨트롤러 또는 필터, 리스너, 인터셉터 및 기타 관련 클래스 인 경우 ServletContext 만 얻은 다음 ServletContext.getRealPath ( "/")를 사용하여 서버에서 현재 응용 프로그램의 물리적 주소를 얻어야합니다.
수업에서 ServletContext를 검색 할 수없는 경우 두 가지 방법이 있습니다.
1. Java의 클래스로드 메커니즘을 사용하여 xxx.class.getClassLoader (). getResource ( "")를 호출하십시오. Method ClassPath를 얻은 다음 Process를 얻기 위해 Webroot 디렉토리를 얻습니다. 이 방법은 Webroot/Web-INF/클래스에서만 적용될 수 있습니다. 클래스가 JAR 파일로 포장되면 메소드가 유효하지 않습니다. 현재 다음 방법을 사용해야합니다.
2. 스프링 프레임 워크의 아이디어. web-inf/web.xml에서 webApprootKey의 매개 변수를 만들고 값 (기본값은 webApp.Root)을 키 값으로 지정 한 다음 String webApprootKey = getServletContext (). getRealPath ( "/")를 실행합니다. 리스너, 필터 또는 서블릿을 통해. 그런 다음 webApprootKey에 해당하는 webApp.Root를 키로 작성하고 시스템 속성 시스템 속성에 값을 씁니다. 그런 다음 Webroot의 물리적 경로는 프로그램에서 System.GetProperty ( "WebApp.Root")를 통해 얻습니다.
두 번째 아이디어에 따르면 더 확장 할 수 있습니다. 그러나 서버에 배포 된 응용 프로그램의 경우 필요하지 않은 경우 읽어보십시오.
다음은 ClassPath와 현재 클래스의 절대 경로를 얻는 몇 가지 방법입니다. 이 방법 중 일부를 사용하여 필요한 리소스의 절대 경로를 얻을 수 있습니다.
1.
Debitnoteaction.class.getResource ( "")
당신이 얻는 것은 현재 클래스 filetest.class 파일의 URI 디렉토리입니다. 자신을 포함하지 않습니다!
좋다:
파일 :/d :/eclipse/springtest/webroot/web-inf/classes/
ATCARNET/SRC/COM/EVI/MODULES/ATACARNET/ACTION/
2.
Debitnoteaction.class.getResource ( "/")
당신이 얻는 것은 현재 classpath의 절대 URI 경로입니다.
좋다:
파일 :/d :/eclipse/springtest/webroot/web-inf/classes/
3.
thread.currentthread (). getContextClassLoader (). getResource ( "")
당신이 얻는 것은 또한 현재 classpath의 절대 URI 경로입니다.
좋다:
파일 :/d :/eclipse/springtest/webroot/web-inf/classes/
4.
DebitNoteaction.class.getClassLoader (). getResource ( "")
또는
classload.getSystemResource ( "")
당신이 얻는 것은 또한 현재 classPath의 절대 URI 경로입니다.
좋다:
파일 :/d :/eclipse/springtest/webroot/web-inf/classes/
5. 서버 상대 경로를 얻습니다
System.GetProperty ( "user.dir")
예를 들면 다음과 같습니다
thread.currentthread ()를 사용하는 것이 좋습니다.
6. 프로젝트에서 절대 경로를 얻으십시오
일반적으로 사용됩니다
request.getRealPath ( "/")
또는
request.getRealPath ( "/config/")
그러나 request.getRealPath ( "/")를 사용하는 것이 좋습니다. ServletContext.getRealPath ( "/") 메소드를 시도하여 웹 애플리케이션의 루트 디렉토리로의 절대 경로를 얻을 수 있습니다.
SRC가 기본 상대 디렉토리이기 때문에 SRC 파일을 얻는 것은 매우 쉽습니다. 예를 들어, SRC의 COM 디렉토리에서 test.java 파일을 받으려면 충분하기 만하면됩니다.
파일 f = 새 파일 (com/test.java);
그러나 SRC 디렉토리 나 Webroot 디렉토리에없는 파일을 얻으려면 동일한 수준의 SRC 또는 Webroot에서 파일을 가져와야합니다 (예 : Doc).
내 어려운 방법은 다음과 같이 구현됩니다.
String Path = this.getServletContext (). getRealPath ( "/"); 속성 p = new Properties (); P.LOAD (new FileInputStream (new File (path.SubString (0, webroot ") + 1)) + "doc/db.properties")); System.out.println (p.getProperty ( "drivername"));
읽어 주셔서 감사합니다. 도움이되기를 바랍니다. 이 사이트를 지원 해주셔서 감사합니다!