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

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

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

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

Java

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

servlet

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

8553閲覧

JSPでDBのデータを表示させたい

cjapan36

総合スコア14

JSP

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

Java

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

servlet

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2019/05/27 07:57

DBからテーブルを引っ張ってきて、Javaのほうで出力させたい(全件検索)のですが、
表の中身を表示させることが出来ません。
エラー等はコンソールの方にも表示されておりません。誤字等のケアレスミスであれば非常に申し訳ないのですが、お手上げ状態なので、ご教授いただけますでしょうか。

また、書籍名の検索ボタンとジャンル名との間にスペースを入れる方法も併せて教えていただけると幸いです。cssのほうで編集はしたのですが、かわらずです。
現在の表記の仕方ではスペースが入らなかったので、間違っているということでしょうから、正しい表記の仕方をお教えいただけませんでしょうか。

該当のソースコード

servlet

1package jp.co.sss.book.dao; 2 3import java.sql.Connection; 4import java.sql.PreparedStatement; 5import java.sql.ResultSet; 6import java.sql.SQLException; 7 8import jp.co.sss.book.bean.Book; 9 10public class BookDAO { 11 public static Book findByUserIDAndPassword(String bookId) { 12 13 Connection con = null; 14 15 PreparedStatement ps = null; 16 Book book = null; 17 try { 18 con = DBManager.getConnection(); 19 ps = con.prepareStatement("SELECT * FROM book WHERE book_id = ?"); 20 ps.setString(1, bookId); 21 22 ResultSet rs = ps.executeQuery(); 23 24 while (rs.next()) { 25 book = new Book(); 26 book.setBookId(rs.getInt("book_id")); 27 book.setBookName(rs.getString("book_name")); 28 book.setAuthor(rs.getString("author")); 29 book.setPublicatoindate(rs.getDate("publicatoin_date")); 30 book.setStock(rs.getInt("stock")); 31 book.setGenreId(rs.getInt("genre_id")); 32 } 33 } catch (SQLException e) { 34 e.printStackTrace(); 35 }finally{ 36 DBManager.close(ps, con); 37 } 38 return book; 39} 40} 41

jsp

1<%@ page contentType="text/html; charset=UTF-8"%> 2<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 3<!DOCTYPE html> 4<html> 5<head> 6<meta charset="UTF-8"> 7<link href="css/style.css" rel="stylesheet" type="text/css" /> 8<title>書籍一覧</title> 9</head> 10<body> 11 <%@include file="../header.jsp"%> 12 <div id="main"></div> 13 <p>書籍一覧画面</p> 14 <span class="mgr">書籍名:<input type="text" name="BookName"><input id="sbtn5" type="submit" value="検索"></span> 15 ジャンル名:<select name="genre"> 16 <option value="1">文学</option> 17 <option value="2">経済</option> 18 <option value="3">技術</option> 19 <input type="submit" value="検索"><br/> 20 </select><br/> 21 <table border="1"> 22 <tr> 23 <th>書籍ID</th> 24 <th>書籍名</th> 25 <th>著者</th> 26 <th>発行日</th> 27 <th>在庫</th> 28 <th>ジャンル名</th> 29 </tr> 30 <c:forEach var="book" items="${book}"> 31 <tr> 32 <th>${book.bookId }</th> 33 <th>${book.bookName}</th> 34 <th>${book.author}</th> 35 <th>${book.publicatoindate }</th> 36 <th>${book.stock}</th> 37 <th>${book.genreId}</th> 38 </tr> 39 </c:forEach> 40</table> 41 <%@ include file="../footer.jsp"%> 42</body> 43</html>

beans

1package jp.co.sss.book.bean; 2 3import java.util.Date; 4 5public class Book { 6 7 private int bookId; 8 private String bookName; 9 private String author; 10 private Date publicatoindate; 11 private int stock; 12 private int genreId; 13 14 public int getBookId() { 15 return bookId; 16 } 17 public void setBookId(int bookId) { 18 this.bookId = bookId; 19 } 20 public String getBookName() { 21 return bookName; 22 } 23 public void setBookName(String bookName) { 24 this.bookName = bookName; 25 } 26 public String getAuthor() { 27 return author; 28 } 29 public void setAuthor(String author) { 30 this.author = author; 31 } 32 public Date getPublicatoindate() { 33 return publicatoindate; 34 } 35 public void setPublicatoindate(Date publicatoindate) { 36 this.publicatoindate = publicatoindate; 37 } 38 public int getStock() { 39 return stock; 40 } 41 public void setStock(int stock) { 42 this.stock = stock; 43 } 44 public int getGenreId() { 45 return genreId; 46 } 47 public void setGenreId(int genreId) { 48 this.genreId = genreId; 49 } 50 } 51

よろしくお願いします。

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

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

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

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

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

m.ts10806

2019/05/27 08:00

BookDAOおよびfindByUserIDAndPassword()はどこからも呼ばれていないように見受けられますが、 こちらを呼び出しているコントローラやサーブレットはないのでしょうか。
cjapan36

2019/05/27 08:44

失礼いたしました。 findByUserIDAndPassword()に関しては、別にBookUserDAOというのがあり、そちらをコピーして編集したという形でBookDAOを作成したので、編集漏れでそのままにしておりました。
m.ts10806

2019/05/27 08:47

いずれにしても結局のところjspに渡す(またはjspで取得する)処理がないことが原因ですね。
cjapan36

2019/05/27 12:43

ありがとうございます。 ちなみに具体的にはどういったコードを記入すれば解決するでしょうか? A-pZさんの回答にあるような形でしょうか?
m.ts10806

2019/05/27 13:56

BookDAOをnewしてfindByUserIDAndPassword()を呼び出す処理をどこかに追加。(もちろんメソッド名の正規化は必要) サーブレットに追加するならsetAttributeする必要があるし、jsp側に書くこともできないことはないけど結局同等の処理は必要。
cjapan36

2019/05/28 01:44

サーブレットにListを追加してjspの方も修正したことで無事出力させることが出来ました。 ありがとうございました。
guest

回答1

0

ベストアンサー

html

1<c:forEach var="book" items="${book}">

と、items属性に、java.util.Listなど複数要素を格納するクラスを指定していますが、DAOを見る限りでは、単一のBookを返していますので、このJSPを表示する手前のサーブレットで、

List<Book> book = new ArrayList<>(); book.add( dao.findByUserIDAndPassword(.....)); request.setAttribute("book", book);

Listなどに格納しなければ表示されません。

ちなみにdaoのメソッド名が実際の処理内容とあっていないようです。

投稿2019/05/27 08:20

A-pZ

総合スコア12011

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

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

cjapan36

2019/05/27 08:48

回答いただきありがとうございます。 Listに格納して表示させなければならなかったのですね。 上記にもありますように、findByUserIDAndPassword()はミスでした。 全件検索したいので、findAllでよろしいのでしょうか?
cjapan36

2019/05/28 01:52

メソッド名を変更し、Listを追加してjspを修正したところ無事出力完了しました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問