老师,我的查询好像用不了,是哪里出错了呢?

老师,我的查询好像用不了,是哪里出错了呢?

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>


<!DOCTYPE html>

<html>

    <head>

        <meta charset="UTF-8">

        <title>图书后台管理</title>

        <link rel="stylesheet" href="css/index.css">

        <link rel="stylesheet" href="css/bootstrap.min.css">

      

    </head>


    <body>

       <header>

            <div class="container">

                    <nav>

                            <a href="bookList.jsp" >图书信息管理</a>

                    </nav>

                    <nav>

                            <a href="categoryList.jsp" >分类管理</a>

                    </nav>

                   

            </div>

        </header>

        <section class="banner">

            <div class="container">

                <div>

                    <h1>图书管理系统</h1>

                    <p>图书信息管理</p>

                </div>

            </div>

        </section>

        <section class="main">



            <div class="container">

                <form class="form-horizontal" action="${pageContext.request.contextPath }/AddBookServlet" method="post">

                <div class="form-group"  style="float: right;">

                    <div class="col-sm-offset-2 col-sm-10">

                        <button type="button" class="btn btn-primary" id="search">查询</button>&nbsp;&nbsp;&nbsp;

                    </div>

                </div>

                <div class="form-group" style="float: right;width: 300px;">

                    <div class="col-sm-8">

                        <input name="searchContent" class="form-control" id="searchContent"

                        placeholder="输入要查询的分类" style="width: 250px">

                    </div>

                </div>


                

            </form>

            </div>

            <div class="container">


                <table class="table table-striped">

                    <thead>

                    <tr>

                        <th>序号</th>

                        <th>图书编号</th>

                        <th>图书名称</th>

                        <th>分类</th>

                        <th>价格</th>

                        <th>图书封面</th>

                        <th>操作</th>


                    </tr>

                    </thead>

                    <tbody id="cont">

                       <c:forEach items="${bookList }" var="b" varStatus="bookStatus">

                                         <tr id="tr1">

                                         <td>${bookStatus.index +1 }</td>

                                         <td>${b.bid }</td>

                                         <td>${b.bname }</td>

                                         <td>${b.bcategory }</td>

                                         <td>¥${b.price }</td>

                                <td><img src="${b.fengmian }"></td>

                                <td>

                                <a href="${pageContext.request.contextPath }/SerchBookServlet?bookId=${b.bid}">修改</a>

                                <a href="${pageContext.request.contextPath }/DeleteBookServlet?bookId=${b.bid}">删除</a>


                                </td>

                                <!--在循环显示数据时,此处的book0001可以用EL表达式进行替换-->


                            </tr>

                        </c:forEach>

                    </tbody>

                </table>

            </div>

        </section>

        <section class="page">

            <div class="container">

                <div id="fatie">

                    <a href="addBook.jsp"><button>新建</button></a>

                </div>

            </div>

        </section>

        <footer>

            copy@慕课网

        </footer>

    </body>

    <script type="text/javascript" src="js/jquery-3.3.1.js" ></script>

    <script type="text/javascript">

       $("#search").click(function(){

       $.ajax({

       "url":"${pageContext.request.contextPath}/SerchBookServlet",

       "type":"post",

       "data":{'id':$("#searchContent").val()},

       "dataType":"json",

       "success":function(json){

       var content="";

       for(var i=0;i<json.length;i++){

       content=content+ "<tr><td>"

+ (i + 1)

+ "</td><td>"

+ json[i].bid

+ "</td><td>"

+ json[i].bname

+ "</td><td>"

+ json[i].bcategory

+ "</td><td>"

+ json[i].price

+"<td><img src='"+json[i].fengmian+"'></td>"

+ "</td><td> <a href='${pageContext.request.contextPath}/SerchBookServlet?bookId="

+ json[i].bid

+ "'>修改</a><a href='${pageContext.request.contextPath}/DeleteBookServlet?bookId="

+ json[i].bid + "'>删除</a></td></tr>";

$("#cont>tr").remove();

           }

         $("#cont").html(content);    

       }

       

       });

    });

    </script>

</html>

http://img1.sycdn.imooc.com//climg/5ed46aa209bda49804130826.jpg

package com.imooc.web.servlet;


import java.io.IOException;

