jsp如何将请求参数发送给servlet

时间:2012-06-15 12:58:07

标签: jsp

我是jsp的新手,刚刚建立了我的第一个应用程序。我正在读一本书。这本书使用了代码

<form name="addForm" action="ShoppingServlet" method="post">
    <input type="hidden" name="do_this" value="add">

    Book:
    <select name="book">                   

    <%  
        //Scriplet2: copy the booklist to the selection control
        for (int i=0; i<bookList.size(); i++) {

            out.println("<option>" + bookList.get(i) + "</option>");

         } //end of for
     %>                   
     </select>

     Quantity:<input type="text" name="qty" size="3" value="1">               
     <input type="submit" value="Add to Cart">

</form>

并且在servlet中代码是

else if(do_This.equals("add")) {

    boolean found = false;
    Book aBook = getBook(request);
    if (shopList == null) { // the shopping cart is empty

        shopList = new ArrayList<Book>();
        shopList.add(aBook);

    } else {...  }// update the #copies if the book is already there

private Book getBook(HttpServletRequest request) {

    String myBook = request.getParameter("book");   //confusion
    int n = myBook.indexOf('$');
    String title = myBook.substring(0, n);
    String price = myBook.substring(n + 1);
    String quantity = request.getParameter("qty");  //confusion
    return new Book(title, Float.parseFloat(price), Integer.parseInt(quantity));

} //end of getBook()

我的问题是当我点击添加添加到购物车按钮然后在行String myBook = request.getParameter("book");的服务中我得到书作为参数但在我的jsp中我没有说request.setAttribute("book", "book"),同样的request.getParameter("qty");。我的servlet如何接收这些请求参数而不在jsp代码中设置它? 感谢

1 个答案:

答案 0 :(得分:2)

你得到那个参数,因为在你的表格中你有这个:

<select name="book">

用户永远不会执行request.setParameter(甚至没有定义这样的方法)

您还可以通过使用查询字符串调用servlet来设置参数。类似的东西:

http://localhost:8080/ShoppingServlet?name=abcd&age=20

以上将创建两个名为abcage的请求参数,您可以使用request.getParameter

访问这些参数