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

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

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

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

Java

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

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

servlet

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

Q&A

解決済

1回答

2427閲覧

再度遷移後、画面にデータベースの値が表示されない。

koske

総合スコア1

JSP

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

Java

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

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

servlet

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

0グッド

0クリップ

投稿2021/09/20 04:23

編集2021/09/21 05:38

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
現在自己学習で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
ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

自己解決

<form action="Symptom_list.jsp" method="get"> <input type="submit" value="一覧画面"> </form>

jsp内のリンク先をSymptomListServletに変更すると解決いたしました。
閲覧していただき有難うございました。

投稿2021/09/21 06:03

koske

総合スコア1

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問