>  기사  >  Java  >  Java(웹)의 상대 경로와 절대 경로에 대한 자세한 설명

Java(웹)의 상대 경로와 절대 경로에 대한 자세한 설명

零下一度
零下一度원래의
2017-06-29 14:43:282032검색

머리말:
얼마 전 웹 애플리케이션에서 파일 생성 및 이동을 처리하다 보니 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 JSP/Servlet의 상대 경로 및 절대 경로에 대한 정보입니다.


2.1 서버 측 주소

서버 측 상대 주소는 웹 애플리케이션에 상대적인 주소를 나타냅니다. 이 주소는 서버 측에서 확인됩니다

(클라이언트가 탐색하는 HTML 및 JavaScript의 상대 주소와는 다릅니다) 즉, 이때 jsp와 서블릿의 상대 주소는 웹 애플리케이션, 즉 http://192.168.0.1/webapp/에 상대적이어야 합니다.


사용되는 곳은 다음과 같습니다:
전달: 서블릿의 request.getRequestDispatcher(address); 이 주소는 서버 측에서

파싱되므로 a.jsp로 전달하려면 다음과 같이 작성해야 합니다.

request.getRequestDispatcher(( "/user/a.jsp") 이 /는 현재 웹 애플리케이션 webapp에 상대적이며 절대 주소는 192.168.0.1/webapp/user/a.jsp입니다.
sendRedirect: jsp480c461738e49b2ea7fd7de2cc345f87

2.22, 클라이언트 주소

html 페이지의 모든 상대 주소는 서버에 상대적입니다. 루트 디렉터리(http ://192.168.0.1/), (디렉토리 아래의 웹 애플리케이션 디렉토리) http://192.168.0.1/webapp/이 아닙니다.

HTML 형식의 작업 속성 주소는 서버 루트 디렉터리 192.168.0.1/)에 상대적이어야 합니다.

따라서 a.jsp에 제출하는 경우: action="/webapp/user/a.jsp" 또는 action ="784ef932070c663c70d86af5e4d3d09c"/user/a.jsp;
actiom="/webapp/handleservlet"으로 서블릿에 제출됨
javascript는 클라이언트 측에서도 구문 분석되므로 상대 경로 및 형태 형태는 동일합니다.


따라서 일반적인 상황에서는 참조된 파일이 JSP/HTML 페이지에서 참조하는 CSS, Javascript.Action 및 기타 속성 앞에
784ef932070c663c70d86af5e4d3d09c를 추가하는 것이 가장 좋습니다. 모두 웹 애플리케이션의 디렉토리에 속합니다.
또한 ".", "./", "../../"와 유사한 상대 경로 및 파일 위치에 대한 기타 유사한 상대 경로를 사용하지 마십시오. 이렇게 하면
쉽습니다. 파일을 이동할 때 문제가 발생합니다.


3. JSP/Servlet에서 현재 애플리케이션의 상대 경로와 절대 경로를 얻습니다.
3.1 JSP에서 현재 애플리케이션의 상대 경로와 절대 경로를 얻습니다.
루트 디렉터리에 해당하는 절대 경로: request.getRequestURI()

파일의 절대 경로 :application.getRealPath(request.getRequestURI());

현재 웹 애플리케이션의 절대 경로: application.getRealPath("/");
요청된 파일의 상위 디렉터리 가져오기: new File (application.getRealPath(request.getRequestURI()) ).getParent()

3.2 Servlet에서 현재 애플리케이션의 상대 경로와 절대 경로를 얻습니다.
루트 디렉터리에 해당하는 절대 경로: request.getServletPath();
파일의 절대 경로 :request.getSession().getServletContext().getRealPath
(request.getRequestURI())

현재 웹 애플리케이션의 절대 경로: servletConfig.getServletContext().getRealPath("/");


  (ServletContext对象获得几种方式:
       javax.servlet.http.HttpSession.getServletContext() 
       javax.servlet.jsp.PageContext.getServletContext() 
       javax.servlet.ServletConfig.getServletContext() 
     )

4.java 클래스에서 상대 경로와 절대 경로를 얻는 방법
4.1 별도의 Java 클래스에서 절대 경로를 얻습니다.
java.io.File의 Doc에 따르면 다음을 볼 수 있습니다.
기본적으로 new File("/")로 표시되는 디렉터리는 System.getProperty("user.dir")입니다.

다음 프로그램은 실행 클래스의 현재 경로를 가져옵니다


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

4.2 서버의 Java 클래스는 네트워크에서 현재 경로를 가져옵니다
(1).Weblogic

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

JAVA 디렉토리 및 파일 생성/삭제/수정/복사 방법

www.gamvan.com/developer/java/2005/2/264.html

요약:

위 내용을 활용하여 , 웹 응용 프로그램 서버 측에서 파일 이동 문제를 해결할 수 있습니다. 파일 검색, 파일 복사
삭제 및 기타 작업과 동시에 서버의 상대 주소와 절대 주소에 대한 개념이 더 명확해집니다.

URI의 RFC 표준 문서를 참고하는 것이 좋습니다. 동시에 Java.io.File, Java.NET.URI 및 기타 내용에 대한 철저한 이해가 가능합니다.




위 내용은 Java(웹)의 상대 경로와 절대 경로에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.