jspとjavaBeansを使用しています。
顧客情報をDBから検索して明細を画面出力し帳票印刷する
ために、データをCSVファイルへ出力したいのですが、
どうやってCSVファイルへ出力するのでしょうか?
ごく簡単な形式でいいので教えて下さい。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

CSVの形式を知っていれば、あとはファイル出力で


問題はないはずですよ。
#カンマ区切りとかタブ区切りとか・・・

ではでは☆
    • good
    • 0
この回答へのお礼

自分で出力データをカンマ編集し、ファイル出力する。
ということで宜しいのでしょうか?
とりあえず、その方向でやってみます。
ありがとうございます。

お礼日時:2001/05/23 15:29

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QJSP/Servlet DBからデータを読み込み、CSV形式でダウンロードさせる・・・・

まず、あるボタンをおすと、Servletに飛ばして、そこでDBから特定のデータを読み込んで、読み込んだデータをカンマ区切りにして、ダウンロードさせます。
そして、ダウンロード直後にそのファイルを開かせないで、ダウンロードした人が任意の場所にファイルを保存させたいのです。 

ダウンロード自体はできているのですが、どうしてもダウンロード直後にエクセルファイルでひらいてしまい、任意の場所に保存させることができません。Officeの入っていないPCなら任意の場所に保存させられるようなのですが・・・・。

解決案をお待ちしております。

Aベストアンサー

resp.setHeader("Content-Disposition", "attachment; filename=\"tets.csv\"");

Servlet でこの一行を入れてみてはどうですか?
JSPはこの場合、関係ないですよね?
多分、attachment; が開かない様にしてくれたかと思うんですが。。。

適当です。間違っていたらすみません。

Q入力フォーム(JSP)にDB検索条件を入力し、データがなかった場合入力した値を残したままJSPに戻る方法を教えてください。

基本的にはタイトルの質問なんですが、具体的な書き方がわかりません。
今作成しているのが
TOP画面(JSP)
・入力フォームに検索条件

Servlet
・入力された条件でDB検索
 何か検索されれば次画面へ遷移
 何も検索されなければTOP画面へ戻る
というものですが、

public class LoginCheck1 extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException{

response.setContentType("text/html; charset=Shift_JIS");
PrintWriter out = response.getWriter();

String user = request.getParameter("user");
String pass = request.getParameter("pass");

HttpSession session = request.getSession(true);

boolean check = authUser(user, pass);
if (check){
/* 認証済みにセット */
session.setAttribute("login", "OK");

/* 本来のアクセス先へ飛ばす */
String target = (String)session.getAttribute("target");
response.sendRedirect(target);
}else{
/* 認証に失敗したら、ログイン画面に戻す */
session.setAttribute("status", "Not Auth");
response.sendRedirect("/auth/Login");
}
}

protected boolean authUser(String user, String pass){
/* 取りあえずユーザー名とパスワードが入力されていれば認証する */
if (user == null || user.length() == 0 || pass == null || pass.length() == 0){
return false;
}

return true;
}
}

サーブレットはこんな感じで書いてるんですが、
response.sendRedirect("/auth/Login");
の部分が悪いんでしょうか?

基本的にはタイトルの質問なんですが、具体的な書き方がわかりません。
今作成しているのが
TOP画面(JSP)
・入力フォームに検索条件

Servlet
・入力された条件でDB検索
 何か検索されれば次画面へ遷移
 何も検索されなければTOP画面へ戻る
というものですが、

