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

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

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

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

Java

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

Eclipse

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

解決済

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

kunetyure
kunetyure

総合スコア23

JSP

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

Java

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

Eclipse

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

1回答

0リアクション

0クリップ

269閲覧

投稿2022/09/09 11:43

前提

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

イメージ説明

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

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

実現したいこと

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

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

該当のソースコード

jsp

<%@ page contentType="text/html;charset=UTF-8" import="java.util.*"%> <% response.setContentType("text/html;charset=UTF-8");%> <HTML> <HEAD><TITLE>名簿検索(java Beans 検索7)</TITLE></HEAD> <BODY BGCOLOR="#FFFFFF"> meibo.select.jsp <CENTER> <CAPTION><FONT SIZE="+3" COLOR="#0000FF"> <B><<名簿検索>></B> </FONT></CAPTION> <BR> <jsp:useBean id="meibo_bean" scope="request" class="(自分の番号).meibo_bean"/> <% if(meibo_bean.getHit_flag() == 0){ %> <font size="+3" color="deeppink"> 該当者なし </font> <% }else{ %> <font size="3" color="deeppink"> <% ArrayList tbl = meibo_bean.getTbl(); ArrayList row = (ArrayList)tbl.get(0); %> <% } %> </font> <table border="1" bordercolor="darkblue"> <tr> <td bgcolor="darkblue"> <font color="white">クラス</font> </td> <td bgcolor="darkblue"> <font color="white">出席</font> </td> <td bgcolor="darkblue"> <font color="white">学籍</font> </td> <td bgcolor="darkblue"> <font color="white">氏名(姓)</font> </td> <td bgcolor="darkblue"> <font color="white">氏名(名)</font> </td> <td bgcolor="darkblue"> <font color="white">カナ(姓)</font> </td> <td bgcolor="darkblue"> <font color="white">カナ(名)</font> </td> <td bgcolor="darkblue"> <font color="white">生年月日</font> </td> </tr> <% for(int i = 0;i < tbl.size();i++){ row = (ArrayList)tbl.get(i); for(int j = 1;j < row.size();j++){ %> <td> <%=(String)row.get(j) %> <% } %> </td> </tr> <% } } %> </table><br> </center><br><br> <HR> <A HREF="/JV27/meibo_select3.html">名簿検索へ戻る</A> <A HREF="/JV27/class_index.html">ホームに戻る</A> <BR> </CENTER> </BODY> </HTML>

java

