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

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

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

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

Java

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

Eclipse

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

Q&A

解決済

1回答

657閲覧

クラス名簿の検索結果をjspに表示させたい

kunetyure

総合スコア23

JSP

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

Java

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

Eclipse

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

0グッド

0クリップ

投稿2022/09/09 11:43

前提

jababeansを使ってクラス名簿の検索をしたい。
ここに質問の内容を詳しく書いてください。
(例)クラスと学年でクラス名簿を検索し、その結果をmeibo_select.jspに表示させたいのですが、検索結果の画面で下のようなエラーが起きてしまいます。データを送る側(meibo_bean.java)がいけないのか、データを受け取る受け皿(meibo_select.jsp)がわるいのか、またはそれ以外に原因があるのかわかりません。わかる方がいらっしゃったら教えていただきたいです。

イメージ説明

イメージとしては列のデータをfor文で回していく感じです。

データの流れはこんな感じです。
イメージ説明

実現したいこと

beanから送った検索結果を表示させたい。

発生している問題・エラーメッセージ

該当のソースコード

jsp

1<%@ page contentType="text/html;charset=UTF-8" import="java.util.*"%> 2<% response.setContentType("text/html;charset=UTF-8");%> 3 4 5 6 7 8<HTML> 9 <HEAD><TITLE>名簿検索(java Beans 検索7)</TITLE></HEAD> 10 <BODY BGCOLOR="#FFFFFF"> 11 meibo.select.jsp 12 <CENTER> 13<CAPTION><FONT SIZE="+3" COLOR="#0000FF"> 14<B><<名簿検索>></B> 15</FONT></CAPTION> 16<BR> 17<jsp:useBean id="meibo_bean" scope="request" class="(自分の番号).meibo_bean"/> 18 19<% 20if(meibo_bean.getHit_flag() == 0){ 21%> 22 23<font size="+3" color="deeppink"> 24該当者なし 25</font> 26<% 27}else{ 28%> 29 30<font size="3" color="deeppink"> 31 32<% 33ArrayList tbl = meibo_bean.getTbl(); 34ArrayList row = (ArrayList)tbl.get(0); 35%> 36 37<% 38} 39%> 40 41</font> 42 43<table border="1" bordercolor="darkblue"> 44<tr> 45<td bgcolor="darkblue"> 46 <font color="white">クラス</font> 47 </td> 48 <td bgcolor="darkblue"> 49 <font color="white">出席</font> 50 </td> 51 <td bgcolor="darkblue"> 52 <font color="white">学籍</font> 53 </td> 54 <td bgcolor="darkblue"> 55 <font color="white">氏名(姓)</font> 56 </td> 57 <td bgcolor="darkblue"> 58 <font color="white">氏名(名)</font> 59 </td> 60 <td bgcolor="darkblue"> 61 <font color="white">カナ(姓)</font> 62 </td> 63 <td bgcolor="darkblue"> 64 <font color="white">カナ(名)</font> 65 </td> 66 <td bgcolor="darkblue"> 67 <font color="white">生年月日</font> 68 </td> 69 </tr> 70 71 72 73 74<% 75 for(int i = 0;i < tbl.size();i++){ 76 row = (ArrayList)tbl.get(i); 77 for(int j = 1;j < row.size();j++){ 78 %> 79 80 <td> 81 82 <%=(String)row.get(j) %> 83 <% 84 } 85 %> 86 87 </td> 88 </tr> 89<% 90 } 91 } 92 %> 93 94 95 </table><br> 96 </center><br><br> 97 98 99<HR> 100<A HREF="/JV27/meibo_select3.html">名簿検索へ戻る</A> 101<A HREF="/JV27/class_index.html">ホームに戻る</A> 102<BR> 103</CENTER> 104</BODY> 105</HTML> 106

java

