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

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

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

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

コンボボックス

GUIの要素のひとつです。Listboxと同様にいくつかのうちひとつを選択する機能だが、Comboboxの場合は選択されたもののみがデフォルトとして表示される。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

リストボックス

ユーザーがリストから1つ以上のアイテムを選択できるようにするGUI要素です。

受付中

JSPのリストボックスについて

retantaro
retantaro

総合スコア15

JSP

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

コンボボックス

GUIの要素のひとつです。Listboxと同様にいくつかのうちひとつを選択する機能だが、Comboboxの場合は選択されたもののみがデフォルトとして表示される。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

リストボックス

ユーザーがリストから1つ以上のアイテムを選択できるようにするGUI要素です。

0回答

0評価

0クリップ

238閲覧

投稿2021/10/20 03:12

前提・実現したいこと

[開発環境:Eclipse]
"REVENGE"テーブルの県名を全件表示し、選択した県名の面積と人口をテキストボックスから値を入力し、データベースを更新するwebアプリケーションを作成しています。

【質問】
JSPに慣れておらず、データベースから取得し、全件表示されたリストボックスを作成するところができず、悩んでいます。
調べてみましたが、selectとforeachを合わせて使っている解説サイトが見つからなかったので質問させていただきました。

どうかご教示をお願い致します。

【補足】
全件表示をweb上でテキストとしての出力まではできました。
それを県名だけでもリストボックスで選択できるようにしたいです。
なにかわかりやすいサイトがあれば参考にさせていただきたいです。

該当のソースコード

java

//PrefectureSrv.java package servlet; import java.io.IOException; import java.util.List; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import dao.FindAll; import model.PrefectureData; /** * Servlet implementation class PrefectureSrv */ @WebServlet("/PrefectureSrv") public class PrefectureSrv extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse * response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { FindAll fa = new FindAll(); List<PrefectureData> allList = fa.findAll(); request.setAttribute("allList", allList); // フォワード RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/PrefectureView.jsp"); dispatcher.forward(request, response); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { RequestDispatcher dispatcher1 = request.getRequestDispatcher("/WEB-INF/jsp/PrefectureView.jsp"); dispatcher1.forward(request, response); } } //FindAll.java package dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import model.PrefectureData; public class FindAll { // データベース接続に使用する情報 private final String JDBC_URL = "jdbc:oracle:thin:@//172.16.4.6:1521/infopdb"; private final String DB_USER = "uenoa"; private final String DB_PASS = "uenoa"; public List<PrefectureData> findAll(){ String sql = "select * from REVENGE"; List<PrefectureData> allList = new ArrayList<PrefectureData>(); try( Connection con = DriverManager.getConnection(JDBC_URL, DB_USER, DB_PASS); ) { PreparedStatement pstmt = con.prepareStatement(sql); ResultSet rs = pstmt.executeQuery(); // データの出力 while (rs.next()) { String name = null; double area = 0; double population = 0; PrefectureData allData = new PrefectureData(name, area, population); allData.setName(rs.getString("県名")); allData.setArea(rs.getDouble("面積")); allData.setPopulation(rs.getDouble("人口")); allList.add(allData); } } catch(SQLException e) { e.printStackTrace(); } return allList; } } //PrefectureData.java package model; public class PrefectureData implements java.io.Serializable{ private String name; private double area; private double population; public PrefectureData(String name, double area, double population) { this.name = name; this.area = area; this.population = population; } public final String getName() { return name; } public void setName(String name) { this.name = name; } public final double getArea() { return area; } public void setArea(double area) { this.area = area; } public final double getPopulation() { return population; } public void setPopulation(double population) { this.population = population; } } //PrefectureView.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <%@ page import="javax.servlet.http.*,javax.servlet.*" import="java.io.*,java.util.*,java.text.*" %> <%@ page import="model.PrefectureData"%> <% request.setCharacterEncoding("UTF-8"); List<PrefectureData> allList = (List<PrefectureData>) request.getAttribute("allList"); %> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>全件表示</title> </head> <body> <div> <table> <tr> <th>県名</th> <th>面積</th> <th>人口</th> </tr> <c:forEach var="allList" items="${allList}"> <tr> <td>${allList.name}</td> <td>${allList.area}</td> <td>${allList.population}</td> </tr> </c:forEach> </table> </div> </body> </html>

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

JSP

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

コンボボックス

GUIの要素のひとつです。Listboxと同様にいくつかのうちひとつを選択する機能だが、Comboboxの場合は選択されたもののみがデフォルトとして表示される。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

リストボックス

ユーザーがリストから1つ以上のアイテムを選択できるようにするGUI要素です。