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

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

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

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

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Java

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

servlet

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

Q&A

解決済

1回答

24198閲覧

JSPでSQLの取得データを表示する方法

rjberger19

総合スコア33

JSP

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

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Java

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

servlet

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

0グッド

0クリップ

投稿2015/10/18 12:03

JSP上でデータベースに格納された情報を表示するにはどうすればよいのでしょうか?
使用言語、環境は以下のとおりです。
・JSP
・Java
・Tomcat
・PostgreSQL

サーブレットからMTGList.jspに遷移し、その遷移したMTGList.jsp上でデータベースの情報を表示したいと考えています。
デバッグをしたところ、MeetingDaoではデータベース情報の取得はできていることが
確認できたので、jspに遷移する前でうまくセッションスコープに情報を与えられていない
or
jspでセッションスコープから情報を抜き出せていないと推測しているのですがどこを修正していいかわからない状況です。

非常に初歩的な質問だと思うんですが、お知恵をお菓子頂けると幸甚です。
よろしくお願いいたします。

サーブレット

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 javax.servlet.http.HttpSession;

import dao.MeetingDao;
import model.Meeting;

/**

  • Servlet implementation class MTGList

*/
@WebServlet("/MTGList")
public class MTGList extends HttpServlet {
private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { MeetingDao meetingDao = new MeetingDao(); List<Meeting> meetingList = meetingDao.findAll(); HttpSession session = request.getSession(); session.setAttribute("MTGList",meetingList); RequestDispatcher dispatcher = request.getRequestDispatcher("/jsp/MTG/MTGList.jsp"); dispatcher.forward(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); }

}

MTGList.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="model.Meeting"%>
<%
Meeting meeting = (Meeting)session.getAttribute("MTGList");
%>

<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>MTG List</title> </head> <body> <p> <select name="thisMonthWeek"> <option value="january">4月</option> <option value="february">5月</option> <option value="march">6月</option> <option value="april">7月</option> <option value="may">8月</option> <option value="june">9月</option> <option value="july">10月</option> <option value="august">11月</option> <option value="september">12月</option> <option value="october">1月</option> <option value="november">2月</option> <option value="december">3月</option> </select> <select name="thisWeekWeek"> <option value="week1">xxx</option> <option value="week2">xxx</option> <option value="week3">xxx</option> <option value="week4">xxx</option> </select> </p> <%=meeting.getDate()%> <%=meeting.getPlace()%> <%=meeting.getContents()%> <jsp:include page="../common_JSP/footer.jsp" /> </body> </html> ---

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

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

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

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

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

guest

回答1

0

ベストアンサー

データベースからは、List<Meeting> meetingList = meetingDao.findAll();で全レコードを取得しています。

それに対して、JSPではMeeting meeting = (Meeting)session.getAttribute("MTGList");としていて、1件のみを想定しています。
ここでClassCastExceptionが発生します。

どちらかに合わせれば、それ以外は問題ないと思います。


(追記)

以下、リストの内容を全件表示させる例です。

セッションにセットしたのと同じ型で取り出します。
あわせて、Listのインポートを追加します。

lang

1<%@ page import="java.util.List"%> 2 3<% 4 List<Meeting> meetingList = (List<Meeting>)session.getAttribute("MTGList"); 5%>

meetingListのレコードを、for文で1件ずつ表示します。

lang

1<% 2 for (Meeting meeting : meetingList) { 3 %> 4 <%=meeting.getDate()%> 5 <%=meeting.getPlace()%> 6 <%=meeting.getContents()%> 7<% 8 } 9 %>

投稿2015/10/18 12:22

編集2015/10/18 12:53
argius

総合スコア9388

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

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

rjberger19

2015/10/18 12:42

<% List<Meeting> meetingList = (List<Meeting>)session.getAttribute("MTGList"); %> JSPで上記に変更し、エラーは避けることができました。 meetingListに格納されている(はず)のdate,place,contentsはどのようなメソッドを使用すれば取得できますでしょうか・・・? ※以下ご参考 ----------------------------------------------------------- daoからは以下のとおり日付/場所/内容の3点をいかの様にして取得し、meetingListオブジェクトにaddしています。 Date date = rs.getDate("date"); String place = rs.getString("place"); String contents = rs.getString("contents"); Meeting meeting = new Meeting(date, place, contents); meetingList.add(meeting); ※meetingListは以下の様に宣言 List<Meeting> meetingList = new ArrayList<Meeting>(); そしてdaoのメソッドはmeetingListが戻り値となるのですが、その戻り値を サーブレットでListに格納しています。
argius

2015/10/18 12:54

回答欄に追記しました。
rjberger19

2015/10/18 13:52

解決いたしました!!!!ありがとうございます!!!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問