質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

2回答

1999閲覧

eclipseで読み込んだcsvファイルの内容をローカルのブラウザで表示したい。

nikuro

総合スコア9

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2021/08/13 02:31

eclipseで読み込んだcsvファイルの内容をローカルのブラウザで表示したいです。

コンソールにファイルの内容を表示させるとこまでは出来たのですが、ブラウザでの表示方法が分かりません。

package Test001; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; public class Kadai01 { // CSVファイルを読み込み1行ずつ出力 public static void main(String[] args) { BufferedReader br = null; String file_name ="C:\Users\Administrator\Desktop\tool\pleiades\workspace\MVC2\src\data.csv"; // 入力ファイル try { File file = new File(file_name); br = new BufferedReader(new FileReader(file)); // readLineで一行ずつ読み込む String line; // 読み込み行 String[] data; // 分割後のデータを保持する配列 while ((line = br.readLine()) != null) { // lineをカンマで分割し、配列dataに設定 data = line.split(","); // 1行分の読み込みデータを表示(データ間にスペース) for (int i = 0; i < data.length; i++) { System.out.print(data[i] + " "); } System.out.println(); } } catch (Exception e) { System.out.println(e.getMessage()); } finally { try { br.close(); } catch (Exception e) { System.out.println(e.getMessage()); } } } }

解決方法や改善点が分かる方がいたら教えて頂きますでしょうか。
足りない情報があらば随時追加させていただきます。
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

とりあえず、Tomcatで基本的な構築をしてみてください。

ちなみに、TomcatのURLパターンは、

URL

1http[s]://ドメイン(IP):[server.xmlで設定したポート番号]/[コンテキストルート]/[web.xmlで設定したURLパターン]

で、デフォルトでは、

URL

1http://localhost:8080/[プロジェクト名]/[web.xmlで設定したURLパターン]

という感じになります。

さて、作成手順ですが、

  • 「動的WEBプロジェクト」で新規プロジェクトを作成する。プロジェクト名は任意につけて良いですが、デフォルトでコンテキストルート名になります。
  • HttpServletクラスを継承したクラスを実装する。
  • 上記クラスにdoGetメソッドをpublicで実装する。
  • web.xmlを/WebContext/WEB-INFの直下に新規作成し、URLパターンと実装クラスの紐づけをする。
  • サーバービューから、サーバーを追加する。
  • 上記サーバに、プロジェクトを追加する。(ビュー右クリックで、「追加および除去」を選択し操作)
  • サーバー再起動をする。(ビュー右上の緑の再生マークのボタンを押す)
  • ブラウザで確認する。

となっています。

「Hello World !」をブラウザに出力するコード例を以下に張り付けておきます。
アドレスは、プロジェクト名をMVC2にしたという前提で、
http://localhost:8080/MVC2/Test001
になります。

Java

1package Test001; 2 3import java.io.IOException; 4import java.io.PrintWriter; 5 6import javax.servlet.ServletException; 7import javax.servlet.http.HttpServlet; 8import javax.servlet.http.HttpServletRequest; 9import javax.servlet.http.HttpServletResponse; 10 11public class Kadai01 extends HttpServlet { 12 public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { 13 response.setContentType("text/html"); 14 PrintWriter out = response.getWriter(); 15 out.println("Hello World !"); 16 } 17}

web.xml

1<?xml version="1.0" encoding="UTF-8"?> 2<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 5 http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" 6 version="4.0" 7 metadata-complete="true"> 8 9 <servlet> 10 <servlet-name>kadai01</servlet-name> 11 <servlet-class>Test001.Kadai01</servlet-class> 12 </servlet> 13 14 <servlet-mapping> 15 <servlet-name> 16 kadai01 17 </servlet-name> 18 <url-pattern> 19 /Test001 20 </url-pattern> 21 </servlet-mapping> 22 23</web-app>

あとは、やりたい事を、先ほどのdoGetメソッドに実装していけば、
実現できるかと思っております。


追記:やりたいことに対して以下の修正が必要になるかと思います。
■出力方法の変更1

Java

1System.out.println(data[i] + " ");

は、標準出力に対しての出力なので、ブラウザに対する出力に変えてあげる必要があります。

Java

1out.println(data[i] + " "); // 前段で右記を宣言:PrintWriter out = response.getWriter();

■出力方法の変更2

whileの最後で

Java

1System.out.println();

とやっていますが、ブラウザでの改行は<br/>なので改行してくれないです。
変更1を加味して以下のように修正する必要があります。

Java

1out.println("<br/>"); // 前段で右記を宣言:PrintWriter out = response.getWriter();

■文字コードの対処

最近のTomcatは、文字コードがUTF-8、対してcsvはShift-JIS、という事がよくあるので、
文字化けを起こす可能性があります。

対処するために、

  • ファイルをShift-JISで読み込む。
  • レスポンスも文字コードをShift-JISに設定する。

が必要です。

前者は、

Java

1br = new BufferedReader(new FileReader(file));

の部分を、

Java

1br = new BufferedReader(new InputStreamReader(new FileInputStream(file),"Shift-JIS"));

と書き換える。

後者は、

Java

1response.setCharacterEncoding("Shift-JIS");

を追記することで対処します。

投稿2021/08/13 04:12

編集2021/08/14 00:28
TetsujiMiwa

総合スコア1124

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nikuro

2021/08/13 08:51

ありがとうございます! 実践してみます!
nikuro

2021/08/13 20:07

HelloWorldを表示させることはできました! やりたい事を、doGetメソッドに実装するというのは、自分が記載しているコードをそのまま書き写せば実行できるという訳ではないですよね?
TetsujiMiwa

2021/08/14 00:30

ある程度の読み替えは必要(回答に追記しました)ですが、まあ実現できると思います。
guest

0

JavaでWebというのでしたらサーバTomcatでサーブレット利用するのが一般的だと思います。

投稿2021/08/13 02:49

m.ts10806

総合スコア80875

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nikuro

2021/08/13 03:44

import java.io.IOException; import java.util.ArrayList; import java.util.List; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; この辺りを入力して実行していたのですが、やるべきことあってますかね・・・ 無知ですみません
m.ts10806

2021/08/13 05:09

コードだけではどうにもならないですよ。 ちゃんとサーブレットのプロジェクトを作って、Tomcatに乗せる必要があります。 まず「サーブレットとは」「Tomcatとは」から学んでください。入門系の記事ならネット上に幾らでもあります。
nikuro

2021/08/13 08:55

プロジェクトから作成することを理解できていませんでした、ありがとうございます!
m.ts10806

2021/08/13 10:41

プロジェクトから作ると楽だ(最低限必要なライブラリなどもセットされるから)というだけで、適切に設定・定義すればできないことはないです。 ただ、2021/08/13 14:09 の私のコメントの通り、仕組み含めて入門記事から確認すべきと言うことです。 やりたいことだけやろうとしても結局プログラムは書いた通りにしか動かないので基礎をおざなりにはできません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問