OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

読込ファイルのパスについて

  • すぐに回答を!
  • 質問No.125111
  • 閲覧数912
  • ありがとう数5
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 59% (34/57)

 ファイルからテキストファイルを読み込んで、フォームから入力されたデータと照合し、ファイルにあればログインするというようなwebアプリを作ろうとしています。

しかし、テキストファイルが読み込まれてないようで、正しいパスワードを入力してもログインできません。読み込むファイルへのパス指定は絶対パスなのでしょうか、呼び出し元からの相対パスを指定するのでしょうか?

また、テキストファイルを置くディレクトリは決まっているのでしょうか?(「WEB-INFより上の階層に置く」など)

ちなみにサーバ環境はLinux+tomcat3.2.1+apache

---------------------------------------------------------------

public class LoginDataBeans {

///////// UserDataクラス /////////

private class UserData{
public String user_id;
public String password;
}

///////// メンバ変数 /////////

ArrayList userList;
private static final String logFilename = "/tomcat/logindata";←ここのパスは「絶対パス」?、それともこのファイルからの「相対パス」?

///////// コンストラクタ /////////

public LoginDataBeans(){
String item;
userList = new ArrayList();
try{
BufferedReader in = new BufferedReader(new FileReader(logFilename));
while((item = (String)in.readLine()) != null){
UserData udat = new UserData();
StringTokenizer st = new StringTokenizer(item);
udat.user_id = st.nextToken();
udat.password = st.nextToken();
userList.add(udat);
}
in.close();
}
catch(IOException e){
e.printStackTrace();
}
}
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.2

ファイルのパス名を絶対パスで指定するか、相対パスで指定するかというのはどちらでも問題なく出来るはずです。

絶対パスであれば、ファイルが存在する場合には問題なくアクセスできるはずですが、相対パスで指定する場合には環境に応じてファイルをどこに置くかが変わってきます。

サーバの環境がtomcat+apacheということで、tomcatが単独ではなくapcheにアドオンで動いているようなので、この場合相対パスのルート位置は、apache.confで指定したサーブレットのルート位置になっていませんか?

---- apache.conf ----
Alias serv_dir "/xxx/yyy"
----------------------
なら、相対パスのルートは、/xxx/yyy の位置


個人的には、ファイルにアクセスするようなサーブレットを作成する場合、web.xmlファイルに<init-param>を記述して、そこに絶対パスを記述し、サーブレット側では、getInitparameter()メソッドを使ってルート位置を取得して作業するようにしています。

-- web.xml --
   :
<init-param>
<param-name>DataDir</param-name>
<param-value>/servlet/data/</param-value>
</init-param>
   :
--------------

-- Servlet ----
public void init(ServletConfig config) {
   :
 String DataDir = config.getInitParameter("DataDir");
 String DataFile = DataDir + "datafile";
   :
}
---------------

こうしておけば、ディレクトリ構造が変わった場合にも、web.xmlの記述を修正するだけで動作するので。。。

どうでしょうか?
お礼コメント
techtak

お礼率 59% (34/57)

XMLから取り込めるんですね。こりゃあ便利だ!
やはり修正作業などに柔軟に対応できるように設計することが
大事なのですね。
どうもありがとうございました。
投稿日時 - 2001-08-28 18:21:49
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.1
レベル10

ベストアンサー率 28% (33/117)

C:\\temp\\aaa.txt というようなサーバーの中での絶対パスで開けました。 が、相対パスで開けるかどうかはよくわかりません。 相対パスだとすると、サーバーのexeファイルがある場所(アプリケーションサーバーのbinフォルダとか)からの相対パスになると思います。 ...続きを読む
C:\\temp\\aaa.txt
というようなサーバーの中での絶対パスで開けました。
が、相対パスで開けるかどうかはよくわかりません。
相対パスだとすると、サーバーのexeファイルがある場所(アプリケーションサーバーのbinフォルダとか)からの相対パスになると思います。
お礼コメント
techtak

お礼率 59% (34/57)

絶対パスでは出来ました。
いちいち全部打ち込まなくても、ファイル名の前に”./”を
記述しても絶対パスとして扱われるようです。
回答ありがとうございます。
投稿日時 - 2001-08-28 18:43:21


このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