package (自分の番号); import java.sql.*; import java.io.*; import java.util.*; public class meibo_bean implements Serializable{ //データベース接続定義 final String URL = "jdbc:mysql://localhost/(自分の番号)db?useUnicode=true&characterEncoding=UTF-8"; //DB:ユーザ final String USER ="user"; //DB:パスワード final String PASSWORD ="passward"; //DB:ドライバ final String DRIVER ="com.mysql.jdbc.Driver"; Connection con = null; Statement stmt = null; //プロパティ定義 int hit_flag; String jyouken=""; //String class_no,syusseki_no,gakuseki_no,simei_1,simei_2,kana_1,kana_2,umare; String table=""; String fields = "*"; String sort = ""; ArrayList tbl = new ArrayList(); //コントラクタ定義 public meibo_bean() { super(); } //DBアクセス public void DBselect() { try { //mySQL Driverローディング Class.forName(DRIVER); //MySQLへの接続 con = DriverManager.getConnection(URL,USER,PASSWORD); //SQL格納 stmt = con.createStatement(); //SQL実行 Statement stmt = con.createStatement(); StringBuffer query = new StringBuffer(); query.append("SELECT "); query.append(fields); query.append(" from "); query.append(table); query.append(" WHERE "); query.append(jyouken); query.append(" "); query.append(sort); System.out.println(query.toString()); ResultSet rs = stmt.executeQuery(query.toString()); //テーブル情報取得 ResultSetMetaData rsmd = rs.getMetaData(); //検索結果 if(rs.next() == true) { hit_flag = 1; do{ ArrayList row = new ArrayList(); for(int i = 1; i <= rsmd.getColumnCount();i++){ try{ row.add(rs.getObject(i).toString()); } catch(Exception ex){ ex.printStackTrace(); } } tbl.add(row); }while(rs.next()); }else{ hit_flag = 0; } //切断 rs.close(); stmt.close(); con.close(); } //例外処理 catch (SQLException ex) { ex.printStackTrace(); } catch(Exception ex) { ex.printStackTrace(); } } //アクセサメソッド(setter) public void setTable(String inTable) { table = inTable; } public void setJyouken(String inJyouken) { jyouken = inJyouken; } public void setFields(String inFields) { fields = inFields; } public void setSort(String inSort) { sort = inSort; } //アクセサメソッド(getter) public int getHit_flag(){ return hit_flag; } public void getFields(String inFields) { fields = inFields; } public ArrayList getTbl(){ return tbl; } }

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

html

<html> <head><title>名簿検索</title> <meta http-equiv="content-type"content="text/html;charset=UTF-8"> </head> <body bgcolor="#ffffF"> meibo_select3.html <center> <caption><font size="+3" color="#0000FF"> <b> <クラス名簿 検索> </b></font></caption> <br><br><br> <form method="post" name = "frm" action="/(プロジェクト名)/servlet/meibo_select"> <font size='+2' color="deeppink"> <table border="1" bordercolor="darkblue></table> <tr> <td bgcolor="darkblue"> <font color="white"> 選択 </font> </td> <td bgcolor="darkblue'> <font color="white"> 検索条件 </font> </td> </tr> <tr> <td align="center" bgcolor="white"> <input type="radio" name="SELECT_ID" value="1" checked> </td> <td> クラス記号 <select name="CLASS_NO" size="1"> <option value="AT11A192" selected>AT11A192 <option value="AT11B203">AT11B203 <option value="CG11A172">CG11A172 <option value="IT11A172">IT11A172 <option value="AT12A165">AT12A165 <option value="AT12B165">AT12B165 <option value="IH12A101">IH12A101 <option value="IW12A185">IW12A185 <option value="AT13A181">AT13A181 <option value="AP13A223">AP13A223 <option value="IH13A181">IH13A181 <option value="IW13A187">IW13A187 <option value="CD13A166">CD13A166 <option value="AP14A226">AP14A226 <option value="AT14A226">AT14A226 <option value="IH14A223">IH14A223 <option value="CT14A187">CT14A187 <option value="IW14A187">W14A187 <option value="xx14Axxx">xx14Axxx </select> </td> </tr> <tr> <td align="center" bgcolor="white"> <input type="radio" name="SELECT_ID" value="2"> </td> <td> 学年 <select name="GAKUNEN_NO" size="1"> <option value="1" selected>1年 <option value="2">2年 <option value="3">3年 <option value="4">4年 <option value="9">その他 </select> </td> </tr> </table> <input type="SUBMIT"value=”検索"> </form> </center><br><br> <hr><a href="/(プロジェクト名)/class_index.html"> メニューへ戻る </a> </body> </html>

java

import java.io.*; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.ServletException; import javax.servlet.ServletContext; //import javaxservlet.*; // javaxservlet.http.*; //@Webservlet(urlPatterns=("/servlet/meibo_select"); public class meibo_select extends HttpServlet{ public void doPost( HttpServletRequest req, HttpServletResponse res ) throws ServletException, IOException{ //webブラウザのFormからバラメータを取得 String class_noStr =req.getParameter("CLASS_NO"); String gakunen_noStr =req.getParameter("GAKUNEN_NO"); String gakusekiStr =req.getParameter("GAKUSEKI"); try{ //Beanを呼び出してインスタンス化 (自分の番号).meibo_bean meibo_bean = new (自分の番号).meibo_bean(); //プロパティのセット meibo_bean.setTable("class_table"); meibo_bean.setJyouken("class_no='" + class_noStr + "'"); meibo_bean.setFields("class_no,syusseki_no,gakuseki_no,simei_1,simei_2,kana_1,kana_2,umare"); meibo_bean.setSort(" ORDER BY syusseki_no"); //Beanコール meibo_bean.DBselect(); //JSPコール req.setAttribute("meibo_bean",meibo_bean); ServletContext sc = getServletContext(); sc.getRequestDispatcher("/meibo_select.jsp").forward( req,res); } //例外処理 catch(Exception ex){ PrintWriter out; req.setCharacterEncoding("UTF-8"); res.setContentType("text/html;charset=UTF-8"); out = res.getWriter(); ex.printStackTrace(out); } } }

試したこと

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

jsp

<% for(int i = 0;i < tbl.size();i++){ row = (ArrayList)tbl.get(i); for(int j = 1;j < row.size();j++){ %> <td> <%=(String)row.get(j) %> <% } %> </td> </tr> <% } } %>

イメージ説明

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

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

2022/09/09 22:59

こちらの質問が他のユーザーから「やってほしいことだけを記載した丸投げの質問」という指摘を受けました。

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

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

まだ回答がついていません

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

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

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

JSP

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

Java

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

Eclipse

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