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

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

新規登録して質問してみよう
ただいま回答率
85.35%
DAO(Data Access Object)

DAO(Data Access Object)とは、データベースなどに保存するための操作を実装したオブジェクトのことです。データの永続化機構に抽象化されたインタフェースを提供し、データベースの詳細を隠蔽。ビジネスロジックとデータ操作も分離できます。

JSP

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

Java

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

ArrayList

Java用のタグです。arrayListはListインターフェースを実装した、リサイズ可能な配列用クラスです。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

1回答

3498閲覧

【Java】Daoファイルから取得してきたArrayList<ArrayList<String>>型の配列をJSPに表示させたい。

sheep1991

総合スコア2

DAO(Data Access Object)

DAO(Data Access Object)とは、データベースなどに保存するための操作を実装したオブジェクトのことです。データの永続化機構に抽象化されたインタフェースを提供し、データベースの詳細を隠蔽。ビジネスロジックとデータ操作も分離できます。

JSP

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

Java

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

ArrayList

Java用のタグです。arrayListはListインターフェースを実装した、リサイズ可能な配列用クラスです。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2021/08/01 02:24

編集2021/08/02 11:50

ご覧頂きましてありがとうございます。
Javaの初学者でして、現在研修の一環として「掲示板作成」をしております。
その中でDaoファイルで取得してきたデータベースの内容を、一度GetBoardAllFacade.javaというファイルに渡して、jspファイルに渡そうとしているのですが、jsp側でjava.lang.IndexOutOfBoundsException: Index 0 out of bounds for length 0というエラーが起きてしまい、そのエラーの解決方法がわからずご質問を投稿させて頂きました。

KeijibanDao

1public ArrayList<ArrayList<String>> getBoardAll () { 2 ArrayList<ArrayList<String>> board_info = new ArrayList<ArrayList<String>>(); 3 try { 4 String board_table = "select * from board order by register_data asc"; 5 PreparedStatement state = con.prepareStatement(board_table); 6 ResultSet rs = state.executeQuery(); 7 8 while(rs.next()) { 9 ArrayList<String> list = new ArrayList<String>(); 10 list.add(rs.getString("id")); 11 list.add(rs.getString("user_id")); 12 list.add(user_info.get(0)); 13 list.add(rs.getString("text")); 14 list.add(rs.getString("register_data")); 15 board_info.add(list); 16 17 } 18 } catch (SQLException e){ 19 System.out.println("SQLException:" + e.getMessage()); 20 } 21 return board_info; 22 23 }

GetBoardAllFacade

1import java.sql.SQLException; 2import java.util.ArrayList; 3 4public class GetBoardAllFacade { 5 KeijibanKensyuDao text_info = new KeijibanKensyuDao(); 6 public ArrayList<ArrayList<String>> execute () { 7 ArrayList<ArrayList<String>> board_info = new ArrayList<ArrayList<String>>(); 8 try { 9 text_info.connect(); 10 ArrayList<ArrayList<String>> list = text_info.getBoardAll(); 11 board_info = list; 12 } catch (ClassNotFoundException | SQLException e) { 13 e.printStackTrace(); 14 } finally { 15 try { 16 text_info.close(); 17 } catch (SQLException e) { 18 e.printStackTrace(); 19 } 20 } 21 return board_info; 22 } 23 24}

Main.jsp

1<% 2GetBoardAllFacade info = new GetBoardAllFacade(); 3ArrayList<ArrayList<String>> board_info = info.execute (); 4%> 5 6 <table> 7 <tr> 8 <td><h3 class="user_name"> 9 (<span>ユーザー名</span>) : (投稿日時) 10 </h3></td> 11 <td> 12 <tr> 13 <td>投稿内容1</td> 14 <td> 15 <tr> 16 <td> 17 <tr> 18 <td><input type="submit" value="削除"></td> 19 </tr> 20 </table> 21</body> 22</html>

該当のエラー画面①
該当のエラー画面②

Daoファイルではデータベースからの値が取得できていることが確認できております。
java.lang.IndexOutOfBoundsException: Index 0 out of bounds for length 0と表示されていることから、
FacadeファイルのexecuteメソッドがDaoからの情報を上手く取得できていないのかとも思っているのですが、原因がわからずでして、どなたかご教示を頂けますと幸いです。

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

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

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

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

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

mamemaru

2021/08/02 01:30

エラー文の見切れている部分も全文見せていただきたいです。
sheep1991

2021/08/02 11:52

mamemaru様 ご指摘ありがとうございます。 エラー画面を追加させて頂きました。 なお、文中に「名前」という表記があるのはパッケージ名に自身の苗字を用いていたため、 そこについては隠させて頂きました。 何卒ご容赦ください。 宜しくお願い致します。
guest

回答1

0

ベストアンサー

# イメージじゃコピペができない。不便だわ~

スタックとレースをみると、KeijibanDao#getBoardAll でIndexOutOfBoundsExceptionが発生している。

getBoardAll の中でそれが発生しそうなのはここ。

java

1 list.add(user_info.get(0));

user_infoがナニモノかはわかりませんが、空っぽなのではないかと。 Index 0 out of bounds for length 0 と言われてますからね。

投稿2021/08/02 23:51

編集2021/08/02 23:52
shiketa

総合スコア4061

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

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

sheep1991

2021/08/03 11:54

shiketa様 ご回答ありがとうございました。 無事解決致しました。 getBoardAllメソッド内に、user_info配列の処理を行なっている同daoファイル内の別メソッドを呼び出すことで解決しました。 また、「イメージじゃコピペができない。」こちらについては失礼致しました。 他ご質問を投稿させて頂く際には気をつけようと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問