• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Webアプリケーションにおけるデータファイルの保存場所)

Webアプリケーションにおけるデータファイルの保存場所

このQ&Aのポイント
  • Webアプリケーションにおけるデータファイルの保存場所について悩んでいます。
  • 現在、JSP+JavaBeansを利用して、掲示板を作成しています。
  • データファイルをWEBアプリケーション内部に格納する方法についてご教示ください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

tomatosukiさん、こんにちは。 javax.servletパッケージのServletContextインタフェイスのgetRealPathメソッドを利用すれば、Webアプリとしてのパスから、サーブレットが動作しているマシンのファイルシステム上の絶対パスを取得できます。 ServletまたはJSP上で以下のコードを挿入していただければ、そのWebアプリケーションにとってのルートディレクトリのパスが標準出力されます。 # javax.servlet.ServletContextのimportを忘れずに ServletContext context = null; String realPath = null; context = getServletContext(); realPath = context.getRealPath("/"); System.out.println( realPath ); 後はgetRealPathの引数を変えるか、取得したファイル・パスからの相対的にパスを付け加えるか、どちらかを行えば、求める内容に達すると思います。

参考URL:
http://java.sun.com/j2ee/sdk_1.3/ja/techdocs/api/javax/servlet/ServletContext.html#getRealPath(java.lang.String)
全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Javaのシリアライズについて質問です。

    Javaのシリアライズについて質問です。 以下の二つのコードで実行すると、ちゃんとシリアライズされたデータが生成されるのですが このコードでは実行するたびにデータが上書きされてしまいます。 これを実行するたびに新しいデータを最後尾に追加するような形にしたいのですがどのようにすればいいのでしょうか? よろしくお願いします。 ------------------------------------------------------------------------------- import java.io.FileOutputStream; import java.io.ObjectOutputStream; import java.io.FileInputStream; import java.io.ObjectInputStream; public class Main { public static void main(String[] args) { Data data = new Data(); data.setName("testtesttest"); try { FileOutputStream outFile = new FileOutputStream("data.txt"); ObjectOutputStream out = new ObjectOutputStream(outFile); out.writeObject(data); out.close(); outFile.close(); } catch(Exception ex) { ex.printStackTrace(); } } } ----------------------------------------------------------------------------------- import java.io.Serializable; public class Data implements Serializable { private String name = ""; public void setName( String NameData ) { name = NameData; } } -----------------------------------------------------------------------------------

    • ベストアンサー
    • Java
  • javaのObjectOutputStreamのエラーが消えません

    ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("test.txt")); oos.writeObject(text); ObjectInputStream ois = new ObjectInputStream(new FileInputStream("text.txt")); text = (LinkedList<String>)ois.readObject(); 最後の分のois.readObject()のなぜかClassNotFoundExceptionになってしまって先に進めないです。 これではあまり意味がないんですが、わかる方がいらっしゃいましたら教えてください

  • webアプリケーションでの画像ファイルの保存場所

    お世話になります。 Javaと、MySQLでウェブアプリケーションを作成していまして、ユーザーがアップロードしたファイルを どこのディレクトリに保存すればいいか悩んでいますので、教えてください。 ユーザーがログインし、自分のアイコンを設定した場合、 その画像ファイル(jpgなど)はどのフォルダに置いておけばいいのでしょうか? 例えば、imgフォルダにおいた場合、バージョンアップしたプログラムをデプロイすると、 サーバー内のimgフォルダ内のデータはなくなってしまうと思いますので、ユーザーがアップした画像などは そこに置いてはいけないと思います(バージョン・アップ時に消えてしまいますので)。 「デプロイしても消されない場所に置けばいい」ということでしょうか? 皆さんはどうされていますでしょうか? よろしくお願い致します。。

    • ベストアンサー
    • Java
  • "try{}catch(){}"文で"close()"はどのように書けばよいのでしょうか。

    こんにちは、片岡と言います。 プログラム1は、Java言語で学ぶデザインパターン入門(結城浩さん著)の 433ページを参考にして書きました。 私は、プログラム1のclose()の書き方よりもプログラム2のようなclose()の書き方が、 良いと思っています。 なぜならば、プログラム1では、out.writeObject(memento)行の例外によって、 close()が実行されないからです。 私のこの考え方は正しいのでしょうか。 もっと良いclose()の書き方はあるのでしょうか。 ご存知の方はいらっしゃいませんか。 ●プログラム1 public class Main { public static void saveMemento(Memento memento) { try { ObjectOutput out = new ObjectOutputStream(new FileOutputStream("game.dat")); out.writeObject(memento); out.close(); } catch (IOException e) { e.printStackTrace(); } } … //以下略 } public class Memento implements Serializable { … //以下略 } ●プログラム2 public class Main { public static void saveMemento(Memento memento) { try { ObjectOutput out = new ObjectOutputStream(new FileOutputStream("game.dat")); out.writeObject(memento); } catch (IOException e) { e.printStackTrace(); } finally { if (out != null) { try { out.close(); } catch (IOException ex) { ex.printStackTrace(); } } } } … //以下略 } public class Memento implements Serializable { … //以下略 } なお、私の環境は以下の通りです。 OS: Microsoft Windows XP Professional SP2 開発環境:Eclipse 3.2.2 java: java version "1.4.2_13"

    • ベストアンサー
    • Java
  • BufferedWriter(OutPutStream).write(String)で追記がしたい

    環境 windowsXP+tomcat4.0.1 Servlet内でExceptionをcatchし、ファイルに書き出したいのですが、追記が出来ません。上書きされてしまって困っています。 コード: FileOutputStream fos = new FileOutputStream(String); OutputStreamWriter osw = new OutputStreamWriter(fos,"M932"); BufferedWriter bw = new BufferdWriter(osw); bw.write(String); 最後のwrite()を追記型で起動したいのですが、参考書にBufferedWriterクラスに関することがほとんど載っていないため、どうしたらいいのやら。 ご存知の方がいましたら、ご回答お願いいたします。

    • ベストアンサー
    • Java
  • file操作時のエラー

    現在、Eclipseを開発環境としたJavaでのファイル操作の勉強をしているのですがエラーが出て困っています。 さっそくですがソースを張らせていただきます。 import java.io.*; import java.text.*; import java.util.*; public class Hallo { public static void main(String[] args) { File file = new File("C:\\Tomcat 6.0\\webapps\\blog","coment.txt"); FileOutputStream fos = new FileOutputStream(file); OutputStreamWriter osw = new OutputStreamWriter(fos , "Windows-31J"); BufferedWriter bw = new BufferedWriter(osw); String msg = "abc"; bw.write(msg); bw.close(); osw.close(); fos.close(); } } この様なソースを書いたところEclipseのエディタ上で 処理されない例外の型 FileNotFoundException 処理されない例外の型 UnsupportedEncodingException 処理されない例外の型 IOException などのエラーがMain分中のほとんどの行で出てしまいます。 しかし、このプログラムをサーブレットとして実装して動作させた場合には特に問題なく動きます。 個人的には開発環境からくるエラーか、それとも別の何か根本的な所で自分が間違っているのではないかと考えています。 みなさんのお返事お待ちしております。

    • ベストアンサー
    • Java
  • UNICODEへの文字コード変換

    以下のようにして、 日本語で書かれたファイルを読み込んで、 UNICODEに変換したいのですが、 できません。。。 どこが間違っているのでしょうか?(;;) 元の日本語ファイル「こんにちは」 >>できたファイル「\u3053\u3093\u306b\u3061\u306f」 という風にしたいのですが。。 //FileIOSteramの作成 FileInputStream fis = new FileInputStream(iFile); FileOutputStream fos = new FileOutputStream(oFile); //Stream ラップ InputStreamReader in = new InputStreamReader(fis, "EUC-JP-LINUX"); OutputStreamWriter out = new OutputStreamWriter(fos, "UTF16"); System.out.println(System.getProperty("file.encoding")); //読み込みと書き込み int c; InputStreamReader in = new InputStreamReader(fis, "Unicode"); Writer out = new Writer(fos); while((c = in.read()) != -1){ out.write(c); }

  • PHPにおいてJAVAのWEB-INFに対応するもの

    PHP4、apache2.0でWebアプリケーションを作ろうと思っているPHP初心者です。 Javaでwebアプリケーションを構築するときには、WEB-INFディレクトリにclassファイルやライブラリファイル、プロパティファイルなどを格納しますが、PHPの場合にはどのようなディレクトリ構成にするのが一般的なのでしょうか? また、classとして定義したPHPファイルを外部からのアクセス不可にするためには、apacheの.htaccessで該当ディレクトリをアクセス不可にするなど、HTTPサーバの設定で行うものなのでしょうか? ご存知の方、いらっしゃいましたらご回答よろしくお願いします。

    • ベストアンサー
    • PHP
  • 掲示板(CGI)設置でApacheの意味と使い方を教えて下さい。

    下記掲示板「めぐあい掲示板」を設置しようとしたのですが、Apacheの意味やインストール方法がわかりません。 めぐあい掲示板 [MI_BBS] V4.60のダウンロードファイルに含まれてるマニュアル(mi_bbs.txt)の119行~150行までの意味が全くわかりません。例えば「/usr/binにシンボリックリンクを作成する」の意味がわかりません。 http://www.megumi-island.net/cgi.html#crypt 当方、Apacheを使わない?掲示板やその他のCGIの設置はそこそこ経験がありますが、/usr/local/apache/を作成する方法が全くわかりません。 教えて下されば幸いです。 ちなみにディレクトリの作成とパーミッションの意味と設定方法はよくわかります。 なお、サーバーの環境は/usr/bin/perlです。 /usr/local/apache/ | |--- cgi-bin/ (701) 【スクリプト格納ディレクトリ】 | |--- htdocs/ (701) | | | |--- bbs_data/ (777) 【データファイル格納ディレクトリ】 | | | +--- bbs_file/ (733) 【添付ファイル格納ディレクトリ】 | +--- secret/ (701) | +--- bbs_pass/ (777) 【パスワードディレクトリ】

  • 価格.comの利用WEBアプリケーションは?

    価格.comや、マンションコミュニティのような掲示板サイトは何のアプリを利用しているのでしょうか? たとえば価格.comのURLは以下のようになっています。 http://bbs.kakaku.com/bbs/K0000329345/Page=2/SortRule=1/ResView=all/ これは言語は何を利用しているのでしょうか? K0000329345のディレクトリの下にindex.php的なファイルがあるのでしょうか? ちなみにマンションコミュニティも http://www.e-mansion.co.jp/bbs/thread/218925/ のような感じですが、これは何の言語なんでしょうか?