Java

【サーブレット&jsp】ArrayListの受け渡し方法を解説

※アフィリエイト広告を利用しています。

ウハブログ

こんにちは、大学時代にプログラミングを始め、現在はエンジニアをしているuhablog(ウハブログ)です。

今回の記事ではサーブレットとjspでArrayListを受け渡す方法について解説します。

サーブレットとjsp間での値の受け渡しは必須ですが、中でもArrayListの受け渡しはデータベースから取得した複数のデータを受け渡す際にも利用することがあります。

利用頻度の高い技術ですので、ぜひこの記事を読んで使えるようにしておきましょう。

サーブレットとjspの値の受け渡しについてはこちらの記事も参考にしてみてください。

挫折せずにプログラミングを学ぶために必要なこと

僕はプログラミングで挫折した経験があります。

それは周りに聞ける人がいなく、一人でエラーと戦っていたからです。

Freeksは月額10,780円という破格の値段で、現役エンジニアに質問する環境を手に入れることができるプログラミングスクールです。

次のような悩みを少しでも抱えていたら、まずは無料カウンセリングを受けてみてください。

  • エラーを一人で解消できない
  • このまま勉強を続けて本当に就職できるかわからない
  • プログラミングスクールは高額すぎて通えない
  • 申込みは1分でできます。学習する環境にお金を使うというのは良い自己投資になります。
    >>Freeksの無料カウンセリングはこちら

    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に値を受け渡す

    サーブレットでwebアプリ開発を学ぶ

    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を受け渡す方法について解説していきました。
    こちらはデータベースから取得した複数データを受け渡す際によく使うので、いつでも使えるようにしておきましょう。

    実際にデータベースからデータを取得して画面に表示する方法を解説した記事もあるので、気になる方はそちらもチェックしてみてください。

    挫折せずにプログラミングを学ぶためには?

    挫折せずにプログラミングを学ぶために必要なこと

    僕はプログラミングで挫折した経験があります。

    それは周りに聞ける人がいなく、一人でエラーと戦っていたからです。

    Freeksは月額10,780円という破格の値段で、現役エンジニアに質問する環境を手に入れることができるプログラミングスクールです。

    次のような悩みを少しでも抱えていたら、まずは無料カウンセリングを受けてみてください。

  • エラーを一人で解消できない
  • このまま勉強を続けて本当に就職できるかわからない
  • プログラミングスクールは高額すぎて通えない
  • 申込みは1分でできます。学習する環境にお金を使うというのは良い自己投資になります。
    >>Freeksの無料カウンセリングはこちら

    Freeks公式サイトはこちら>>>

    【関連記事】Freeks評判、口コミ

    独学が不安なあなたへ

    -Java
    -, , ,