1package (自分の番号); 2 3import java.sql.*; 4import java.io.*; 5import java.util.*; 6 7public class meibo_bean implements Serializable{ 8 9 10 //データベース接続定義 11 final String URL = 12 "jdbc:mysql://localhost/(自分の番号)db?useUnicode=true&characterEncoding=UTF-8"; 13 //DB:ユーザ 14 final String USER ="user"; 15 //DB:パスワード 16 final String PASSWORD ="passward"; 17 //DB:ドライバ 18 final String DRIVER ="com.mysql.jdbc.Driver"; 19 20 Connection con = null; 21 Statement stmt = null; 22 23//プロパティ定義 24 25 int hit_flag; 26 String jyouken=""; 27 //String class_no,syusseki_no,gakuseki_no,simei_1,simei_2,kana_1,kana_2,umare; 28 String table=""; 29 String fields = "*"; 30 String sort = ""; 31 ArrayList tbl = new ArrayList(); 32 33//コントラクタ定義 34 public meibo_bean() { 35 super(); 36 } 37 38 //DBアクセス 39 public void DBselect() { 40 try { 41 42 //mySQL Driverローディング 43 Class.forName(DRIVER); 44 45 //MySQLへの接続 46 con = DriverManager.getConnection(URL,USER,PASSWORD); 47 48 //SQL格納 49 stmt = con.createStatement(); 50 51 //SQL実行 52 Statement stmt = con.createStatement(); 53 StringBuffer query = new StringBuffer(); 54 query.append("SELECT "); 55 query.append(fields); 56 query.append(" from "); 57 query.append(table); 58 query.append(" WHERE "); 59 query.append(jyouken); 60 query.append(" "); 61 query.append(sort); 62 System.out.println(query.toString()); 63 ResultSet rs = stmt.executeQuery(query.toString()); 64 65 //テーブル情報取得 66 ResultSetMetaData rsmd = rs.getMetaData(); 67 68 //検索結果 69 if(rs.next() == true) { 70 hit_flag = 1; 71 do{ 72 ArrayList row = new ArrayList(); 73 for(int i = 1; i <= rsmd.getColumnCount();i++){ 74 try{ 75 row.add(rs.getObject(i).toString()); 76 } 77 catch(Exception ex){ 78 ex.printStackTrace(); 79 } 80 } 81 tbl.add(row); 82 }while(rs.next()); 83 }else{ 84 hit_flag = 0; 85 } 86 87 88 89 90 91 92 93 //切断 94 rs.close(); 95 stmt.close(); 96 con.close(); 97 98 } 99 //例外処理 100 catch (SQLException ex) { 101 ex.printStackTrace(); 102 } 103 catch(Exception ex) { 104 ex.printStackTrace(); 105 } 106 } 107 //アクセサメソッド(setter) 108 public void setTable(String inTable) { 109 table = inTable; 110 } 111 112 public void setJyouken(String inJyouken) { 113 jyouken = inJyouken; 114 } 115 116 public void setFields(String inFields) { 117 fields = inFields; 118 } 119 public void setSort(String inSort) { 120 sort = inSort; 121 } 122 123 124 //アクセサメソッド(getter) 125 126 public int getHit_flag(){ 127 return hit_flag; 128 } 129 public void getFields(String inFields) { 130 fields = inFields; 131 } 132 133 134 public ArrayList getTbl(){ 135 return tbl; 136 } 137} 138

htmlとサーブレットのコードも載せときます

html

1<html> 2<head><title>名簿検索</title> 3<meta http-equiv="content-type"content="text/html;charset=UTF-8"> 4 5</head> 6<body bgcolor="#ffffF"> 7meibo_select3.html 8<center> 9<caption><font size="+3" color="#0000FF"> 10<b> 11<クラス名簿 検索> 12</b></font></caption> 13<br><br><br> 14<form method="post" name = "frm" action="/(プロジェクト名)/servlet/meibo_select"> 15<font size='+2' color="deeppink"> 16<table border="1" bordercolor="darkblue></table> 17<tr> 18<td bgcolor="darkblue"> 19<font color="white"> 20選択 21</font> 22</td> 23 24 25<td bgcolor="darkblue'> 26<font color="white"> 27検索条件 28</font> 29</td> 30</tr> 31<tr> 32<td align="center" bgcolor="white"> 33<input type="radio" name="SELECT_ID" value="1" checked> 34</td> 35<td> 36クラス記号 37<select name="CLASS_NO" size="1"> 38<option value="AT11A192" selected>AT11A192 39<option value="AT11B203">AT11B203 40<option value="CG11A172">CG11A172 41<option value="IT11A172">IT11A172 42<option value="AT12A165">AT12A165 43<option value="AT12B165">AT12B165 44<option value="IH12A101">IH12A101 45<option value="IW12A185">IW12A185 46<option value="AT13A181">AT13A181 47<option value="AP13A223">AP13A223 48<option value="IH13A181">IH13A181 49<option value="IW13A187">IW13A187 50<option value="CD13A166">CD13A166 51<option value="AP14A226">AP14A226 52<option value="AT14A226">AT14A226 53<option value="IH14A223">IH14A223 54<option value="CT14A187">CT14A187 55<option value="IW14A187">W14A187 56<option value="xx14Axxx">xx14Axxx 57</select> 58</td> 59</tr> 60 61<tr> 62<td align="center" bgcolor="white"> 63<input type="radio" name="SELECT_ID" value="2"> 64</td> 65<td> 66学年 67<select name="GAKUNEN_NO" size="1"> 68<option value="1" selected>1年 69<option value="2">2年 70<option value="3">3年 71<option value="4">4年 72<option value="9">その他 73</select> 74</td> 75</tr> 76</table> 77<input type="SUBMIT"value=”検索"> 78 79</form> 80</center><br><br> 81<hr><a href="/(プロジェクト名)/class_index.html"> 82メニューへ戻る 83</a> 84</body> 85</html> 86

java

1import java.io.*; 2import javax.servlet.http.HttpServlet; 3import javax.servlet.http.HttpServletRequest; 4import javax.servlet.http.HttpServletResponse; 5import javax.servlet.ServletException; 6import javax.servlet.ServletContext; 7 8 9//import javaxservlet.*; 10// javaxservlet.http.*; 11//@Webservlet(urlPatterns=("/servlet/meibo_select"); 12public class meibo_select extends HttpServlet{ 13 public void doPost( 14 HttpServletRequest req, 15 HttpServletResponse res ) 16 throws ServletException, IOException{ 17 18//webブラウザのFormからバラメータを取得 19String class_noStr =req.getParameter("CLASS_NO"); 20String gakunen_noStr =req.getParameter("GAKUNEN_NO"); 21String gakusekiStr =req.getParameter("GAKUSEKI"); 22 23 24try{ 25//Beanを呼び出してインスタンス化 26(自分の番号).meibo_bean meibo_bean = new (自分の番号).meibo_bean(); 27 28 29//プロパティのセット 30meibo_bean.setTable("class_table"); 31meibo_bean.setJyouken("class_no='" + class_noStr + "'"); 32 33 34meibo_bean.setFields("class_no,syusseki_no,gakuseki_no,simei_1,simei_2,kana_1,kana_2,umare"); 35 36meibo_bean.setSort(" ORDER BY syusseki_no"); 37 38//Beanコール 39meibo_bean.DBselect(); 40//JSPコール 41req.setAttribute("meibo_bean",meibo_bean); 42ServletContext sc = getServletContext(); 43 44sc.getRequestDispatcher("/meibo_select.jsp").forward( 45req,res); 46} 47 48 49//例外処理 50 51catch(Exception ex){ 52 PrintWriter out; 53 req.setCharacterEncoding("UTF-8"); 54 res.setContentType("text/html;charset=UTF-8"); 55 56 out = res.getWriter(); 57 58ex.printStackTrace(out); 59} 60 } 61 } 62 63 64

試したこと

meiboselect.jspの<font color="white">生年月日</font></td></tr>の下に以下のコードを追加したところ、エラーは出ないけどデータが何もとれていないということが起こりました。

jsp

1<% 2 for(int i = 0;i < tbl.size();i++){ 3 row = (ArrayList)tbl.get(i); 4 for(int j = 1;j < row.size();j++){ 5 %> 6 7 <td> 8 9 <%=(String)row.get(j) %> 10 <% 11 } 12 %> 13 14 </td> 15 </tr> 16<% 17 } 18 } 19 %> 20

イメージ説明

長くなってしまい申し訳ございません。

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

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

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

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

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

m.ts10806

2022/09/09 12:15

(自分の番号) とは?
m.ts10806

2022/09/09 12:18 編集

それ以前に ・クラス名の命名規則に沿ってない ・廃止されたHTMLタグを利用している ・インデント全くそろってない などなど実装、コードとしてツッコミどころばかりなのも気になりますね。 教材が古いんでしょうか(課題なら聞くべき人は赤の他人ではないですが)
jimbe

2022/09/09 13:00 編集

個人情報を隠すのでしたら、それらしいモノに書き換えてください。 パッケージ名なら sample とでもしておけば、そもそもそこに個人情報があったことさえ他人には分かりませんし、カッコウは付きます。 >検索結果の画面で下のようなエラー エラーメッセージはテキストをコピペしてください。teratail では画像を簡単には拡大出来ませんので、そのままでは読めません。
kunetyure

2022/09/13 12:34

すいません解決しました
m.ts10806

2022/09/13 22:08

質問が受け受け中のままになっています。
guest

回答1

0

自己解決

ここに書けばいいのかな(笑)すいません解決しました

投稿2022/09/13 23:31

kunetyure

総合スコア23

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問