前書き:
少し前、Web アプリケーションでのファイルの作成と移動を処理するため、Java
の相対パス、絶対パス、その他の問題に関する多くの問題が発生しました。同時に、Web アプリケーションの相対パス、絶対パス、Java.io.File
クラスについても学びました。いくつかの情報も見つけました。同様の問題が発生した場合は、より効果的に解決できることを願っています。
=============================================== == ================================
1. 基本概念の理解
絶対パス: 絶対パスハードディスク上のホームページ上のファイルまたはディレクトリの実際のパス (URL および物理パス) 例:
C:/xyz/test.txt は、test.txt ファイルの絶対パスを表します。 www.sun.com/index.htm は
URL 絶対パスも表します。
相対パス: 特定のベースディレクトリからの相対パス。 Web の相対パス (HTML の相対ディレクトリ) が含まれます。例: サーブレットでは、「/」は Web アプリケーションのディレクトリを表します。物理パスの相対表現。たとえば、「./」は現在のディレクトリを表し、「../」は上位ディレクトリを表します。この同様の表現も相対パスに属します。
なお、URI、URL、URN等については、RFC関連文書規格を参照してください。
RFC 2396:Uniform Resource Identifiers (URI): Generic Syntax、
(www.ietf.org/rfc/rfc2396.txt)
2.1 サーバー側のアドレス
サーバー側の相対アドレスは、Web アプリケーションに関連するアドレスを指します。このアドレスはサーバー側で解決されます
(クライアントによって参照される HTML や JavaScript の相対アドレスとは異なります)。つまり、この時点での JSP とサーブレットの相対アドレスは、Web アプリケーション、つまり http://192.168.0.1/webapp/ に対する相対アドレスである必要があります。
使用される場所は次のとおりです:
forward: request.getRequestDispatcher(address) サーブレット内; このアドレスはサーバー側で
request.getRequestDispatcher(( "/user/a.jsp") この / は現在の Web アプリケーション webapp に対する相対アドレスであり、その絶対アドレスは 192.168.0.1/webapp/user/a.jsp です。
sendRedirect: jsp
2.22 では、クライアントのアドレス
HTML ページ内のすべての相対アドレスはサーバーからの相対アドレスです ルート ディレクトリ (http ://192.168.0.1/) ではなく、(ディレクトリ下の Web アプリケーションのディレクトリ) http://192.168.0.1/webapp/ ではありません。
したがって、a.jsp に送信される場合: action="/webapp/user/a.jsp" または action ="<%=request.getContextPath()%>"/user/a.jsp;
actiom="/webapp/handleservlet" としてサーブレットに送信されます
JavaScript はクライアント側でも解析されるため、その相対パスと形状 形状は同じです。
したがって、通常の状況では、CSS、JavaScript.Action、および JSP/HTML ページによって参照されるその他の属性の前に
<%=request.getContextPath()%> を追加して、参照されるファイルが確実にはすべて Web アプリケーション内のディレクトリに属します。
さらに、ファイルの場所を基準とした「.」、「./」、「../../」などの相対パスの使用は避けるようにしてください。この方法では、
問題が発生しやすくなります。ファイルを移動するときの問題。
3. JSP/Servletで現在のアプリケーションの相対パスと絶対パスを取得する
3.1 JSPで現在のアプリケーションの相対パスと絶対パスを取得する
ルートディレクトリに対応する絶対パス: request.getRequestURI()
現在の Web アプリケーションの絶対パス: 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:/.
したがって、サーバー側ファイルにアクセスするには 2 つの方法があります。
a. 絶対パスを使用します:
たとえば、パラメーター ファイルを c:/yourconfig/yourconf.properties に置きます。
new FileInputStream("yourconfig/yourconf.properties") を使用します。
b. 相対パスを使用します。ルート ディレクトリは Web アプリケーションのルート パスであり、WEB-INF の上位ディレクトリです。パラメータ ファイルを yourwebapp/yourconfig/yourconf.properties に配置し、次のように使用します。
new FileInputStream("./yourconfig / yourconf.properties");
両方の方法が利用可能で、お好みで選択してください。クラス内の
(2).Tomcat
出力 System.getProperty("user.dir"); 表示されるのは %Tomcat_Home%/bin
たとえば、 new file メソッドを使用して File f = new File("a.htm");
この a.htm をテストします。はresin(4)のインストールディレクトリにあります。相対パスの見方は?
Java ファイルで getResource または getResourceAsStream を使用できます
このメソッドを使用するデフォルトのパスは WEB-INF/classes です。 Tomcat ではすでにテストされています。 5. ファイルを読み取るときは、ハードコーディングと絶対パスの使用を避けるための相対パス。 (インターネットより)
5.1 ハードコーディングを避けるために、Spring の 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 中国語 Web サイト)
www.51cto.com/html/2005/ 1108/10947.htm
JAVA ディレクトリとファイルを作成/削除/変更/コピーする方法
www.gamvan.com/developer/java/2005/2/264.html
概要:
上記のコンテンツの使用を通じてを使用すると、Web アプリケーション サーバー側でのファイルの移動の問題を解決でき、ファイルの検索、ファイルのコピー
URIのRFC標準ドキュメントを参照することをお勧めします。同時に、Java.io.File、Java.NET.URI およびその他の内容についてもより深く理解できるようになります。
以上がJava(Web)の相対パスと絶対パスの詳しい説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。