2009-07-16 19 views
1

Java Servletクラスのファイルを読み込むコードを書きました。 (私はTomcatサーバーと共にWindows上でNetbeansを使用しています)。しかし、私のサーブレットはファイルを見つけることができません!Java Servletからファイルを読み取る

掘り下げた後、読んでみたいファイルをTomcat/binフォルダに置く必要があることがわかりました。それは非常に驚くべきことです。 Webapps /フォルダへのパスを取得するにはどうすればよいですか?私のウェブサイトプロジェクトを「Web1」と呼んでみましょう。

私がやっていることは、自分のDOM文書をHTMLに変換するための.xslファイルを読み込もうとしていることです。最初は、この.xslファイルをどこにでも置いてみました(index.jspと同じレベルで、サーブレットクラスファイルと同じディレクトリにありますが、全く動作しませんでした)

また、終了したらtransform()、私のHTMLファイルもTomcat/binフォルダ〜に入ります!

答えて

5

javax.servlet.ServletContext.getRealPath(String path)を使用できますか?

特定の仮想パスの実際のパスを含む文字列を返します。たとえば、パス "/index.html"は、サーバーのファイルシステム上の絶対ファイルパスを返します。 "http://host/contextPath/index.html"の要求によって処理されます。contextPathは、このServletContextのコンテキストパスです。 返される実際のパスは、適切なパス区切り文字を含むサーブレットコンテナが実行されているコンピュータとオペレーティングシステムに適した形式。何らかの理由でサーブレットコンテナが仮想パスを実際のパスに変換できない場合(コンテンツが.warアーカイブから利用可能になった場合など)、このメソッドはnullを返します。

+0

あなたが提案したテクニックは...私はちょうど相対的な道を得る方法があるのだろうかと思っています。 – sivabudh

0

ここで、あなたはそのXSLを消費していますか?あなたのJavaコードからsrc/java/resourcesにファイルを置くと、WARがアセンブルされたときに/WEB-INF/classes/foo.xslがクラスパスの最上位になります。次に、Class#getResource( "foo.xsl")を使用するか、DOM4Jまたは同等のものを使用している場合は、ファイルをロードする方法があります。それは、このような

0

何かがあなたのために、より便利かもしれない別の話だクライアント上で変換を実行するJavaScriptあなたの場合 今:

java.net.URL url = ClassLoader.getSystemResource(file_name); 
    try { 
     InputStream is = url.openStream()); 
     //Read the file and do stuff 
    } catch(IOException e) { 
     System.err.println("Error: could not load the file"); 
    } 

これは、ファイルのためのInputStreamを取得できるようになります(あなたの場合は、webappsフォルダ内の何か)。結果を書いてみると分かりません。

関連する問題