2

我是服务器端编程的新手。我有一个关于在线图书销售管理系统的最后一年项目。我想知道如何为每个点击购买的图书图片生成一个动态页面。我的意思是说,如果用户请求任何书 X,如何生成一个显示其所有详细信息、图像等信息的页面。我应该使用什么样的网址?

4

2 回答 2

3

只需将书籍的唯一标识符作为请求参数或请求路径信息传递,并有一个servlet来根据标识符在方法中执行数据查找doGet(),将其存储在请求范围内并转发到生成所有必要 HTML 的 JSP 文件.

例如作为/book?id=123这个 servlet的请求参数

@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这个 servlet的请求路径信息

@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>

为了生成这些指向 servlet 的链接,只需按如下方式循环 a List<Book>in /WEB-INF/books.jsp,假设您想要以下 URL /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>
于 2013-01-11T16:19:40.577 回答
3

我假设这是一个小规模的项目。
首先为您的书籍维护一个数据库......给每个人一个唯一的ID。如果您要显示所有常见的详细信息,例如...出版日期、价格、书名、作者、评论、评级...那么您不必担心...创建一个通用 JSP 页面来显示基于一个独特的ID...

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 将是你的 paramid。
pass_an_id_for_your_bookX 将是您存储在数据库中的 bookX 的唯一 ID。

在你的第二个 JSP 里面说:getInfo.jsp

设计您的 JSP 以进行演示,以将有关 BookX / BookY 的信息显示到 bookId 在您的 JSP 中获取 bookId 的值并查询数据库...

        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 代码)。您可能需要检查 Beans 或 JSTL。我只是给你一个想法!

一切顺利

于 2013-01-11T16:47:17.900 回答