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

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

新規登録して質問してみよう
ただいま回答率
85.39%
JSP

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

Java

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

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

ArrayList

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

Q&A

解決済

4回答

38811閲覧

ServletからJSPにリストを返し、プルダウンに表示させたい

GranCD

総合スコア13

JSP

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

Java

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

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

ArrayList

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

1グッド

1クリップ

投稿2016/02/06 14:42

プログラミング初心者です。jspにてプルダウンを表示させようとしています。その際にjspは、ServletでArrayListに格納した値を受け取り、プルダウンにて表示させようとしています。

下記にjspのソースコードを記述しました。
ここではjsp内でArrayListに値を格納し、ArrayListに格納した値を利用して、プルダウンを表示させています。JSP内では実現できるのですが、次のステップとして、前述したようにServletにてArrayListに値を格納し、jspにてその値を受け取り、プルダウンを表示させようとしています。しかし、実現方法がわからず困っています。

【質問】
ServletにてArrayListに値(2000と2001)を格納し、jspにてその値を受け取り、list.jspと同様のプルダウンを表示させる方法をご教授頂けないでしょうか?

何卒宜しくお願い致します。

list.jsp

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <%@ page import="java.util.ArrayList" %> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>list.jsp</title> </head> <script type="text/javascript"> </script> <body> <%ArrayList dummyList = new ArrayList();%> <% dummyList.add("2000"); %> <% dummyList.add("2001"); %> <select> <%for (int i = 0; i < dummyList.size(); i++) {%> <option value="list<%=i%>"><%=dummyList.get(i)%></option> <%}%> </select> </body> </html>
settyan👍を押しています

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

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

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

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

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

guest

回答4

0

web.xml で保存。

xml

