<%--============================================================================
  << jsp144.jsp >>                                                         
                                                                           
 JSP(4):セッション管理(応用 買い物かご)                         
                                                                           
   果物の購入、返却を行う。                                             

 ●暗黙オブジェクトrequest
  getParameterValues(String s)
   パラメータsに対応するすべての値を取得する。

 ●起動法                                                                   
  (1)JSPファイル(jsp144.jsp)を作成し、   
     %CATALINA_HOME%\webapps\SV\jsp144.jsp               
       に保存する。                                                          
    (2)入力フォームで、URL(http://localhost:8080/SV/jsp144.jsp)を指定する。
============================================================================--%>

<%@ page contentType="text/html; charset=Shift_JIS" %>
<%@ page import="java.util.*" %>

<html>
<head><title>JSP</title></head>
<body>

<h2>くだもの屋</h2>
複数の項目を選択するときは、Ctrlキーを押しながら選択する<br>
<form action=http://localhost:8080/SV/jsp144.jsp method=POST>
<select name=f1 size=3 multiple>
  <option value=みかん >みかん
  <option value=りんご >りんご
  <option value=いちご >いちご
</select>
<input type=submit name=f2 value=入れる>
<input type=submit name=f2 value=戻す><br>
</form>

<%
  // セッションの属性(FRUITS)を取得。
  ArrayList a = (ArrayList)session.getAttribute("FRUITS");
  if( a == null ) { a = new ArrayList(); }

  // フォームのデータを取得。
  request.setCharacterEncoding("JISAutoDetect"); 
  String s1[] = request.getParameterValues("f1");
  String s2 = request.getParameter("f2");

  // 購入、返却手続き。
  if( (s1 != null)&&(s2 != null) ) {
    // 購入手続きを行い、セッションに設定。
    if( "入れる".equals(s2) ) { 
      for( int i=0; i<s1.length; i++ ) { a.add(s1[i]); }
      session.setAttribute("FRUITS", a);
      out.println("買い物かごに入れました<br>");
    }                                    
    // 返却手続きを行い、セッションに設定。
    if( "戻す".equals(s2) ) { 
      for( int i=0; i<s1.length; i++ ) {
        for( int j=0; j<a.size(); j++ ) {
          if( ((String)a.get(j)).equals(s1[i]) ) { a.remove(j); break; }
        }
      } 
      session.setAttribute("FRUITS", a);
      out.println("買い物かごから戻しました<br>");
    }
  }

  // 買い物かごの表示。
  if( a != null ) {
    // セッションの属性(FRUITS)を取得。
    out.println("買い物かご(" + a.size() + "個)<br>"); 
    for( int i=0; i<a.size(); i++ ) { 
      out.println((i+1) + ": " + a.get(i) + "<br>");
    }
  }
%>

</body>
</html>
実行結果

URL(http://localhost:8080/SV/jsp144.jsp)を指定後
複数の項目を選択する場合、Ctrlキーを押しながら選択する。




入れるをクリック後




戻すをクリック後