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

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

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

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

Q&A

解決済

1回答

2428閲覧

javaプログラムで作成したクラスをjspで表示させる方法について

kumakumatan

総合スコア213

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

0グッド

0クリップ

投稿2016/06/22 12:56

■開発環境
Eclipse Java EE IDE for Web Developers(Ver4.5.2)
Tomcat(v7.0)

http://localhost:8080/schedule/csvchk.jsp
にアクセスして下記の3つのクラスを実行して結果を表示させる
のにはどうしたらいいでしょうか?

[schedule]プロジェクトの中に[basic]パッケージを作成
「exec01.java」「FRead.java」「FieldChk.java」を作成しました。

java

1public class exec01 { 2 3 public static void main(String[] args) { 4 5 // FieldChkクラスをインスタンス化する 6 FieldChk Chk = new FieldChk("C:\\sample.csv"); 7 8 // ファイル読み込みメソッドの実施 9 Chk.read(); 10 11 //ファイル読み込み件数の表示 12 System.out.println(Chk.getCount()); 13 14 // チェック 15 if(Chk.check1() == true) { 16 System.out.println("正常処理!!"); 17 } 18 19 } 20 21}

java

1import java.io.BufferedReader; 2import java.io.FileInputStream; 3import java.io.IOException; 4import java.io.InputStreamReader; 5import java.util.ArrayList; 6import java.util.List; 7 8public class FRead { 9 public static String[] getLines(String fileName) { 10 11 12 List<String> list = new ArrayList<String>(); 13 14 BufferedReader br = null; 15 try { 16 /* 入力ストリームの読み込み。 17 * ここでCSVファイルの文字コードを設定しないと文字化けします。 18 * 読み込むファイルの文字コード(SJIS) */ 19 br = new BufferedReader(new InputStreamReader(new FileInputStream(fileName), "SJIS")); 20 21 String line = null; 22 // ファイル読み込み 23 while((line = br.readLine()) != null) { 24 list.add(line); 25 26 } 27 28 // br.close(); 29 30 } catch (IOException err) { 31 err.printStackTrace(); 32 } finally { 33 if(br != null) { 34 try { 35 br.close(); 36 } catch (IOException ex) { 37 // Do nothing 38 } 39 } 40 } 41 42 return list.toArray(new String[0]); 43 44 } 45}

java

1import java.util.regex.Pattern; 2 3public class FieldChk { 4 5 // private ファイル名; 6 private String fname; 7 // private 読み込みバッファ; 8 String[] csv; 9 10 //csv読み込み件数 11 int readcount = 0; 12 13 /* コンストラクタ(引数){ 14 * 引数をファイル名に保持 15 * } */ 16 17 public FieldChk(String fname) { 18 this.fname = fname; 19 20 } 21 22 public FieldChk(int readcount) { 23 this.readcount = readcount; 24 25 } 26 27 public void read() { 28 //FReadクラスでファイルを読み込んで、読み込みバッファに格納 29 csv = FRead.getLines(fname); 30 31 } 32 33 public int getCount() { 34 return csv.length; 35} 36 37 public boolean check1() { 38 // 読み込みバッファを使ってチェック1処理 39 // 「FieldChk01」の処理 40 String line; 41 42 //読み込み行数 43 int readcount = 0; 44 45 int count = 0; 46 for(count = 0; count < csv.length; count++) { 47 48 line = csv[count]; 49 String[] columns = line.split(",", -1); 50 51 readcount++; 52 53 Pattern p1 = Pattern.compile("^[0-9]+$"); // 番号 54 Pattern p2 = Pattern.compile("^[0-9]{3}-[0-9]{4}-[0-9]{4}$"); // 携帯番号 55 //Pattern p3 = Pattern.compile("^[a-zA-Z]{3}[0-9]{4}$"); //社員番号(英数字) 56 // 数字が含まれていればOK(社員番号) 57 Pattern p3 = Pattern.compile("^[0-9a-zA-Z]+$"); //社員番号(英数字文字のみが1文字以上) 58 Pattern p4 = Pattern.compile("^[^\\d]+$"); // 簡単な正規表現(単純に数字が含まれていないというのを確認) 59 60 for(int j = 0; j < columns.length; j++) { 61 62 //データ型チェック開始 63 if(j == 0 && p3.matcher(columns[j]).matches() == false) { 64 System.out.println(readcount + "行目の" + "【1列目】入力規則違反。【入力値: " + columns[j] + "】"); 65 return false; 66 } else if(j == 1 && p4.matcher(columns[j]).matches() == false) { 67 //if(j == 1 && p4.matcher(columns[j]).matches() == false) { 68 System.out.println(readcount + "行目の" + "【2列目】入力規則違反。【入力値: " + columns[j] + "】"); 69 return false; 70 } else if(j == 2 && p1.matcher(columns[j]).matches() == false) { 71 System.out.println(readcount + "行目の" + "【3列目】入力規則違反。【入力値: " + columns[j] + "】"); 72 return false; 73 } else if(j == 3 && p2.matcher(columns[j]).matches() == false) { 74 System.out.println(readcount + "行目の" + "【4列目】入力規則違反。【入力値: " + columns[j] + "】"); 75 return false; 76 } 77 78 } 79 80 } 81 82 return true; 83 } 84 85}

[WebConetent]フォルダの[WEB-INF]フォルダ内に[csvchk.jsp]を作成して
結果を表示させたいと考えています。

jsp

1<%@page contentType="text/html; charset=UTF-8" %> 2<%@page import="basic.exec01" %> 3<%@page import="basic.FRead" %> 4<%@page import="basic.FieldChk" %> 5 6<html><body> 7 8<h3>CSVチェック</h3> 9 10ここに結果を表示したい 11 12</body></html>

javaプロジェクト上では正常に動作しました。サーブレットを利用して
jspで結果を表示させるにはどうしたらいいでしょうか。
ご教授お願い致します。

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

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

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

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

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

guest

回答1

0

ベストアンサー

<%@ page import="パッケージ名.クラス名" %>

でjsp側で読み込んで、

<%
クラス名 変数 = new クラス名
%>
<%
変数.getLine(String 引数)
%>

で実行できるはずです。

投稿2016/06/22 23:13

YK1037

総合スコア236

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

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

kumakumatan

2016/06/22 23:42

ご回答ありがとうございます。 自分で作成してみました ````java <%@page contentType="text/html; charset=utf-8" %> <%@page import="basic.FieldChk" %> <%@page import="basic.FRead" %> <html><body> <h3>csvチェック</h3> <% FieldChk Chk = new FieldChk("C:\\sample.csv"); Chk.read(); // チェック if(Chk.check1() == true && Chk.check2() == true && Chk.check3() == true) { System.out.println("CSVデータは正常です。(読込データ:" + Chk.getCount() + "件)"); } %> <% Chk.getLine(String ??) %> </body></html> ```` ??の引数はこの場合、何が入るのでしょうか? 宜しくお願いします。
YK1037

2016/06/23 00:01

<% String fileName = "読み込みたいファイル名"; Chk.getLine(fileName); %> ですかね。
YK1037

2016/06/23 00:05

気になったのですが FieldChk のクラスは getLine メソッドがないような・・・! ただしくは、 Chk.FieldChk(fileName); なのかなと思います。 public FieldChk(String fname) { this.fname = fname; // ここでファイル名をメンバー変数へ格納 }
kumakumatan

2016/06/23 00:14

ご回答ありがとうございます。 ご教授いただいた通りにしたのですが、「メソッド FieldChk(String) は型 FieldChk で未定義です」と表示されてしまいます。 宜しくお願い致します。
takyafumin

2016/06/23 00:20

FieldChk()はコンストラクタなので、そのまま呼び出すことはできないのではないでしょうか?(インスタンスをnewする時に利用する) ファイル内容を表示するのであれば、「FRead#getLines()」を呼び出すことになりますかね。ただ、戻り値が「String[]」なので、そのままprintできないかもしれません。その場合、配列をループで回しながら出力するのが良いかと思います。
YK1037

2016/06/23 00:23

気がついて頂けたら と思っていたのですが、 public FieldChk(String fname) { this.fname = fname; } public FieldChk(int readcount) { this.readcount = readcount; } メソッド名と引数の個数が重複してしていしています。 オーバーロード すれば、上記指定はかのですがね。 メソッド名を変更する。 上記を試してみてください。
kumakumatan

2016/06/23 00:45

ご回答ありがとうございます。 上記の重複箇所は削除して実行してみましたが、、「メソッド FieldChk(String) は型 FieldChk で未定義です」と表示されてしまいます。 [out.println("CSVデータは正常です。(読込データ:" + Chk.getCount() + "件)");] としてブラウザ上に読込件数は表示できました。 しかし、「FieldChk」クラスで表示しているメッセージ(例:System.out.println("【社員番号】に重複データがあります。値:" + user1);)をブラウザ上に表示させるにはどうしたらいいでしょうか? 宜しくお願いします。
kumakumatan

2016/06/23 00:49

メッセージは「System.out.println(readcount + "行目の" + "【1列目】入力規則違反。【入力値: 」などの表示です。 宜しくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問