0

指定されたフィールドにデータを入力するデータベースに接続する Web アプリに取り組んでいます。これは基本的にnetbeans チュートリアルの編集です。さて、私はすでにデータベースをセットアップし、応答ページのテーブルにすべての情報を入力してテストしました。リストから表示するタイトルの 1 つを選択すると、index.jsp で問題が発生します。ID 番号の代わりにタイトルを使用して書籍を選択しました。

SELECT titlefk FROM BookList

それ以外の:

SELECT id, titlefk FROM BookList

ドロップダウン ボックスには ID とタイトルの両方が選択肢として表示されるためです。本のタイトルを選択して送信キーをクリックすると、次のページにデータベースからの対応する情報が入力されます。

サイトの写真: http://imgur.com/a/kVEMN

上記の表は、データベースが接続されていることを確認するための一時的な手段です。データベースで 3 番目のオプションを選択しましたが、response.jsp には最初の本の情報が取り込まれ続けています。コードに何が欠けているのかわかりませんが、誰かが私を正しい方向に向けてくれることを願っています.

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql"%>

<sql:query var="books" dataSource="jdbc/IFPBOOKLISTRT">
SELECT titlefk FROM BookList
</sql:query>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
        <title>IFPBOOKLIST Homepage</title>
    <link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
        <h1>Welcome to IFPBOOKLIST, My Personal Book Selection</h1>

    <table border="0">
        <thead>
            <tr>
                <th>Here you will find my personal books to-do list</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>To view details, select a book below</td>
            </tr>
            <tr>
                <td><form action="response.jsp">
                        <strong>Select a book:</strong>
                        <select name="subject_id">
                            <c:forEach var="row" items="${books.rowsByIndex}">
                                <c:forEach var="column" items="${row}">
                                <option value="<c:out value="${column}"/>"><c:out value="${column}"/></option>
                                </c:forEach>
                            </c:forEach>
                        </select>
                        <input type="submit" value="submit" name="submit" />
                    </form>
                </td>
            </tr>
        </tbody>
    </table>


</body>

そして、これがresponse.jspです

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql"%>

<sql:query var="bookQuery" dataSource="jdbc/IFPBOOKLISTRT">
    SELECT * FROM BookList,Book
    WHERE Book.id=BookList.id

</sql:query>

<c:set var="bookDetails" value="${bookQuery.rows[0]}"/>

<table border="1">
    <!-- column headers -->
    <tr>
        <c:forEach var="columnName" items="${bookQuery.columnNames}">
        <th><c:out value="${columnName}"/></th>
    </c:forEach>
</tr>
<!-- column data -->
<c:forEach var="row" items="${bookQuery.rowsByIndex}">
    <tr>
    <c:forEach var="column" items="${row}">
        <td><c:out value="${column}"/></td>
    </c:forEach>
    </tr>
</c:forEach>
</table>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
        <title>${bookDetails.title}</title>
    </head>
    <body>
       <table border="0">
    <thead>
        <tr>
        <th colspan="2">${bookDetails.title}</th>
        </tr>
        <tr>
            <td>Edition: <a href="placeholder">${bookDetails.edition}</a></td>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>
                <strong>Description: </strong>
            </td>
            <td>
                {placeholder}
            </td>
            <link rel="stylesheet" type="text/css" href="style.css">
        </tr>
        <tr>
            <td>
                <strong>Publisher </strong>
            </td>
            <td>
                ${bookDetails.publisher}
            </td>
        </tr>
        <tr>
            <td>
                <strong>
                    Published Date
                </strong>
            </td>
            <td>
                ${bookDetails.datePublished}
            </td>
        </tr>
        <tr>
            <td>
                <strong>Author </strong>
            </td>
            <td>
                ${bookDetails.author}
            </td>
        </tr>
         <tr>
            <td>
                <strong>isbnNumber </strong>
            </td>
            <td>
                <a href="placeholder">${bookDetails.isbnNumber}</a>
                <br>
            </td>
         </tr>
         <tr>
             <td>
                 <strong>Amazon Link: </strong></td>
             <td>
                 <a href="placeholder">${bookDetails.amazonLink}</a>
                <br>
             </td>
         </tr>
    </tbody>
   </table>
</body>

4

1 に答える 1

0

欠けているものは非常に単純です。これを簡単に形にできるはずです。

  • index.jsp ファイルの役割は、ユーザーにオプションのリストを提示し、ユーザーがいずれかを選択できるようにしてから、選択したオプションを response.jsp に渡すことです。
  • response.jsp の役割は、選択されたオプションを取得し、それに関する詳細を表示することです。

選択したオプションを読んでいるわけではありません。response.jsp のクエリが実際にすべての本を取得し、データベースから返された最初の本を選択していることを確認してください (例: rows[0] ):

<sql:query var="bookQuery" dataSource="jdbc/IFPBOOKLISTRT">
    SELECT * FROM BookList,Book
    WHERE Book.id=BookList.id
</sql:query>

<c:set var="bookDetails" value="${bookQuery.rows[0]}"/>

response.jsp で行う必要があるのは次のとおりです。

1) index.jsp によって渡された subject_id パラメータを読み取ります。

2) subject_id を使用して (SQL WHERE 句を介して) bookQuery をフィルタリングし、選択された本のみが返されるようにします。

チュートリアルに戻って、最後の近くで、response.jsp の下の項目 3 をよく見ると、彼らがどのようにそれを行っているかがわかります。

<sql:query var="counselorQuery" dataSource="jdbc/IFPWAFCAD">
    SELECT * FROM Subject, Counselor
    WHERE Counselor.counselor_id = Subject.counselor_idfk
    AND Subject.subject_id = ? <sql:param value="${param.subject_id}"/>
</sql:query>

お役に立てれば!

于 2013-08-10T14:10:52.540 に答える