ファイルからテキストファイルを読み込んで、フォームから入力されたデータと照合し、ファイルにあればログインするというような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();
}
}
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の記述を修正するだけで動作するので。。。
どうでしょうか?
XMLから取り込めるんですね。こりゃあ便利だ!
やはり修正作業などに柔軟に対応できるように設計することが
大事なのですね。
どうもありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- C言語・C++・C# C# で、あるフォルダー内にあるすべてのテキストファイルを別のフォルダーにコピーする。 4 2022/11/21 13:23
- Android VBA、フォルダのパスに環境文字 ㉑ があり、VBAが機能しません。 2 2022/07/27 09:16
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
- Java java final 1 2022/06/10 22:49
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Visual Basic(VBA) 入力ボックスが繰り返しポップアップして止まらない。 下記コードでファイル名の変更をしたいのですが、変 1 2022/09/08 11:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Eclipse・プロジェクトで、フォ...
-
SVFの設定について:クラスパス...
-
javaクラスファイルをEclipseで...
-
classファイルについて
-
コンパイルをしようとするとエ...
-
eclipse でclassesフォルダーが...
-
【Eclipse】パッケージ・エクス...
-
jdbcドライバのjarファイルにク...
-
Java初心者です。 コマンドプロ...
-
EclipseでHTTP404エラーが出る。
-
earファイルを展開する方法
-
Tomcatの「\\WEB-INF\\classes...
-
javax.mailがimportできない
-
java クラスファイルとソースコ...
-
Warファイルの解凍について質問...
-
Eclipse「リフレッシュ」と「ク...
-
JavaBeansファイルとサーブレッ...
-
「削除するか、クラスパスの正...
-
Eclipse+Strutsでのxml修正時に...
-
名前空間とヘッダーファイル
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
javaクラスファイルをEclipseで...
-
Eclipse・プロジェクトで、フォ...
-
classファイルについて
-
SVFの設定について:クラスパス...
-
Eclipse「リフレッシュ」と「ク...
-
earファイルを展開する方法
-
【Eclipse】パッケージ・エクス...
-
eclipse でclassesフォルダーが...
-
EclipseでHTTP404エラーが出る。
-
JADで*.jarごとデコンパイルす...
-
jdbcドライバのjarファイルにク...
-
java クラスファイルとソースコ...
-
「削除するか、クラスパスの正...
-
プログラム実行の際に、「ソー...
-
VisualStudioでC++クラスを追加...
-
「メイン・マニフェスト属性が...
-
コンパイルした後 java (class...
-
vbs で jar ファイルを起動させ...
-
『ClassNotFoundException: org...
-
org.apache.tools.zip.* を使っ...
おすすめ情報