1.前提・実現したいこと
sessionに保存しているログインIDをコンソール表示したいのですが、sessionには存在するのに、コンソールに表示できない
言語:java、html(jsp)、css、js
開発ツール:Eclipse
DB:posgreSQL
ポモドーロタイマー機能を持つサイトを作っています。現在聞きたい内容として、DBに登録されているこれまでのタイマー記録を、sessionに保存しているログインIDで検索して取得しようとしています。そのログインIDが取得できているかを確認するためコンソールに表示したいのですが、表示ができないです。エラーが出ているわけでもなく、書き方がどう間違っているのかわからないので教えていただきたいです(jsp側には表示されるのに、コンソール表示ができないのよけいわからなくなっています)
補足:ログインページでログインを行い(このログイン成功時にsessionにログインIDを保存)、ログイン後、SQL検索する当ページ(report.jsp)に遷移し、遷移したときに検索結果を表示するようにしようとしています。
該当のソースコード
「ReportServlet.java」
package classes; import java.io.IOException; import java.io.PrintWriter; 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 javax.servlet.http.HttpSession; @WebServlet("/report") public class ReportServlet extends HttpServlet { private static final long serialVersionUID = 1L; public ReportServlet() { super(); } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); HttpSession session = request.getSession(false); // デバッグログ System.out.println("セッション: " + session); if (session == null || session.getAttribute("loginid") == null) { System.out.println("セッションが存在しないか loginid が null のため login.jsp にリダイレクト"); response.sendRedirect("login.jsp"); return; } String loginid = (String) session.getAttribute("loginid"); System.out.println("取得した loginid: " + loginid); String dbUrl = "jdbc:postgresql://localhost:5432/time_data"; String dbUserName = "postgres"; String dbPassword = "password"; Connection conn = null; PreparedStatement stmt = null; ResultSet rs = null; try { Class.forName("org.postgresql.Driver"); conn = DriverManager.getConnection(dbUrl, dbUserName, dbPassword); ArrayList<Integer> sum_list = new ArrayList<>(); sum_list.add(120); sum_list.add(90); //request.setAttribute("sum_list", sum_list); request.setAttribute("loginid", loginid); request.getRequestDispatcher("/report.jsp").forward(request, response); } catch (SQLException e) { e.printStackTrace(); out.println("<p>データベースエラー: " + e.getMessage() + "</p>"); } catch (ClassNotFoundException e) { e.printStackTrace(); out.println("<p>ドライバが見つかりません: " + e.getMessage() + "</p>"); } finally { try { if (rs != null) rs.close(); if (stmt != null) stmt.close(); if (conn != null) conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } }
「Report.jsp」
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.util.List"%> <%@ page import="java.util.ArrayList"%> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>report</title> <link rel="stylesheet" href="style.css"> <meta name="viewport" content="width=device-width,initial-scale=1.0"> <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/3.2.0/chart.min.js"></script> </head> <body> <jsp:include page="header.jsp"> <jsp:param name="title" value="report" /> </jsp:include> <div style="width: 400px; margin: 0 auto;"> <canvas id="mychart-bar"></canvas> </div> <p> <!--ログインIDに基づくレポートの生成 --> <input type="submit" value="create" id="create"> </p> <% String loginid = (String) session.getAttribute("loginid"); %> <h1> ユーザー名:<%=loginid%></h1> <script> </script> </body> </html>

回答2件
あなたの回答
tips
プレビュー