import java.util.HashMap;

import java.util.List;

import java.util.Map;


import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;


import com.imooc.domain.Book;

import com.imooc.impl.BookServiceImpl;

import com.imooc.service.BookService;



@WebServlet("/SerchBookServlet")

public class SerchBookServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

//接收数据

String bookid=request.getParameter("bookId");

//封装数据

BookService bookservice=new BookServiceImpl();

//处理数据

Book book=bookservice.getBooksById(bookid);

request.setAttribute("book", book);

request.getRequestDispatcher("/updateBook.jsp").forward(request, response);

}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

doGet(request, response);

}


}


正在回答

登陆购买课程后可参与讨论,去登陆

7回答

同学你好,同学的SerchBookServlet类是否最终转发到了jsp页面呢?

同学的bookList.jsp文件中点击查询按钮,会发送ajax请求,在success中,会使用for循环遍历返回的json数据。所以SerchBookServlet类返回的json数据应该是一个集合。SerchBookServlet类不需要转发到jsp页面。

同学可以检查一下代码。参考代码如下:

http://img1.sycdn.imooc.com//climg/5ed5bf9609d17dc009820334.jpg

如果SerchBookServlet类转发到了一个jsp页面,应该检查一下要转发的jsp文件中是否有bId,如果有,应该将其改为bid。

祝学习愉快~

好帮手慕阿慧 2020-06-02 09:51:18

同学你好,

报错信息说在Book类中找不到bId属性,根据同学所有图书的输出信息可知,属性为bid,i小写。

同学可以检查一下jsp文件中获得Book对象的属性bid是否大小写写错了,不应该是bId。

如果问题没有解决,请同学贴一下SerchBookServlet类的最新代码和Book类的代码。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 阿硕A #1
    Book类和SerchBookServlet类我已经贴出来了啊。。。。。。而且老师说的jsp文件是哪个呢?我检查了属性没有写错啊。。。。。。。
    2020-06-02 09:56:37
提问者 阿硕A 2020-06-01 19:47:30

http://img1.sycdn.imooc.com//climg/5ed4eac00901fcec14180178.jpg

有信息,但会报错误,这是为什么呢?

好帮手慕阿慧 2020-06-01 19:09:37

同学你好,同学bookList.jsp文件的ajax中,$("#cont").html(content);是设置cont的内容。

点击查询会把信息删除,可能是没有查询到指定图书id,这时cont的内容就是空,并没有删除图书信息。

同学可以在程序中添加输出语句,如下:

http://img1.sycdn.imooc.com//climg/5ed4e15309123c1705380079.jpg

查看一下控制台输出的信息。建议同学可以先添加图书,再查询。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

好帮手慕阿慧 2020-06-01 18:11:43

同学你好, 检查一下BookServiceImpl类中的getBooksById方法中是否删除了数据。getBooksById方法是根据图书ID来查询书籍信息,不需要删除数据。

如果问题没有解决,请同学提供一下BookServiceImpl类的代码。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 阿硕A #1
    //根据图书ID来查询书籍信息 @Override public Book getBooksById(String bookID) { for(Book book:books) { if(book.getBid().equals(bookID)) { return book; } } return null; } //根据分类来查询书籍信息 @Override public List<Book> getBooksByCatgoryName(String catgoryName) { List<Book> bookList=new ArrayList<Book>(); for(Book book:books) { if(book.getBcategory().equals(catgoryName)) { bookList.add(book); } } return bookList; } 没有删除操作
    2020-06-01 18:39:25
提问者 阿硕A 2020-06-01 15:03:32
好帮手慕阿慧 2020-06-01 14:49:02

同学你好,

1、bookList.jsp中,AJAX请求参数名应该是bookId。

参考代码如下:

http://img1.sycdn.imooc.com//climg/5ed4a47e09e46cdf05260110.jpg

2、SerchBookServlet的doGet方法不应该返回jsp页面,应该输出json串。建议同学在使用response之前添加代码response.setCharacterEncoding("utf-8");避免中文乱码。

参考代码如下:

http://img1.sycdn.imooc.com//climg/5ed4a54109bb8c7a09540290.jpg

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 阿硕A #1
    按照要求改了,然后点击查询会把信息删除,
    2020-06-01 15:03:19
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师