前提・実現したいこと
ここに質問の内容を詳しく書いてください。
現在自己学習でjavaのwebアプリケーションを作成しています。
ツールはeclipse, mariaDBを使用しています。
アプリケーションの内容は、体調不良の方を対象に症状・体温をプルダウンで選択してもらい(Sym_fevテーブルにデータ格納)、
その組み合わせに合致したレコードをSymptomテーブルから抽出する(抽出するデータは症状カラム(symptom)・体温カラム(fever_degree)のデータに加え、対処法(handle_information)カラムのデータも取得)
といった内容です。
発生している問題・エラーメッセージ
画面遷移の見た目
https://gyazo.com/0285e3fc639c07a19ff064149ceba1ec
↑
一覧画面のservlet(SymptomListServlet.java)をeclipseで「サーバで実行」すると問題なく出力される。
一度別画面に遷移して再度一覧画面に遷移するとテーブルのデータが取得できていない。
該当のソースコード
SymptomListServlet.java package webapp.SymptomManagement; import java.io.IOException; 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 javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import web.basic.symptom.beans.SymptomInfoBeans; /** * Servlet implementation class SalesListServlet */ @WebServlet("/SymptomListServlet") public class SymptomListServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public SymptomListServlet() { super(); // TODO Auto-generated constructor stub } /** * 初期表示処理. */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("SymptomListServlet.doGet()"); System.out.println("【症状一覧表示】"); // 【症状一覧の作成】 ArrayList<SymptomInfoBeans> symptomList = new ArrayList<>(); // ■DB接続 Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; // 接続情報 String url="jdbc:mariadb://localhost:3306/condition_management"; String user="〇〇"; String password="〇〇"; try { // 接続処理 conn = DriverManager.getConnection(url, user, password); // DBに接続するため、接続に必要な情報を引数に渡す。 // ■検索処理実行 // SQL作成 String sql = "SELECT\r\n" + " symptom.symptom_id,\r\n" + " symptom.symptom_name,\r\n" + " symptom.fever_degree,\r\n" + " symptom.handle_information\r\n" + "FROM\r\n" + " symptom"; System.out.println(sql); // SQL準備 ps = conn.prepareStatement(sql); // SQL実行 rs = ps.executeQuery(); // ■データを読込み、症状一覧(ArrayList)に設定する System.out.println("■症状一覧データを設定"); while(rs.next()) { // データ読込 int symptomId = rs.getInt("symptom_id"); String symptomName = rs.getString("symptom_name"); String feverDegree = rs.getString("fever_degree"); String handleInformation = rs.getString("handle_information"); // 症状情報(JavaBeans)に値を設定 SymptomInfoBeans symptomInfo = new SymptomInfoBeans(); symptomInfo.setSymptomId(symptomId); symptomInfo.setSymptomName(symptomName); symptomInfo.setFeverDegree(feverDegree); symptomInfo.setHandleInformation(handleInformation); System.out.println(symptomInfo); // 症状一覧(ArrayList)に追加 symptomList.add(symptomInfo); } } catch(SQLException e) { // 接続失敗時の処理 e.printStackTrace(); } finally { try { // ■クローズ処理 // 検索結果 if(rs!=null) { rs.close(); } // SQL文 if(ps!=null) { ps.close(); } // DB接続 if(conn!=null) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } // 【表示値を設定する】 System.out.println(symptomList); request.setAttribute("symptomList", symptomList); // 【画面に遷移する】 request.getRequestDispatcher("Symptom_list.jsp").forward(request, response); // symptom_list.jspにrequestをdispatchしてもらう。 } } Symptom_list.jsp(一覧画面の見た目) <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>体調管理アプリ</title> </head> <body> <table> <tr> <th>症状</th> <th>体温</th> <th>対処法</th> </tr> <c:forEach var="symptomList" items="${symptomList}"> <tr> <td>${symptomList.symptomName}</td> <td>${symptomList.feverDegree}</td> <td>${symptomList.handleInformation}</td> </tr> </c:forEach> </table> <!-- フッター --> <form action="TopPage.html" method="post"> <input type="submit" value="トップページ"> </form> <form action="" method="post"> <input type="submit" value="ログアウト"> </form> </body> </html> TopPage.html(トップページの見た目) <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>体調管理アプリ</title> </head> <body> <p> [熱っぽい。。。][だるい。。。]と思ったら </p> <p> 一覧画面を見てみよう!(過ごし方が載っているよ) </p> <form action="Symptom_list.jsp" method="get"> <!-- 一覧画面でデータを取得するためgetを記載(推測) --> <input type="submit" value="一覧画面"> </form> <p> [情報が足りない!!]と思った方 </p> <p> 情報の追加・更新はこちら! </p> <a href= "Sym_fevAdd.jsp" >追加画面</a> <a href= "Sym_fevUpdate.jsp" >更新画面</a> <form action="" method="post"> <input type="submit" value="ログアウト"> </form> </body> </html>
試したこと
TopPage.htmlから一覧画面に遷移した時にデータが取得できないといけないのかと思い、
TopPage.html内のmethodを<form action="Symptom_list.jsp" method="get">に変更。
→変化なし。
TopPage.htmlのSymptom_list.jspに遷移するコードを
<form action="SymptomListServlet.java" method="get"> に変更。 →404エラーが発生。別ページから一覧画面に遷移した時にSymptomListServlet実行時と同じ見た目にするには
jspを編集する必要があるのでしょうか。
もしよろしければご教授お願い致します。
補足情報(FW/ツールのバージョンなど)
バージョン:java11
Tomcat9
xampp control panel v3.3.0
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。