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