私はサーバー側のプログラミングが初めてです。オンライン書籍販売管理システムに関する最終年度のプロジェクトがあります。購入のためにクリックされた本の画像ごとに動的ページを生成する方法を知りたいです。ユーザーが本 X を要求した場合、そのすべての詳細、画像などの情報を表示するページをどのように生成できるのでしょうか。どのような URL を使用すればよいですか?
2 に答える
小規模なプロジェクトだと思います。
まず、あなたの本のデータベースを維持します。それぞれに一意のIDを与えます。公開されている、価格、本の名前、著者、レビュー、評価などの一般的な詳細をすべて表示している場合は、心配する必要はありません。共通のJSPページを作成して、に基づいてインドを表示します。 uniqueId .. ..
jsp言います:books.jsp
<form name="books" action="getInfo.jsp">
<a href="YourJSP/?bookid=pass_an_id_for_your_bookX">Book X(Image)</a> //Book X
<a href="YourJSP/?bookid=pass_an_id_for_your_bookY">Book Y(Image)</a> //Book Y
<a href="YourJSP/?bookid=pass_an_id_for_your_bookZ">Book Z(Image)</a> //Book Z
....
.... an on..
</form>
?bookidはあなたのパラミッドになります。
pass_an_id_for_your_bookXは、データベースに保存されているbookXの一意のIDになります。
2番目のJSP内で言う:getInfo.jsp
プレゼンテーション用にJSPを設計し、BookX / BookYに関する情報をbookIdに表示します。JSPでbookIdの値を取得し、DBにクエリを実行します。
String bookId = request.getParameter("bookid"):
//This will get the value of your bookId for BookX
//Connect to your DB
//Use PreparedStatement or StoredProcedure to make a query pass your bookId in where condition.
残りは簡単です。データベースにクエリを実行することで、通常のすべての値を取得できます。公開、価格、本の名前、著者、レビュー、評価...そしてそれに応じてJSPページに表示します。
<%
Connection con = null;
PreparedStatement pst = null;
ResultSet rs = null;
String BookName=null;
String AuthorName=null;
String Price=null;
String Rating=null;
try {
Class.forName(driver);
con = DriverManager.getConnection(connection);
String sql =
"select * from BOOKS_TABLE where bookId =?";
pst = con.prepareStatement(sql);
pst.setString(1, bookId);
rs = pst.executeQuery();
while (rs.next()) {
BookName = rs.getString(1);
AuthorName = rs.getString(2);
Price = rs.getString(3);
Rating = rs.getString(4);
}
// 1 , 2, 3... denotes column numbers
} catch (SQLException e) {
System.out.println(e.getMessage());
}
}
}
%>
これで、すべての値が取得されました。それに応じて表示してください。
<%=BookName%>
<%=AuthorName%>
<%=Price%>
<%=Rating%>
注: JSPページではScriplets(Javaコード)は推奨されていません。BeanまたはJSTLにチェックインすることをお勧めします。私はあなたにアイデアを与えているだけです!
ではごきげんよう
書籍の一意の識別子をリクエストパラメータまたはリクエストパス情報として渡し、その識別子に基づいてメソッドでデータルックアップを実行するサーブレットdoGet()
を用意し、リクエストスコープに保存して、必要なすべてのHTMLを生成するJSPファイルに転送するだけです。 。
/book?id=123
たとえば、このサーブレットのリクエストパラメータとして
@WebServlet("/book")
public class BookServlet extends HttpServlet {
@EJB
private BookService service;
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Book book = service.find(request.getParameter("id"));
request.setAttribute("book", book);
request.getRequestDispatcher("/WEB-INF/book.jsp").forward(request, response);
}
}
/book/123
または、このサーブレットを使用したリクエストパス情報として
@WebServlet("/book/*")
public class BookServlet extends HttpServlet {
@EJB
private BookService service;
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Book book = service.find(request.getPathInfo().substring(1));
request.setAttribute("book", book);
request.getRequestDispatcher("/WEB-INF/book.jsp").forward(request, response);
}
}
いずれにせよ、/WEB-INF/book.jsp
は通常の方法のように見える可能性があります。
<p>Title: <c:out value="${book.title}" /></p>
<p>Author: <c:out value="${book.author}" /></p>
<p>Summary: <c:out value="${book.summary}" /></p>
サーブレットへのこれらのリンクを生成するには、次のようなURLが必要であると想定して、次のようにループList<Book>
し/WEB-INF/books.jsp
ます/book/123
。
<ul>
<c:forEach items="${books}" var="book">
<li>
<a href="${pageContext.request.contextPath}/book/${book.id}">
View book with title: <c:out value="${book.title}" />
</a>
</li>
</c:forEach>
</ul>