前提
jababeansを使ってクラス名簿の検索をしたい。
ここに質問の内容を詳しく書いてください。
(例)クラスと学年でクラス名簿を検索し、その結果をmeibo_select.jspに表示させたいのですが、検索結果の画面で下のようなエラーが起きてしまいます。データを送る側(meibo_bean.java)がいけないのか、データを受け取る受け皿(meibo_select.jsp)がわるいのか、またはそれ以外に原因があるのかわかりません。わかる方がいらっしゃったら教えていただきたいです。
エラーコードです。
org.apache.jasper.JasperException: JSPのクラスをコンパイルできません: JSPファイル: /meibo_select.jsp の中の75行目でエラーが発生しました tbl cannot be resolved 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: %> JSPファイル: /meibo_select.jsp の中の76行目でエラーが発生しました row cannot be resolved 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: JSPファイル: /meibo_select.jsp の中の76行目でエラーが発生しました tbl cannot be resolved 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: JSPファイル: /meibo_select.jsp の中の77行目でエラーが発生しました row cannot be resolved 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: JSPファイル: /meibo_select.jsp の中の82行目でエラーが発生しました row cannot be resolved 79: 80: 81: 82: <%=(String)row.get(j) %> 83: <% 84: } 85: %> JSPファイル: /meibo_select.jsp の中の91行目でエラーが発生しました Syntax error, insert "Finally" to complete TryStatement 88: 89: <% 90: } 91: } 92: %> 93: 94: An error occurred at line: 180 in the generated java file Syntax error on token "catch", Identifier expected An error occurred at line: 182 in the generated java file out cannot be resolved An error occurred at line: 182 in the generated java file _jspx_out cannot be resolved An error occurred at line: 183 in the generated java file out cannot be resolved An error occurred at line: 183 in the generated java file out cannot be resolved An error occurred at line: 184 in the generated java file out cannot be resolved An error occurred at line: 185 in the generated java file _jspx_page_context cannot be resolved An error occurred at line: 185 in the generated java file _jspx_page_context cannot be resolved An error occurred at line: 187 in the generated java file Syntax error on token "finally", { expected An error occurred at line: 188 in the generated java file _jspx_page_context cannot be resolved Stacktrace: at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:92) at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330) at org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:439) at org.apache.jasper.JspCompilationContext.compile org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) at org.apache.jasper.servlet.JspServlet.service org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.ApplicationDispatcher.invoke org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436) at org.apache.catalina.core.ApplicationDispatcher.doForward org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302) at meibo_select.doPost(meibo_select.java:44) at javax.servlet.http.HttpServlet.service (HttpServlet.java:637) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.catalina.servlets.InvokerServlet.serveRequest(InvokerServlet.java:404) at org.apache.catalina.servlets.InvokerServlet.doPost(InvokerServlet.java:172) at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core .ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core. StandardWrapperValve.invoke
実現したいこと
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="sample.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 sample; import java.sql.*;import java.io.*;import java.util.*; public class meibo_bean implements Serializable{ //データベース接続定義 final String URL = "jdbc:mysql://localhost/sampledb?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; }}
### 試したこと 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> <% } } %>

長くなってしまい申し訳ございません。
長くなってしまい申し訳ございません。以前にも同じ質問をし、修正依頼が来たので編集したら文字数の関係で再度出し直しました。

0 コメント