jsp页面里的list确定为有值 报错: 没有为参数号1设置值











  <c:forEach var="as" items="${list}">
 <tr>

  <td><a href="ShowById?id=${as.id}" >${as.id}</a></td>
  <td>${as.name} </td>
  <td>${as.author}</td>
  <td>${as.publish}</td>
  <td>${as.pdate}</td>
  <td>${as.isbn}</td>
  <td>${as.page}</td>       

 </tr>
</c:forEach>  
 <tr>
    <td colspan="7" align="center"><input type="submit" value="提交"/></td>
 </tr>
</table>


<!-- 下面是ShowById的代码 这是一个servlet-->
@Override
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
int Id = Integer.parseInt( request.getParameter("id")) ;
Shop sp = new ShopDaoImpl().ShowAllById(Id);
System.out.println(Id);
request.setAttribute("sp",sp);
request.getRequestDispatcher("dds.jsp").forward(request, response);
}

图书编号图书名称图书作者图书出版社图书出版日期图书页数图书价格

你没设置ID sql语句还是问号呢

System.out.println(Id);
放在dao方法之前 看看打印出来啥
如果没问题 检查dao层方法

impl里面的方法

@Override
public Shop ShowAllById(int id) {
String sql = "select * from shop where Id=?";
rs=executeQuery(sql);
Shop sp=null;
try {

        sp = new Shop( rs.getString("Name"), rs.getString("Author"), rs.getString("Publish"), rs.getString("Pdate"), rs.getString("Isbn"),rs.getInt("Page"), rs.getDouble("Price"));
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }


    return sp;
}