1<?xml version="1.0" encoding="UTF-8"?> 2<web-app 3xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4xmlns="http://java.sun.com/xml/ns/javaee" 5xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 6id="WebApp_ID" 7version="2.5"> 8 <display-name>Z_TestWeb01</display-name> 9 10 <servlet> 11 <servlet-name>Main</servlet-name> 12 <servlet-class>jp.test.servlet.Main</servlet-class> 13 </servlet> 14 15 <servlet-mapping> 16 <servlet-name>Main</servlet-name> 17 <url-pattern>/s/*</url-pattern> 18 </servlet-mapping> 19 20 <welcome-file-list> 21 <welcome-file>index.html</welcome-file> 22 </welcome-file-list> 23</web-app> 24

Main.java で保存。

java

1package jp.test.servlet; 2 3import java.io.IOException; 4import java.time.LocalDateTime; 5import java.time.format.DateTimeFormatter; 6import java.util.ArrayList; 7import java.util.LinkedHashMap; 8import java.util.List; 9import java.util.Map; 10 11import javax.servlet.ServletContext; 12import javax.servlet.ServletException; 13import javax.servlet.http.HttpServlet; 14import javax.servlet.http.HttpServletRequest; 15import javax.servlet.http.HttpServletResponse; 16 17@SuppressWarnings("serial") 18public class Main extends HttpServlet { 19 20 public Main() { 21 22 } 23 24 /** 25 * 最初の表示用 26 * @throws IOException 27 * @throws ServletException 28 */ 29 @Override 30 public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { 31 32 // セッション管理(登録、既存セッションの削除、その他) 33 34 getServletContext().setAttribute("screenId", "Main"); 35 getServletContext().setAttribute("entryDateTime", dateTime()); 36 req.getRequestDispatcher("/Main.jsp").forward(req, res); 37 38 } 39 40 private String dateTime() { 41 LocalDateTime ldt = LocalDateTime.now(); 42 DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH時mm分ss病"); 43 return dtf.format(ldt); 44 } 45 46 /** 47 * リクエスト処理用 48 * @throws IOException 49 * @throws ServletException 50 */ 51 @Override 52 public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { 53 54 String command = toEmpty(req.getParameter("command")); 55 String fromScreenId = toEmpty(req.getParameter("screenId")); 56 String entryDateTime = toEmpty(req.getParameter("entryDateTime")); 57 58 ServletContext ctx = super.getServletContext(); 59 ctx.setAttribute("fromScreenId", fromScreenId); 60 ctx.setAttribute("entryDateTime", entryDateTime); 61 62 String jsp; 63 64 if (command.equals("Select")) { 65 Map<String, String> map = new LinkedHashMap<String, String>(); 66 67 for (int i=0;i < 10;i++) { 68 map.put(String.format("ListItem%02d", i), String.format("リストデータ%02d", i)); 69 } 70 ctx.setAttribute("selectList", map); 71 72 jsp = "/Select.jsp"; 73 } else if (command.equals("Table")) { 74 List<Table> list = new ArrayList<>(); 75 76 list.add(new Table(1, "りんご", "青森産", 120)); 77 list.add(new Table(2, "バナナ", "ハワイ", 20)); 78 list.add(new Table(3, "なし", "山梨産", 100)); 79 list.add(new Table(4, "すいか", "神奈川産", 220)); 80 list.add(new Table(5, "シーカーサー", "沖縄産", 140)); 81 82 ctx.setAttribute("detailList", list); 83 84 jsp = "/Table.jsp"; 85 } else { 86 jsp = "/Error.jsp"; 87 } 88 89 req.getRequestDispatcher(jsp).forward(req, res); 90 91 } 92 private String toEmpty(Object o) { 93 if (o != null) return o.toString(); 94 return ""; 95 } 96} 97

投稿2016/02/06 16:52

ipadcaron

総合スコア1693

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

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

0

ベストアンサー

Java8, EclipseLuna4.4 Tomcat6
文字コードはすべて utf-8 で保存

ブラウザからアクセスする場合は、
web.xml をコピペでやるなら、Z_TestWeb01 なので
http://localhost:8080/Z_TestWeb01/s/
になります。

こういうことは掲示板で聞かないで、まずはチュートリアルHPで勉強してからわからないところを掲示板で聞くのが筋ですね。

こういうのをてんこもりで教えてくれるHPを紹介します。
http://www.javaroad.jp/

ただし、ここの掲示板はかなりハードです。質問する場合は要点をまとめて的確な質問をしないと徹底的に叩かれるので注意してください。

投稿2016/02/06 16:58

編集2016/02/06 17:06
ipadcaron

総合スコア1693

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

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

GranCD

2016/02/07 05:18

ご回答頂きましてありがとうございます。 勉強不足で申し訳ありません。 また、参考HPを教えて頂きましてありがとうございます。 教えて頂いたコードとHPを参考にします。
guest

0

Select.jsp で保存

jsp

1 2<%@ page language="java" contentType="text/html; charset=UTF-8" 3 pageEncoding="UTF-8"%> 4<%@ page import="java.util.*" %> 5<!DOCTYPE html> 6<html> 7<head> 8<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 9<meta http-equiv="X-UA-Compatible" content="IE=Edge" /> 10<title>Select list</title> 11</head> 12<body> 13<select name="select"> 14<% 15 ServletContext ctx = getServletContext(); 16 Map<String, String> map = (Map<String, String>) ctx.getAttribute("selectList"); 17 18 // とほほ・・・ jsp 内では、らむだ式は使えない? 19 //map.forEach((k, v) -> { 20 21 Iterator<String> it = map.keySet().iterator(); 22 23 while (it.hasNext()) { 24 String k = it.next(); 25 String v = map.get(k); 26%> 27 28 <option value="<%= k %>"><%= v %></option> 29 30<% 31 //}); 32 } 33%> 34</select> 35</body> 36</html>

Table.jsp で保存

jsp

1 2<%@ page language="java" contentType="text/html; charset=UTF-8" 3 pageEncoding="UTF-8"%> 4<!DOCTYPE html> 5<html> 6<head> 7<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 8<meta http-equiv="X-UA-Compatible" content="IE=Edge" /> 9<title>show Details</title> 10</head> 11<body> 12 13<p>ここは自分でやってくれ。</p> 14 15</body> 16</html>

投稿2016/02/06 16:55

ipadcaron

総合スコア1693

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

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

0

Main.jsp で保存

jsp

1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3<!DOCTYPE html> 4<html> 5<head> 6<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 7<meta http-equiv="X-UA-Compatible" content="IE=Edge" /> 8<title>Main Menu</title> 9<style> 10.title > span { 11 margin-left: 1em; 12 border-radius: 4px; 13 border: solid 1px gray; 14 background-color: #CCC; 15 padding: 0.4em; 16} 17button { 18 font-size: 1.6em; 19} 20</style> 21</head> 22<body> 23<% ServletContext ctx = getServletContext(); %> 24 25<p class="title"> 26 <span><%= ctx.getAttribute("screenId") %></span> 27 <span><%= ctx.getAttribute("entryDateTime") %></span> 28</p> 29 30<fieldset> 31 <legend>リスト選択画面</legend> 32 <form method="post"> 33 <input type="hidden" name="command" value="Select" /> 34 <input type="hidden" name="screenId" value="<%= ctx.getAttribute("screenId")%>" /> 35 <input type="hidden" name="entryDateTime" value="<%= ctx.getAttribute("entryDateTime")%>" /> 36 <button>リスト選択画面に移動する</button> 37 </form> 38</fieldset> 39 40<fieldset> 41 <legend>テーブル一覧画面</legend> 42 <form method="post"> 43 <input type="hidden" name="command" value="Table" /> 44 <input type="hidden" name="screenId" value="<%= ctx.getAttribute("screenId")%>" /> 45 <input type="hidden" name="entryDateTime" value="<%= ctx.getAttribute("entryDateTime")%>" /> 46 <button>テーブル一覧画面に移動する</button> 47 </form> 48</fieldset> 49 50</body> 51</html>

Table.java で保存

java

1package jp.test.servlet; 2 3import java.io.Serializable; 4 5@SuppressWarnings("serial") 6public class Table implements Serializable { 7 8 private Integer index; 9 private String name; 10 private String detail; 11 private Integer price; 12 13 public Table() { 14 super(); 15 // TODO 自動生成されたコンストラクター・スタブ 16 } 17 18 public Table(Integer index, String name, String detail, Integer price) { 19 super(); 20 this.index = index; 21 this.name = name; 22 this.detail = detail; 23 this.price = price; 24 } 25 /** 26 * indexを取得します。 27 * @return index 28 */ 29 public Integer getIndex() { 30 return index; 31 } 32 /** 33 * indexを設定します。 34 * @param index index 35 */ 36 public void setIndex(Integer index) { 37 this.index = index; 38 } 39 /** 40 * nameを取得します。 41 * @return name 42 */ 43 public String getName() { 44 return name; 45 } 46 /** 47 * nameを設定します。 48 * @param name name 49 */ 50 public void setName(String name) { 51 this.name = name; 52 } 53 /** 54 * detailを取得します。 55 * @return detail 56 */ 57 public String getDetail() { 58 return detail; 59 } 60 /** 61 * detailを設定します。 62 * @param detail detail 63 */ 64 public void setDetail(String detail) { 65 this.detail = detail; 66 } 67 /** 68 * priceを取得します。 69 * @return price 70 */ 71 public Integer getPrice() { 72 return price; 73 } 74 /** 75 * priceを設定します。 76 * @param price price 77 */ 78 public void setPrice(Integer price) { 79 this.price = price; 80 } 81 82 @Override 83 public String toString() { 84 return "Table [index=" + index + ", name=" + name + ", detail=" 85 + detail + ", price=" + price + "]"; 86 } 87 88} 89

投稿2016/02/06 16:54

ipadcaron

総合スコア1693

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.39%

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

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

質問する

関連した質問