
こんにちは、大学時代にプログラミングを始め、現在はエンジニアをしているuhablog(ウハブログ)です。
今回の記事ではサーブレットとjspでArrayListを受け渡す方法について解説します。
サーブレットとjsp間での値の受け渡しは必須ですが、中でもArrayListの受け渡しはデータベースから取得した複数のデータを受け渡す際にも利用することがあります。
利用頻度の高い技術ですので、ぜひこの記事を読んで使えるようにしておきましょう。
サーブレットとjspの値の受け渡しについてはこちらの記事も参考にしてみてください。
Listを渡すサーブレット
早速コードを使って解説していきます。
今回はリクエストを受け取ったサーブレット内で、Listを作成して、それをリクエストスコープに格納します。
doGetメソッド
/**
* ArrayListを返却する
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// リストの生成
List<String> list = new ArrayList<>();
// リストに要素を追加する
list.add("僕は勉強ができない");
list.add("僕は愛を証明しようと思う");
list.add("CHANCE");
// リクエストスコープにArrayListを設定
request.setAttribute("list", list);
// 次の画面に遷移
request.getRequestDispatcher("/Result.jsp").forward(request, response);
}
以下詳しく解説していきます。
まずは次の記述でListを準備しています。
今回は例としてString型のListを作成しました。
本のタイトルを3つ格納しています。
// リストの生成
List<String> list = new ArrayList<>();
// リストに要素を追加する
list.add("僕は勉強ができない");
list.add("僕は愛を証明しようと思う");
list.add("CHANCE");
request.setAttributeメソッドを使って、jspにArrayListを受け渡します。
第一引数で「"list"」としているので、jspでも受け取るときにlistを指定することで、今回作成したリストを受け取ることができます。
第二引数で指定している「list」は受け渡す値そのものです。今回はlistという変数名で、リストを作成したので、ここでもlist変数を指定しています。
// リクエストスコープにArrayListを設定
request.setAttribute("list", list);
最後に「Result.jsp」に遷移するための記述をしています。
// 次の画面に遷移
request.getRequestDispatcher("/Result.jsp").forward(request, response);
setAttributeメソッドを使って、サーブレットからjspに値を受け渡す
Listを受け取るjsp
次にjspでListを受け取る方法についてみていきます。
受け取るjspは次のようになります。
Result.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.util.List" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<% List<String> list = (List<String>)request.getAttribute("list"); %>
<% for(String str: list) { %>
<%=str %><br>
<% } %>
</body>
</html>
重要なポイントに絞って解説していきます。
まずはListをjsp内で利用できるようにするためにインポートしている箇所です。
次のような記述をすることでJavaの様々なクラスはもちろん、自作したクラスをjsp内で利用することができるようになります。
<%@ page import="java.util.List" %>
次にListをリクエストスコープから取り出している箇所です。
request.getAttributeメソッドを使うことでサーブレットでsetAttributeを使って設定した値を受け取ることができます。
このときgetAttributeメソッドの第一引数で指定するのが、サーブレットのsetAttributeメソッドで第一引数に指定したものと同じである必要があります。
注意点として、取り出す際に(List<String>)をつけることでキャストする必要があります。
<% List<String> list = (List<String>)request.getAttribute("list"); %>
最後に受け取ったListを表示する箇所です。
拡張forを使って、Listの要素を順番に取り出して、画面に表示しています。
<% for(String str: list) { %>
<%=str %><br>
<% } %>
getAttributeメソッドを使って、サーブレットから送られてきた値をjsp内で使うことができる!
動作確認
動作確認をしてみましょう。
サーバーを起動して、URLを指定すると次のように画面表示されます。

Listをサーブレットから受け取り、jspで表示できるていることが確認できました。
今回はサーブレットとjspでListを受け渡す方法について解説していきました。
こちらはデータベースから取得した複数データを受け渡す際によく使うので、いつでも使えるようにしておきましょう。
実際にデータベースからデータを取得して画面に表示する方法を解説した記事もあるので、気になる方はそちらもチェックしてみてください。
独学が辛いあなたへ
プログラミング学習にはエラーやわからないところというのはつきものです。
人に聞けば5分でわかることも、自分一人で悩んでいると1日数日時間を費やしてしまうこともあります。
そんな時にプログラミングスクールであれば、質問できる環境を手に入れることができます。
Freeksはいつでもどこでも豊富なカリキュラムを学ぶことができる月額制のプログラミングスクールです。
Freeksでは無料体験を行なっているので、質問できる環境を手に入れて、プログラミング学習を挫折することなく続けていきたいという方は無料体験に参加してみてください。
【関連記事】Freeks評判、口コミ
他のプログラミングスクール
月額10,780円のサブスク型プログラミングスクール!
>>Freeks公式サイト
20代におすすめ!無料で未経験からプログラマー就職まで実現できる!
>>ProgrammerCollege公式サイト
パーソナルメンターがつく充実したサポート
>>DMM WEBCAMP公式サイト
おすすめのプログラミングスクールについて詳しく知りたいという方はこちらの記事も参考にしてみてください。