public class LoginCheck1 extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException{

response.setContentType("text/html; charset...続きを読む

Aベストアンサー

HttpServletRequestクラス、HttpSessionクラスのsetAttribute、getAttributeメソッドです。
詳細はJavaDocを見て下さい。

Qデータベース、jsp、servlet、JavaBeans・・

データベース、jsp、servlet、JavaBeans・・
授業で勉強しはじめた者です。

そもそも、データベースの概念がわかりません。データベースには沢山のデーターがあって、
それがテーブルになっている。それをsqlを使って書き換えることができる。
でも、元のデータは書き換えることはできない。
デスクトップに表示されるのは、命令にたいする処理であって元はそのままになっている。
と言うことは、例えばデーターベースという宇宙があるとして、その中にデータが星のように散らばっているのでしょうか?
そして、元のデータを書き換えるにはどうすればいいのでしょうか?
CELECT文などで書き換えられたデータはその時だけ?
よくわかりません。自分の勉強不足だと承知の上どなたかご回答よろしくお願いいたします。

Aベストアンサー

データベースを概念的に言うと・・・

図書館を想像してください。
図書館の建物が「データベース」です。
図書館内にはたくさんの本棚がありますよね。その本棚が「テーブル」です。
本棚に入っている1冊1冊の本が「データ」です。
本棚の本を取り出して読むことが「SELECT」です。
本棚に新しい本を追加することが「INSERT」です。
本棚の本を取り替えることが「UPDATE」です。
本棚から本を抜き取ることが「DELETE」です。

イメージがわくでしょうか?

QJSP-Servlet-JavaBeansを使った場合のデータベースアクセスについて

JSP-Servlet-JavaBeansで開発するときに、
業務ロジックはModelであるJavaBeansの中で作成すると
思います。

様々なサンプルを見ると、そのJavaBeansの中で
データベースへのコネクションを作成し、SQL文を実行して
値を取得しています。(DBへの接続文字列や接続ユーザ、パスワード等も固定になっています)

しかし、DBへの接続文字列(特にサーバ名)や
接続ユーザ・パスワードなどは、普通Servlet初期パラメータから取得して設定するべきだと思います。

Servletだけで開発しているときは、
DBManagerのようなクラスを作成し、コンストラクタの引数に接続文字列等を渡していたのですが、
JavaBeansの場合はどうなるのでしょう?
(同じように引数付きのコンストラクタを作成するのでしょうか??)

また、今まではServletのini()で使ってコネクションをプール実現していたのですが、JSP-Servlet-JavaBeansを使うと、どのように処理を分ければよいのでしょうか?

長文で大変申し訳ありませんが、ぜひ良きアドバイスを
お願いします。

JSP-Servlet-JavaBeansで開発するときに、
業務ロジックはModelであるJavaBeansの中で作成すると
思います。

様々なサンプルを見ると、そのJavaBeansの中で
データベースへのコネクションを作成し、SQL文を実行して
値を取得しています。(DBへの接続文字列や接続ユーザ、パスワード等も固定になっています)

しかし、DBへの接続文字列(特にサーバ名)や
接続ユーザ・パスワードなどは、普通Servlet初期パラメータから取得して設定するべきだと思います。

Servletだけで開発しているときは、
DBMa...続きを読む

Aベストアンサー

これまでと同じようにコネクションプーリングを実装すればいいので
はないでしょうか?ただ、そこから取得したコネクションをJavaBeans
に渡す仕組みを考える必要があると思います。

ビジネスロジックを実装するJavaBeansのメソッドにコネクションを
パラメータとして渡したり、コネクションのフィールドを用意すれば
いいんじゃないでしょうか?

おそらくAPサーバは使用せず、コネクションプーリングを作り
こんでいると思います。私はAPサーバを使用しないケースは
経験していないのですが、Servletのinit()でコネクションを
プールするというのは初めて聞きましたし興味があります。
問題はないのかどうかという点も気になりますが。

QCSVファイルを , で句切って出力する

同じ質問になってしまってすみません。
困り度を2ではなく3にしたかったので再掲示してしまいました。
よろしくお願いいたします。

次のような課題が出たのですが教えていただきたく書き込みしました。
皆様のお力をお貸しください。


(1)適当なフォルダにファイルを用意する(ファイルにはCSV形式で文字列が書いてある)

(2)最初に文字列をキーボードから入力させる(文字列は半角で5文字まで、それ以外ならば繰り返し入力させる)
※ 指定したファイルがない場合は堤外を出力(try,catch)

(3)フォルダのファイル読み込み、(2)で入力した文字列が含まれているCSVのカラムをファイルに出力(ファイルは新規作成




public class Match {
public boolean matchString (String[] args) {
// マッチング対象の文字列です。
String str = "​http://iwamode.net/index.html";//​

Pattern p = Pattern.compile("^https?://"); // 正規表現のコンパイル
Matcher m = p.matcher(str); // 正規表現エンジンの生成
if (m.find()) { // java.util.regex.Matcher#find()メソッドは部分一致するかを判断します。
System.out.println("「http://」または「https://」から始まる文字列です。");
} else {
System.out.println("「http://」または「https://」から始まる文字列ではありません。");
}

Pattern p2 = Pattern.compile("\\.com");
Matcher m2 = p2.matcher(str);
if (m2.find()) {
return true;
}
return false;
}
}

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

try{
File csv = new File("Kadai10.csv"); // CSVデータファイル


BufferedReader br = new BufferedReader(new FileReader(csv));
// 最終行まで読み込む
while (br.ready()) {


String line = br.readLine();
// 1行をデータの要素に分割
StringTokenizer st = new StringTokenizer(line, ",");
while (st.hasMoreTokens()) {
// 1行の各要素を区切りで表示
System.out.println(st.nextToken() + ",");
}
System.out.println();
}
br.close();

} catch (FileNotFoundException e) {
// Fileオブジェクト生成時の例外捕捉
e.printStackTrace();
} catch (IOException e) {
// BufferedReaderオブジェクトのクローズ時の例外捕捉
e.printStackTrace();
}

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


System.out.println("半角5文字までの文字列を入力してください");
BufferedReader r = new BufferedReader(new InputStreamReader(System.in));
String str = r.readLine();

if(str.length() <= 5 && str.matches("[0-9a-zA-Z]")) {




上記の3つの部分ソースを使いプログラムを完成させたいんですがどのようにしたらいいでしょうか?

同じ質問になってしまってすみません。
困り度を2ではなく3にしたかったので再掲示してしまいました。
よろしくお願いいたします。

次のような課題が出たのですが教えていただきたく書き込みしました。
皆様のお力をお貸しください。


(1)適当なフォルダにファイルを用意する(ファイルにはCSV形式で文字列が書いてある)

(2)最初に文字列をキーボードから入力させる(文字列は半角で5文字まで、それ以外ならば繰り返し入力させる)
※ 指定したファイルがない場合は堤外を出力(try,catch)

...続きを読む

Aベストアンサー

上記のようなソースコードを先に見てしまうと混乱するでしょう。

・標準入力から文字列を取得する
・特定のファイルを1行ずつ読み込む
・読み込んだ1行を指定文字で分割する
・文字列のから特定の文字列を検索する
・新規作成したファイルに文字列を出力する

これらをすべてメソッド単位に実装していけばよいと思います。
その中でわからないことがあれば再度質問してください。

なお、以下の点が曖昧です。
・CSVのファイル仕様
・「カラム」の指す内容
・Matchクラスの意味(正規表現を使用したいということだけ?)


このカテゴリの人気Q&Aランキング

おすすめ情報