머리말:
얼마 전 웹 애플리케이션에서 파일 생성 및 이동을 처리하다 보니 Java
에서 상대 경로, 절대 경로 및 기타 문제에 관한 많은 문제가 발생했습니다. 동시에 웹 애플리케이션의 상대 경로, 절대 경로 및 Java.io.File
클래스에 대해 배웠습니다. 저도 몇 가지 정보를 알아냈습니다. 비슷한 문제가 발생하면 더 효과적으로 해결할 수 있기를 바랍니다.
============================================== == ===============================
1. 기본 개념의 이해
절대 경로: 절대 경로 하드 디스크의 홈 페이지에 있는 파일 또는 디렉터리의 실제 경로(URL 및 실제 경로) 예:
C:/xyz/test.txt는 test.txt 파일의 절대 경로를 나타냅니다. www.sun.com/index.htm은
URL 절대 경로도 나타냅니다.
상대 경로: 특정 기본 디렉터리에 대한 상대 경로입니다. 웹의 상대 경로(HTML의 상대 디렉터리)를 포함합니다. 예: 서블릿에서 "/"는 웹 애플리케이션의 디렉터리를 나타냅니다. 물리적 경로의 상대적 표현. 예를 들어 "./"는 현재 디렉터리를 나타내고 "../"는 상위 디렉터리를 나타냅니다. 이 유사한 표현은 상대 경로에도 속합니다.
그 외 URI, URL, URN 등에 대해서는 RFC 관련 문서 표준을 참고하세요.
RFC 2396: URI(Uniform Resource Identifiers): 일반 구문,
(www.ietf.org/rfc/rfc2396.txt)
2.1 서버 측 주소
서버 측 상대 주소는 웹 애플리케이션에 상대적인 주소를 나타냅니다. 이 주소는 서버 측에서 확인됩니다
(클라이언트가 탐색하는 HTML 및 JavaScript의 상대 주소와는 다릅니다) 즉, 이때 jsp와 서블릿의 상대 주소는 웹 애플리케이션, 즉 http://192.168.0.1/webapp/에 상대적이어야 합니다.
사용되는 곳은 다음과 같습니다:
전달: 서블릿의 request.getRequestDispatcher(address); 이 주소는 서버 측에서
request.getRequestDispatcher(( "/user/a.jsp") 이 /는 현재 웹 애플리케이션 webapp에 상대적이며 절대 주소는 192.168.0.1/webapp/user/a.jsp입니다.
sendRedirect: jsp<%response.sendRedirect("/rtccp/user/a.jsp");%>
2.22, 클라이언트 주소
html 페이지의 모든 상대 주소는 서버에 상대적입니다. 루트 디렉터리(http ://192.168.0.1/), (디렉토리 아래의 웹 애플리케이션 디렉토리) http://192.168.0.1/webapp/이 아닙니다.
따라서 a.jsp에 제출하는 경우: action="/webapp/user/a.jsp" 또는 action ="<%=request.getContextPath()%>"/user/a.jsp;
actiom="/webapp/handleservlet"으로 서블릿에 제출됨
javascript는 클라이언트 측에서도 구문 분석되므로 상대 경로 및 형태 형태는 동일합니다.
따라서 일반적인 상황에서는 참조된 파일이 JSP/HTML 페이지에서 참조하는 CSS, Javascript.Action 및 기타 속성 앞에
<%=request.getContextPath()%>를 추가하는 것이 가장 좋습니다. 모두 웹 애플리케이션의 디렉토리에 속합니다.
또한 ".", "./", "../../"와 유사한 상대 경로 및 파일 위치에 대한 기타 유사한 상대 경로를 사용하지 마십시오. 이렇게 하면
쉽습니다. 파일을 이동할 때 문제가 발생합니다.
3. JSP/Servlet에서 현재 애플리케이션의 상대 경로와 절대 경로를 얻습니다.
3.1 JSP에서 현재 애플리케이션의 상대 경로와 절대 경로를 얻습니다.
루트 디렉터리에 해당하는 절대 경로: request.getRequestURI()
현재 웹 애플리케이션의 절대 경로: application.getRealPath("/");
요청된 파일의 상위 디렉터리 가져오기: new File (application.getRealPath(request.getRequestURI()) ).getParent()
3.2 Servlet에서 현재 애플리케이션의 상대 경로와 절대 경로를 얻습니다.
루트 디렉터리에 해당하는 절대 경로: request.getServletPath();
파일의 절대 경로 :request.getSession().getServletContext().getRealPath
(request.getRequestURI())
(ServletContext对象获得几种方式: javax.servlet.http.HttpSession.getServletContext() javax.servlet.jsp.PageContext.getServletContext() javax.servlet.ServletConfig.getServletContext() )
package org.cheng.file;import java.io.File; public class FileTest { public static void main(String[] args) throws Exception { System.out.println(Thread.currentThread().getContextClassLoader().getResource("")); System.out.println(FileTest.class.getClassLoader().getResource("")); System.out.println(ClassLoader.getSystemResource("")); System.out.println(FileTest.class.getResource("")); System.out.println(FileTest.class.getResource("/")); //Class文件所在路径 System.out.println(new File("/").getAbsolutePath()); System.out.println(System.getProperty("user.dir")); }}
WebApplication의 시스템 파일 루트 디렉터리는 weblogic 설치의 루트 디렉터리입니다.
예: weblogic이 c:/bea/weblogic700...에 설치된 경우...
그러면 파일의 루트 경로는 c:/입니다.
따라서 서버측 파일에 액세스하는 방법에는 두 가지가 있습니다.
a. 절대 경로 사용:
예를 들어 매개변수 파일을 c:/yourconfig/yourconf.properties에 넣고
new FileInputStream("yourconfig/yourconf.properties")을 직접 사용합니다.
상대 경로를 사용합니다. 루트 디렉터리는 WEB-INF의 상위 디렉터리인 웹 애플리케이션의 루트 경로입니다. 매개변수 파일을 yourwebapp/yourconfig/yourconf.properties에 배치하고 다음과 같이 사용하세요.
new FileInputStream("./yourconfig / yourconf.properties");
(2).Tomcat
Output System.getProperty("user.dir")이 클래스에 표시됩니다. %Tomcat_Home%/bin
(3).Resin
은 JSP의 상대 경로가 아닙니다. . 이 JSP를 실행하고 SERVLET으로 컴파일하는 JSP 엔진입니다.
경로는 루트입니다. 예를 들어 테스트하려면 new file 메소드를 사용하세요. File f = new File("a.htm");This a.htm resin
(4) 설치 디렉터리에 있습니다. 상대 경로는 어떻게 읽어요?
Java 파일에서 getResource 또는 getResourceAsStream을 사용할 수 있습니다.
예: getClass().getResourceAsStream(filePath);//filePath는 "/filename"일 수 있습니다. 여기서 /는 게시 루트 경로 아래의 web
WEB-INF/classes를 나타냅니다.
이 방법을 사용하는 기본 경로는 WEB-INF/classes입니다. 이미 Tomcat에서 테스트되었습니다.
5. 하드 코딩 및 절대 경로 사용을 피하기 위해 파일을 읽을 때 상대 경로. (인터넷에서)
5.1 하드 코딩을 피하기 위해 스프링의 DI 메커니즘을 사용하여 파일을 얻습니다.다음 연결 내용 참조:
www.javajia.net/viewtopic.php?p=90213&5.2 구성 파일 읽기
다음 연결 내용 참조:
dev.csdn.net/develop/article/39/39681 .shtm
5.3 하드 코딩을 피하기 위해 가상 경로 또는 상대 경로를 통해 xml 파일 읽기
다음 연결 내용을 참조하십시오:
club.gamvan.com/club/clubPage.jsp?iPage=1&tID=10708&ccID=8
6 .Java 파일에 대한 일반적인 작업(인터넷에서)(복사, 이동, 삭제, 생성 등)
일반적으로 사용되는 Java 파일 작업 클래스
www.easydone.cn/014/200604022353065155.htm
Java 파일 작업 전체 모음 (JSP에서)
www.pconline.com.cn/pcedu/empolder/gj/java/0502/559401.html
Java 파일 작업에 대한 자세한 설명(Java 중국어 웹사이트)
www.51cto.com/html/2005/ 1108/10947.htm
www.gamvan.com/developer/java/2005/2/264.html
위 내용을 활용하여 , 웹 응용 프로그램 서버 측에서 파일 이동 문제를 해결할 수 있습니다. 파일 검색, 파일 복사
삭제 및 기타 작업과 동시에 서버의 상대 주소와 절대 주소에 대한 개념이 더 명확해집니다.
위 내용은 Java(웹)의 상대 경로와 절대 경로에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!