前提・実現したいこと
Javaに関する質問です。
JDBCとJSPを使って学生の出席管理をするシステムを演習的に作成しています。
DBからArrayListでテーブルを取得し、チャックボックスにチェックが入った列のint型の「出欠」の数値を変更してUPDATEを実行したいのですが、ArrayList内の選択された部分のみが取得できません。
該当のソースコード
jsp
1<%@page import="java.util.*"%> 2<%@page import="java.sql.*"%> 3<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 4<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> 5<%@ page language="java" contentType="text/html; charset=UTF-8" 6 pageEncoding="UTF-8"%> 7<!DOCTYPE html> 8<html> 9<head> 10<meta charset="UTF-8"> 11<title>認欠処理システム</title> 12</head> 13<body> 14認欠に変更 15<form action="AuthAbUpdateMain" method="post"> 16 <table border="1"> 17 <tr> 18 <th>ID</th> 19 <th>教科クラスコード</th> 20 <th>コース</th> 21 <th>教員コード</th> 22 <th>学籍番号</th> 23 <th>日付</th> 24 <th>出欠</th> 25 </tr> 26 <c:forEach var="Absence" items="${absenceList}" varStatus="i"> 27 <tr> 28 <td><c:out value="${Absence.id}" /></td> 29 <td><c:out value="${Absence.classCode}" /></td> 30 <td><c:out value="${Absence.course}" /></td> 31 <td><c:out value="${Absence.teachCode}" /></td> 32 <td><c:out value="${Absence.studentNum}" /></td> 33 <td><c:out value="${Absence.date}" /></td> 34 <td><c:out value="${Absence.attendCheck}" /></td> 35 <td><input type="checkbox" name="check[]" value="i.index"></td> 36 </tr> 37 </c:forEach> 38 </table> 39 <input type="submit" value="変更"> 40</form> 41 (10 = 欠席) 42 43</body> 44</html> 45
AuthAbsenceUpdate
1package update; 2 3import java.sql.Connection; 4import java.sql.DriverManager; 5import java.sql.PreparedStatement; 6import java.sql.SQLException; 7 8public class AuthAbsenceUpdate { 9 //接続用変数 10 static final String URL = "jdbc:h2:tcp://localhost/~/test"; 11 static final String DRIVER = "org.h2.Driver"; 12 static final String USERNAME = "sa"; 13 static final String PASSWORD = "Pass"; 14 15 public static void main(String[] args) { 16 //接続処理 17 try{ 18 Class.forName(DRIVER); 19 try(Connection con = DriverManager.getConnection(URL,USERNAME,PASSWORD)){ 20 21 //UPDATE文の実行 22 String sql = "UPDATE 出席 SET 出欠 = 01 WHERE ID = ?"; 23 PreparedStatement pStmt = con.prepareStatement(sql); 24 pStmt.setInt(?, ?); 25 System.out.println("sql = "+sql); //出力確認用 26 27 //実行処理 28 int rs = pStmt.executeUpdate(); 29 } 30 } catch (SQLException e) { 31 e.printStackTrace(); 32 }catch(ClassNotFoundException e){ 33 System.out.println("ドライバに接続できません\n"); 34 } 35 } 36}
AuthAbUpdateMain
1 2package update; 3 4import java.io.IOException; 5import java.util.List; 6 7import javax.servlet.RequestDispatcher; 8import javax.servlet.ServletException; 9import javax.servlet.annotation.WebServlet; 10import javax.servlet.http.HttpServlet; 11import javax.servlet.http.HttpServletRequest; 12import javax.servlet.http.HttpServletResponse; 13 14import kesseki.Absence; 15import kesseki.GetAbsenceListLogic; 16 17 18@WebServlet("/AuthAbUpdateMain") 19public class AuthAbUpdateMain extends HttpServlet { 20 /**********************************/ 21 /*** 欠席→認欠を処理するクラス ***/ 22 /**********************************/ 23 private static final long serialVersionUID = 1L; 24 25 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 26 27 GetAbsenceListLogic getAbsenceListLogic = new GetAbsenceListLogic(); 28 List<Absence> absenceList = getAbsenceListLogic.execute(); 29 request.setAttribute("absenceList", absenceList); 30 31 //フォワード 32 RequestDispatcher dispatcher = request.getRequestDispatcher("/UpdateMain.jsp"); 33 dispatcher.forward(request, response); 34 } 35 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 36 request.setCharacterEncoding("UTF-8"); 37 38 AuthAbsenceUpdate authAbsenceUpdate = new AuthAbsenceUpdate(); 39 GetAbsenceListLogic getAbsenceListLogic = new GetAbsenceListLogic(); 40 List<Absence> absenceList = getAbsenceListLogic.execute(); 41 request.setAttribute("absenceList", absenceList); 42 43 //フォワード 44 RequestDispatcher dispatcher = request.getRequestDispatcher("/UpdateMain.jsp"); 45 dispatcher.forward(request, response); 46 } 47}
試したこと
補足情報(FW/ツールのバージョンなど)
eclipse
追記
UpdateMain.jspで表示させているテーブルのチェックボックスにチェックを入れ、
「更新」ボタンを押すとAuthAbsenceUpdate.javaのSQL文を実行して「出欠」の値を01に変更する処理をしたいのですが、UPDATE文が実行されません。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/12 00:18
2020/02/12 00:28
2020/02/12 01:12