はじめて投稿いたします。
現在、SERVLETでアンケートフォーム(HTML)の内容を
ブラウザに表示させ、その内容をテキストファイルに保存する。
ということをやっております。
以下のプログラムを書いたのですが、
アンケート内容がブラウザに表示、テキストファイルを指定した場所(C\直下)へ書き出すことも出来たのですが、その中身のアンケート内容が1項目しか書き出されません。
項目は全部で10個ほどあり、テキストボックスや、チェックボックスなどが混ざったものです。
初心者の質問で大変恐縮ですが、ここ4日ほど進んでません。。。
お分かりになる方、お願いいたします。
ECLIPSE3、Tomcat4を使用しています。
package Test;
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class MaxTEST extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/plain; charset=UTF-8");
//出力設定
PrintWriter out = response.getWriter();
//繰り返しパラメを返す設定 Enumerationで名前の一覧を取得
Enumeration names = request.getParameterNames();
while(names.hasMoreElements()) {
String name = (String) names.nextElement();
String[] values = (String[]) request.getParameterValues(name);
for (int i = 0; i < values.length; i++) {
//ファイルへの書き出し
PrintWriter File = new PrintWriter(newFileOutputStream("c:/a.txt"));
File.println(name + "=" + values[i]);
//ブラウザへの書き出し
out.println(name + "=" + values[i]);
//ファイル書き出し終わり
File.close();
}
}
}
}
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
作り的には、動くコードを載せておきますので参考に。
多少コメント追加していますので、これでわかるとは思いますが、不明点あれば補足を。
あと、クラス名→先頭大文字、変数名→先頭小文字のルールはJavaの一般的な規約ですので守った方が良いです。
package test;
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class MaxTest extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// リクエスト発行画面はUTF-8
request.setCharacterEncoding("UTF-8");
// レスポンスキャラクタセットはUTF-8
response.setContentType("text/plain; charset=UTF-8");
// 出力設定
PrintWriter out = null;
// ファイルへの出力設定
PrintWriter writer = null;
try {
// 出力ストリームを取得
out = response.getWriter();
writer = new PrintWriter(new FileOutputStream("c:/a.txt"));
// 繰り返しパラメを返す設定 Enumerationで名前の一覧を取得
Enumeration names = request.getParameterNames();
while (names.hasMoreElements()) {
String name = (String) names.nextElement();
String[] values = (String[]) request.getParameterValues(name);
for (int i = 0; i < values.length; i++) {
// ファイルへの書き出し
writer.println(name + "=" + values[i]);
// ブラウザへの書き出し
out.println(name + "=" + values[i]);
}
}
} finally {
// 終了処理として、必ず出力ストリームのフラッシュ→クローズを行う
if (out != null) {
try { out.flush(); } catch (Exception e) {}
try { out.close(); } catch (Exception e) {}
}
if (writer != null) {
try { writer.flush(); } catch (Exception e) {}
try { writer.close(); } catch (Exception e) {}
}
}
}
}
No.1
- 回答日時:
>PrintWriter File = new PrintWriter(newFileOutputStream("c:/a.txt"));
ループ内で、毎回ファイル出力用のインスタンスを作っていますが、
FileOutputStreamのデフォルトって追記モードではないのでは?
↓のコンストラクタでappendをtrueにしておけば追記モードになったと思います。
FileOutputStream(File file, boolean append)
そもそも、ループ内で毎回インスタンス化するのは効率が悪いので
ループの外でPrintWriterを作って
ループを抜けたら、fluse()してclose()すべきです。
書き込みありがとうございます。
理解度が低いため(すいません。。)質問させていただきたいのですが、
>PrintWriter File = new PrintWriter(newFileOutputStream("c:/a.txt"));
をループの外に作って、FileOutputStream(File file, boolean append)を
ループ内で作成すればよいということでしょうか??
File fileがエクリプスでエラーが出るのですが、何か記載を変えるのですか?
お付き合いいただけると幸いです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- アプリ Android studio 初心者 Hello Android!しか表示されない 1 2023/08/01 08:47
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- その他(プログラミング・Web制作) pythonのWebスクレイピングでfind_allだとurlがNoneに 4 2022/04/17 18:21
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- その他(プログラミング・Web制作) pythonのグローバル変数 2 2022/11/25 18:02
- その他(プログラミング・Web制作) セレクトボックスで選択された値をコントローラーで使用したい 2 2022/07/26 16:41
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- その他(プログラミング・Web制作) python 気象データの取得 2 2023/06/20 23:54
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
九九を横に表示する。
-
equalsの逆
-
テキストファイルから空白行をよむ
-
BCBで指定位置から指定文字数分...
-
Servletでテキストボックスに入...
-
yyyymmddからyyyy/mm/d...
-
[JAVA]エラーが解決できません。
-
JavaでString型をChar型に変換...
-
InputStream.read()でタイムア...
-
プログラムのコードとLIBSVM形式
-
javaのファイル読み込み時の文...
-
JAVAでエラーがでる。
-
ObjectInputStreamとStreamCorr...
-
ファイルの入出力をするプログラム
-
Java int sum = 0は必要ですか?
-
テキストファイルにおいて任意...
-
JSPやサーブレットでSystem.out...
-
C言語のポインターに関する警告
-
System.err. printlnとSystem.o...
-
ORA-01858: 数値を指定する箇所...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
yyyymmddからyyyy/mm/d...
-
equalsの逆
-
csv出力について
-
九九を横に表示する。
-
Java int sum = 0は必要ですか?
-
テキストファイルから空白行をよむ
-
[JAVA]エラーが解決できません。
-
javaのfor文が機能してないみた...
-
InputStream.read()でタイムア...
-
Servletでテキストボックスに入...
-
Javaでデータに登録する度にID...
-
Inputstreamについて
-
BufferedReaderでのエラー
-
FileクラスのcanRead/canWrite...
-
java連結
-
Javaの質問です。テキストファ...
-
Java 読み込んだテキストファイ...
-
Class.forNameでエラーになる
-
テキストファイルの任意の文字...
-
テキストファイルにおいて任意...
おすすめ情報