■開発環境
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で結果を表示させるにはどうしたらいいでしょうか。
ご教授お願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/06/22 23:42
2016/06/23 00:01
2016/06/23 00:05
2016/06/23 00:14
2016/06/23 00:20
2016/06/23 00:23
2016/06/23 00:45
2016/06/23 00:49