大家来看我的这个jsp 有什么问题,为什么我的Servlet  段中无法接收其页面参数。
<%@ page contentType="text/html;charset=GBK"%>
<%@ page import="java.util.*"%>
<%@ page import="lch.lib.vo.book.Book" %>
<html>
<head>
<link href="images/div.css" type="text/css" rel=stylesheet>
<link href="images/globalstyle.css" type="text/css" rel=stylesheet>
<script language="JavaScript">
function confirmOrder(){
  if(confirm("确定要预约此书吗?")){
  submit();
  }
}
</script>
</head>
<body>
<div>
<%
    List<Book> v =(List<Book>)request.getAttribute("books");
    String url = "query_book_result.jsp"; //换页使用
    String stuNO = (String)session.getAttribute("stuNO"); //得到登陆的学生学号
    if(v!=null&&v.size()!=0){
%>
<table border="0"  width="90%" cellspacing="1" align="center">
<th bgcolor="#D1D1E6">编号</th>
<th bgcolor="#D1D1E6">名称</th>
<th bgcolor="#D1D1E6">作者</th>
<th bgcolor="#D1D1E6">出版社</th>
<th bgcolor="#D1D1E6">ISBN号</th>
<th bgcolor="#D1D1E6">入馆时间</th>
<th bgcolor="#D1D1E6">价格</th>
<th bgcolor="#D1D1E6">状态</th>

<% 
if(stuNO!=null){
%>
<th bgcolor="D1D1E6">预约</th>
<%
}
%>

<%
Iterator<Book> book= v.iterator();
while(book.hasNext()){
%>
<% Book b=book.next(); %>
<tr bgcolor="#F0F7FF" >
<td><%= b.getBookNo() %></td>
<td><%= b.getBookName() %></td>
<td><%= b.getAuthor() %></td>
<td><%= b.getPublish()%></td>
<td><%= b.getBookIsbn() %></td>
<td><%= b.getBuytime() %></td>
<td><%= b.getBookPrice() %></td>
<%
int condition = Integer.parseInt(b.getBookStatus());
switch(condition){
case 0:
%>
<td>在馆</td>
<%
break;
case 1:
%>
<td>借出</td>
<%
break;
case 2:
%>
<td>丢失</td>
<%
break;
case 3:
%>
<td>被预约</td>
<%   
}
%>
<% 
if(stuNO!=null){
if(condition==0){
%>
<form name="yyts" action="StuServlet" method="post" >
<input type="hidden" name="action" value="order"/>
<input type="hidden" name="bookNO" value="<%=b.getBookNo()%>"/>
<td align="center">

<img src="images/yya.gif" id="yy1" onclick="confirmOrder()" 
onmouseover="document.all.yy1.src='images/yyb.gif'"
  onmouseout="document.all.yy1.src='images/yya.gif'"
   onmousedown="document.all.yy1.src='images/yyc.gif'"
    style="cursor:hand"/>
</td>
</form>
<%
}
}
else{
%>
<td align="center">--</td>
<%
}

%>
</tr>
<%
    }
%>
</table>

<%
 }
 else{
%>
   <font color="red" size="3">
    <center>没有查找到相关书籍。</center>    
   </font> 
<%
 }
%>
</div>
</body>
</html>我想要在servlet 段接收 form name="yyts" action="StuServlet" method="post" >
<input type="hidden" name="action" value="order"/>
<input type="hidden" name="bookNO" value="<%=b.getBookNo()%>"/>
<td align="center">里面的参数,但是总是接收不了,
 String action = req.getParameter("action"); if(action.equals("order")){
String bNO = req.getParameter("bookNO");
System.out.println(bNO);}servlet 中的如上代码,却怎么都无法取得 参数。请高手帮个忙,自己弄好久了。
PS:我是菜鸟, 代码写的很烂,我知道。麻烦各位了!!

解决方案 »

  1.   

    1-首先看看你的jsp编译后的代码(在你的jsp页面右键-查看源文件)
    2-你的servlet是不是你的jsp请求路径。随便输出点东西,至少保证这个servlet能够进入,然后再一点点调试,你这写一大堆怎么看呢
      

  2.   

    在servlet的doPost()方法中用request.getParameter("bookNO");接收还有你的表单没有submit没提交
      

  3.   

    我的servlet doPost() 方法了中有了,submit也有,在代码最前面啊。
    我的servlet 对其他的jsp传过来的参数都可以接收,就是这个的不行,是不是前面的javascri 中的有代码的问题?
      

  4.   

    用firebug检查一下请求是否发出?post data是否有值?发送的请求是否提交到了后台
      

  5.   

    <script language="JavaScript">
                function confirmOrder(){
                     if(confirm("确定要预约此书吗?")){
                         submit();
                     }
                }
            </script>
    应该是这里有问题submit();可以吗?好像是不行的
      

  6.   

    在js里面也要打印一下 bookNO 的值,用document.getELemenById("bookNO")如果可以获取在servlet里面添加这个代码,先不要做任何判断:
    System.out.println(req.getParameter("bookNO"))
      

  7.   

    已经出现弹窗提示了,我真是不知道有什么问题了。……搞了好久了。其实我javascript 只懂得一点点
      

  8.   

    是不是要明确指明要提交的表单document.yyts.submit()
      

  9.   

    我看你form的代码应该是在循环体内,不知道是不是?如果是这样的话,不推荐这样用。页面多个表单的话提交的时候会比较麻烦,你可以把数据凭借到URL上然后提交,或者整个table都放在一个表单内,通过某些逻辑方式来确定一些提交的数据,这样会比较好一些
      

  10.   

    if(stuNO!=null){                    
                                if(condition==0){
    没仔细看,如果什么方法都不行的话,看看这个条件是否不成立
      

  11.   

    楼主先在 方法 confirmOrder() 里alert一下看看有没有执行, 然后在servlet里随便打印一句话看看有没有正确执行servlet  如果不好使的话 就把图片改成submit按钮看看 吧 我一直觉的没有提交表单,因为只有submit按钮是自动提交表单的 连button都不是自动提交表单的,更何况图片呢 改改应该能好使  
      

  12.   


    这个方法我用过了,没有用,不过,之后我发现问题的所在的。应该是<img src="images/yya.gif" id="yy1" onclick="confirmOrder()" 
                                        onmouseover="document.all.yy1.src='images/yyb.gif'"
                                         onmouseout="document.all.yy1.src='images/yya.gif'"
                                          onmousedown="document.all.yy1.src='images/yyc.gif'"
                                           style="cursor:hand"/>
    出的问题,我要生成多个提交按钮的,但是用的Id名 是一样的,所以就无法使用了,应该是这样的问题,后来用一个自增,使各自的Id 都独立,会可以了。
      

  13.   

    alert 执行了,我之前就检查过。我自己后来找到问题所在了,已经成功解决感谢你的回答。