前提・実現したいこと
[開発環境: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>
まだ回答がついていません
会員登録して回答してみよう