Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在jsp中链接到动态生成的页面_Jsp - Fatal编程技术网

如何在jsp中链接到动态生成的页面

如何在jsp中链接到动态生成的页面,jsp,Jsp,我不熟悉服务器端编程。我有一个关于在线图书销售管理系统的最后一年项目。我想知道如何为每个点击购买的图书图像生成一个动态页面。我的意思是说,如果用户要求任何一本书X,怎么可能生成一个显示其所有细节、图像等信息的页面。我应该使用哪种url?只需将书籍的唯一标识符作为请求参数或请求路径信息传递,并使用一个基于标识符在doGet()方法中执行数据查找,将其存储在请求范围中,然后转发到一个JSP文件,该文件将生成所有必要的HTML 例如,使用此servlet作为请求参数/book?id=123 @WebS

我不熟悉服务器端编程。我有一个关于在线图书销售管理系统的最后一年项目。我想知道如何为每个点击购买的图书图像生成一个动态页面。我的意思是说,如果用户要求任何一本书X,怎么可能生成一个显示其所有细节、图像等信息的页面。我应该使用哪种url?

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

例如,使用此servlet作为请求参数
/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);
    }

}
@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);
    }

}
或者使用此servlet作为请求路径信息
/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.getParameter("id"));
        request.setAttribute("book", book);
        request.getRequestDispatcher("/WEB-INF/book.jsp").forward(request, response);
    }

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

我假设这是一个小规模的项目。
首先为你的书维护一个数据库。。给他们每人一个唯一的id。 如果要显示所有常见的详细信息,如。。。出版日期、价格、书名、作者、评论、评级。。。。那你就不用担心了。。创建一个公共JSP页面以基于唯一ID显示indo

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>
Rest很简单,通过查询数据库,您将获得所有常用值,例如:出版日期、价格、书名、作者、评论、评级。。。并在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。我只是给你一个主意


最好的

你能提供模式的详细信息吗?这是一个在线图书销售管理系统,人们可以在这里在线购买图书。我想知道如何从数据库中获取图书信息,并在任何用户单击任何图书图像或链接时将其显示在另一个页面中。我的意思是说,我如何链接这两个页面,因为我不知道在以前的书,用户将点击。我的问题是如何知道哪本书被点击了,然后将用户带到该书的详细信息页面。谢谢您的帮助。我不明白->代码。这到底是什么?这只是一个循环。这就像普通Java代码中的(Book:books){}一样。点击我答案中的“servlet”链接查看更多示例。这段代码暴露了许多错误做法,最糟糕的是DB资源泄漏。嘿,Balus,我知道我给了他“注意事项”。这孩子正在做最后一年的项目。。。现在我不能期望他成为专业JSTL、HQL或SpringMVC,对吗?所以,我只是给了他这个想法,并用一张纸条警告他。哦糟糕的是,我忘了关闭我的RS和DB连接:D很匆忙。祝您今天过得愉快!