J 2 EE項目の相対パス取得

5779 ワード

1.基本概念の理解
絶対パス:絶対パスとはホームページ上のファイルまたはディレクトリがハードディスク上の本当の経路であり、例えば:
C:\xyz\test.txtはtest.txtファイルの絶対パスを表しています.http://www.sun.com/index.htm代表しています
URL絶対パス
相対パス:ある基準ディレクトリとの相対的なパスです.Webの相対パス(HTMLの相対ディレクトリ)を含み、例えば:
Servletでは、「/」はWebアプリケーションのカタログを表しています.物理経路との相対的な表現.例えば「./」は現在のディレクトリを表し、
"./"は上級ディレクトリを表します.このような類似の表現も相対的な経路に属する.
またURI、URL、URNなどについては、RFC関連文書規格を参照してください.
RFC 2396:Uniform Resource Identifers(URI):Generic Synt x,
(http://www.ietf.org/rfc/rfc2396.txt)
2.JSP/Servletにおける相対経路と絶対経路について.
2.1サーバ端のアドレス
サーバ端の相対アドレスとは、あなたのウェブアプリケーションのアドレスを指します.このアドレスはサーバ端で解析されました.
(違う)とjavascriptの相対アドレスはクライアントブラウザで解析しています.つまりこの時です.
jspとservletにおける相対アドレスは、あなたのウェブアプリケーションに対して、すなわち、http://192.168.0.1/webapp/はい、そうです
使うところは:
forward:servletの中のrequest.get Request Displatch(address);このaddressは
サーバー側で解析したので、forwardからa.jspまではこのように書くべきです.
request.getRequest Dispactch(「/user/a.jsp」)これ/現在のwebappに対して、
その絶対住所は:http://192.168.0.1/webapp/user/a.jsp.
sendRedirect:jsp中<%resp.sendRedirect("/rtcct/user/a.jsp");>
2.22、クライアントのアドレス
      すべてのhtmlページの相対アドレスはサーバルートディレクトリに対してです.http://192.168.0.1/)の、
ディレクトリの下のこのWebアプリケーションとのディレクトリではなくhttp://192.168.0.1/webapp/はい、そうです
Htmlのformフォームのaction属性のアドレスは、サーバルートディレクトリに対するものです.http://192.168.0.1/)の、
したがって、a.jspに提出すれば、action=「/webapp/user/a.jsp」またはaction=「%=request.get ContactextPath()」/user/a.jsp;
servletに提出するのはactionm=「/webapp/handleeservlet」です. 
Javascriptもクライアントで解析していますので、その相対パスはフォームと同じです.
したがって、一般的には、JSP/HTMLページなどで引用されているCSS、Javascript.アクションなどの属性の前に加えた方がいいです.
<%=request.get ContactextPath()>は、参照されたファイルがすべてWebアプリケーションのディレクトリに属することを保証するために使用されます.
また、このような「.」、「/」、「./」など、このファイルの位置に対する相対的なパスの使用は、できるだけ避けるべきである.
ファイルが移動すると問題が発生しやすいです.
3.JSP/Servletで現在のアプリケーションの相対パスと絶対パスを取得する
3.1 JSPで現在のアプリケーションの相対パスと絶対パスを取得する
ルートディレクトリに対応する絶対パス:request.get RequestURI()
ファイルの絶対パス    :appliation.getRealPath(request.get Request URI();
現在のウェブアプリケーションの絶対パス:aplication.getRealPath(/);
要求ファイルの上位ディレクトリを取得します.new File.getRealPath(request.get RequestURI).getPant()
3.2 Servletで現在のアプリケーションの相対パスと絶対パスを取得する
ルートディレクトリに対応する絶対パス:request.get ServletPath()
ファイルの絶対パス    :request.get Session().get ServletConttext().getRealPath
(request.get Request URI() 
現在のwebアプリケーションの絶対パス:servletConfig.get ServletContext().getRealPath(/);
    (Servlet Contectオブジェクトはいくつかの方式を獲得します.
      javax.servlet.http.HttpSession.get Servlet Conttext()
      javax.servlet.jsp.PageConttext.get Servlet Contect()
      javax.servlet.Servlet Config.get Servlet Contect()
    )
4.javaのクラスで相対パス、絶対パスを得る方法
4.1単独のJavaクラスで絶対パスを得る
java.io.FileのDoc文によると、
デフォルトではnew File(/)が代表するディレクトリは、System.get Property(「user.dir」)です.
プログラムを実行クラスの現在のパスを取得します.
package org.cheng.file;
import java.io.File;
public class FileTest{
    public static void main(String[]args)throws Exception{     
  System.out.printel(Thread.current Thread).get Contact Class Loader().getsResource("));   
  System.out.println(FileTest.class.get Class Loader).gets Resource(");       
System.out.println(Class Loader.get System Resource(「」);       
  System.out.println(FileTest.class.gets Resource(「」);       
  System.out.println(FileTest.class.getsResource)//Classファイルの所在経路 
  System.out.println(new File(/).getAbsoluutePath();       
  System.out.println(System.get Property(「user.dir」);   
)
)
4.2サーバ内のJavaクラスは現在のパスを取得する(ネットワークから)
(1).Weblogic
WebApplicationのシステムファイルのルートディレクトリはあなたのweblogicインストール先のルートディレクトリです.
例えば、あなたのweblogicがc:\bea\weblogic 700にインストールされていたら….
じゃ、ファイルのルートはc:\.
ですから、サーバー側のファイルにアクセスできるようにする方法が二つあります.
a.絶対パスを使う:
例えば、あなたのパラメータファイルをc:\yourconfig\yourconf.propertiesに置いて、
new FileInputStreamを直接使用する(「yourconfig/yourconf.properties」);
b.相対パスを使用する:
相対パスのルートディレクトリはあなたのwebapplicationのルートです.つまり、WEB-INFの上のディレクトリです.パラメータファイルを入れてください.
yourwebapp\yourconfig\yourconf.propertiesで、
このように使う:
new FileInputStream(./yourconfig/yourconf.properties);
この二つの方法はどちらでもいいです.自分で選んでください.
(2).Tomcat
クラスでSystem.get Property(「user.dir」)を出力します.表示されているのは%Tomcat Home%/binです.
(3).Resin
あなたのJSPの相対パスではなく、JSPエンジンがこのJSPを実行してSERVLETにコンパイルします.
新しいファイル法でFile f=new Fileをテストします.
このa.httmはresinのインストールディレクトリの下にあります.
(4)相対パスはどう読みますか?
[color=darkred]
[b] Java   getResource getResourceAsStream   

 :getClass().getResourceAsStream(filePath);//filePath   "/filename", [/b]
の中の/webを代表しています.
ルートをリリースしてWEB-INF/clases
この方法をデフォルトで使う経路は、WEB-INF/clasesです.すでにTomcatでテストしました.
5.ファイルを読み込む際の相対パスは、ハードコードと絶対パスの使用を避ける.(ネットワークから)
5.1 SpringのDI方式でファイルを取得し、ハードコードを避ける.
  以下の接続内容を参照してください.
  http://www.javajia.net/viewtopic.php?p=90213&
5.2プロファイルの読み込み
以下の接続内容を参照してください.
http://dev.csdn.net/develop/article/39/39681.shtm
5.3仮想パスまたは相対パスでxmlファイルを読み、ハードコードを避ける
以下の接続内容を参照してください.
http://club.gamvan.com/club/clubPage.jsp?iPage=1&tID=10708&ccID=8
6.Javaにおけるファイルの通常の操作(コピー、移動、削除、作成など)(ネットワークから)
よく使うjava File操作クラス
http://www.easydone.cn/014/200604022353065155.htm
Javaファイル操作大全(JSP中)
http://www.pconline.com.cn/pcedu/empolder/gj/java/0502/559401.html
javaファイルの操作の詳細(Java中国語ネット)
http://www.51cto.com/html/2005/1108/10947.htm
JAVAはどうやって目次とファイルを作成しますか?削除します.
http://www.gamvan.com/developer/java/2005/2/264.html
まとめ:
上記の内容の使用により、Webアプリケーションサーバ端、ファイルを移動し、ファイルを検索し、コピーすることができます.
ファイルの削除などの操作は、サーバーの相対アドレスに対して、絶対アドレス概念がより明確になります.
URIを参考することを提案します.RFC標準文段.同時にJava.io.File.Java.net.URI.などの内容に対して徹底的に理解します.
他の面に対する理解はより深く、徹底的にすることができる.