图书修改没有实现

图书修改没有实现

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

<%

String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()

+ request.getContextPath();

%>

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

<!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="/searchBook" method="post">

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

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

<button type="submit" class="btn btn-primary">查询</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>

<th>操作</th>


</tr>

</thead>

<tbody>

<c:forEach items="${requestScope.books}" var="book" varStatus="idx">

<!--  

                            <tr id="tr1">

                                <td>1</td>

                                <td>book0001</td>

                                <td>Java基础</td>

                                <td>计算机类</td>

                                <td>¥29</td>

                                <td><img src="img/g1.jpg"></td>

                                <td>

                                <a href="/updateBook?bookId=book0001">修改</a>

                                <a href="/deleteBook?bookId=book0001">删除</a>


                                </td>

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

                            </tr>

                          

                          -->


<tr>

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

<td>${book.bookId}</td>

<td>${book.bookName}</td>

<td>${book.bookCategory}</td>

<td>${book.bookPrice}</td>

<td><img src=${book.bookPath }></td>

<td>${book.bookRemarks}</td>


<td>

<!-- href="<%=basePath%>/ToUpdateBookServlet?bookId=${book.bookId}">修改-->

<a

href="${pageContext.request.contextPath }/ToUpdateBookServlet?bookId=${book.bookId}">修改</a> 

<a

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

</td>





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


</tr>





</c:forEach>

</tbody>

</table>

</div>

</section>


<script type="text/javascript">

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

    //单击按钮的时候触发Ajax事件

  $.ajax({

        "url":"<%=basePath%>/book_list1",

"data" : {

title : $("input[name=bookCategory]").val()

},

"type" : "post",

"dataType" : "json",

"success" : function(json) {

var content = "";

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

content = content + "<tr><td>" + json[i].bookId

+ "</td><td>" + json[i].bookName

+ "</td><td>" + json[i].bookCategory

+ "</td><td>" + json[i].bookPrice

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

+"</td><td>" +json[i].bookRemarks

+ "</td></tr>";

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

}

$("#cont").html(content);//设置cont也就是<tbody>中的内容

}

});

});

</script>














<section class="page">

<div class="container">

<div id="fatie">

<a href="${pageContext.request.contextPath}/ToAddBookServlet"><button>新建</button></a>

</div>

</div>

</section>

<footer> copy@慕课网 </footer>

</body>

</html>

+++++++++++++++++++

package com.imooc.servlet;


import java.io.IOException;

import java.util.List;


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.domain.Category;

import com.imooc.service.impl.BookServiceImpl;

import com.imooc.service.impl.CategoryServiceImpl;



@WebServlet("/ToUpdateBookServlet")

public class ToUpdateBookServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

       

   

    public ToUpdateBookServlet() {

        super();

       

    }



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

//获取页面提交的图书Id

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

//处理数据

// Book book=BookServiceImpl.getBooksById(bookId);

BookServiceImpl book=new BookServiceImpl();

book.getBooksById(bookId);

// List<Book> book1=BookServiceImpl.getBooks();

List<Category> categoryList=CategoryServiceImpl.getCategorydb();

request.setAttribute("book", book);

request.setAttribute("categoryList",categoryList);

//跳转到图书修改页面updateBook.jsp

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

}


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

doGet(request, response);

}


}

++++++++++++++++++++++++++++

package com.imooc.service.impl;


import java.util.ArrayList;

import java.util.List;


import com.imooc.domain.Book;

import com.imooc.service.BookService;


public class BookServiceImpl implements BookService {


private static final List<Book> books=new ArrayList<Book>();

@Override

public void addBook(Book book) {

books.add(book);

System.out.println("添加图书后的图书集合");

System.out.println(books);


}


@Override

public void updateBook(Book book) {

books.add(book);


}


@Override

public void deleteBook(String bookId) {

for(Book book:books) {

if(book.getBookId().equals(bookId)) {

books.remove(book);

break;

}

}

System.out.println("测试输出删除图书后的信息");

System.out.println(books);


}


@Override

public  Book getBooksById(String bookId) {

Book book=null;

for(Book b:books) {

if(b.getBookId().equals(bookId)) {

book=b;

break;

}

}

return book;

}


@Override

public List<Book> getBooksByCatgoryName(String categoryName) {

//用于存储符合条件的书的集合

List<Book> list1=new ArrayList<Book>();

//利用循环查询相同的书名

for(Book bookList:books) {

bookList.getBookCategory().equals(categoryName);

list1.add(bookList);

break;

}

return list1;

}


public static List<Book> getBooks() {

return books;

}


}

+++++++++++++++++++++++++++

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

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

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>修改图书信息</title>

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

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

</head>

<body>

<nav class="navbar navbar-default">

<div class="container">

<div class="navbar-header">

<a class="navbar-brand" href="/dept/list.do"> 图书信息管理 </a>

</div>

</div>

</nav>

<div class="container">

<div class="jumbotron">

<h1>Hello, ${existUser.username}!</h1>

<p>请小心的修改图书信息。。。</p>

</div>

<div class="page-header">

<h3>

<small>修改</small>

</h3>

</div>

<form class="form-horizontal" enctype="multipart/form-data"

action="${pageContext.request.contextPath }/UpdateBookServlet"

method="post">


<div class="form-group">

<label for="bookId" class="col-sm-2 control-label">图书编号 :</label>

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

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

readonly="readonly" value="${book.bookId}">

</div>

</div>

<div class="form-group">

<label for="bookName" class="col-sm-2 control-label">图书名称 :</label>

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

<input name="bookName" class="form-control" id="bookName">

</div>

</div>

<div class="form-group">

<label for="categoryId" class="col-sm-2 control-label">分类 :</label>

<select id="categoryId" name="categoryId"

class="col-sm-2 form-control"

style="width: auto; margin-left: 15px">

<!-- <option value="ca0001" selected="">计算机</option>

                       <option value="ca0002">文学</option>

                       <option value="ca0003">历史</option>

                                                                    下拉列表的内容要从分类中进行读取,value值是分类id -->



<c:forEach items="${requestScope.categorys}" var="category"

varStatus="idx">


<option value="${category.categoryId}" selected="">${category.categoryName}</option>



</c:forEach>





</select>

</div>


<div class="form-group">

<label for="bookPrice" class="col-sm-2 control-label">价格 :</label>

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

<input name="bookPrice" class="form-control" id="bookPrice">

</div>

</div>


<div class="form-group">

<label for="bookPic" class="col-sm-2 control-label">图书封面 :</label> <input

type="file" id="bookPic" name="bookPic" style="padding-left: 15px">

</div>


<div class="form-group">

<label for="remarks" class="col-sm-2 control-label">备注 :</label>

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

<input name="remarks" class="form-control" id="remarks">

</div>

</div>


<div class="form-group">

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

<button type="submit" class="btn btn-primary">修改</button>

&nbsp;&nbsp;&nbsp;

</div>

</div>

</form>

</div>

<footer class="text-center"> copy@imooc </footer>

</body>

</html>

+++++++++++++++++++++++++++++++++++++

package com.imooc.servlet;


import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

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 org.apache.commons.fileupload.FileItem;

import org.apache.commons.fileupload.FileUploadException;

import org.apache.commons.fileupload.disk.DiskFileItemFactory;

import org.apache.commons.fileupload.servlet.ServletFileUpload;


import com.imooc.domain.Book;

import com.imooc.service.impl.BookServiceImpl;

import com.imooc.utils.UploadUtils;


/**

 * Servlet implementation class UpdateBookServlet

 */

@WebServlet("/UpdateBookServlet")

public class UpdateBookServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

       

    /**

     * @see HttpServlet#HttpServlet()

     */

    public UpdateBookServlet() {

        super();

        // TODO Auto-generated constructor stub

    }


/**

* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

*/

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

// 接收数据

// 创建Map集合保存数据

Map<String, String> map = new HashMap<String, String>();

// 文件上传代码

// 1、创建磁盘文件项工厂

DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();


// 2、创建核心解析类

ServletFileUpload fileupload = new ServletFileUpload(diskFileItemFactory);


// 3、解析请求对象,将请求分成几个部分(FileItem)


try {

List<FileItem> list = fileupload.parseRequest(request);

// 4、遍历集合获得每个部分的对象

for (FileItem fileItem : list) {

// 判断是普通项还是文件上传项

if (fileItem.isFormField()) {

// 普通项--图书ID,图书名字、图书种类、图书备注、图书价格

// 获得普通项的名称

String name = fileItem.getFieldName();

// 获得普通项的值

String value = fileItem.getString("UTF-8");

// 保存数据

map.put(name, value);


System.out.println(name + "  " + value);

} else {

// 文件上传项

// 获得文件名称:

String fileName = fileItem.getName();

// 获得唯一文件名

String uuidFilename = UploadUtils.getUuidFileName(fileName);


// 获得文件输入流

InputStream is = fileItem.getInputStream();

// 需要将文件写入某个服务器路径即可

String path = getServletContext().getRealPath("/upload");

System.out.println(path);

// 显示图片<img src="路径">


String url = path + "\\" + uuidFilename;

map.put("path", request.getContextPath() + "/upload/" + uuidFilename);


// 创建输入流与输出流对接

OutputStream os = new FileOutputStream(url);

int len = 0;

byte[] b = new byte[1024];

while ((len = is.read(b)) != -1) {

os.write(b, 0, len);

}

is.close();

os.close();


}


}


} catch (FileUploadException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

// 封装数据

Book book=new Book();

book.setBookId(map.get("bookId"));

book.setBookName(map.get("bookName"));

book.setBookCategory(map.get("categoryId"));

book.setBookPrice(Double.parseDouble(map.get("bookPrice")));

book.setBookPath(map.get("path"));

book.setBookRemarks(map.get("remarks"));

System.out.println(book);

// 处理数据

BookServiceImpl bookList=new BookServiceImpl();

bookList.updateBook(book);

// 获取集合bookList

request.setAttribute("books",bookList.getBooks() );

System.out.println(bookList.getBooks());


// 显示数据处理结果,跳转至bookList.jsp


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

}


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

doGet(request, response);

}


}

++++++++++++++++++++++++++

package com.imooc.domain;


public class Book {


// 图书ID

private String bookId;

// 图书名字

private String bookName;

// 图书分类

private String bookCategory;

// 图书价格

private double bookPrice;

// 图书封面上传路径

private String bookPath;

// 图书备注

private String bookRemarks;


// 无参构造方法

public Book() {

super();

}


// 带参构造方法

public Book(String bookId, String bookName, String bookCategory, double bookPrice, String bookPath,

String bookRemarks) {

super();

this.bookId = bookId;

this.bookName = bookName;

this.bookCategory = bookCategory;

this.bookPrice = bookPrice;

this.bookPath = bookPath;

this.bookRemarks = bookRemarks;

}



public String getBookId() {

return bookId;

}


public void setBookId(String bookId) {

this.bookId = bookId;

}


public String getBookName() {

return bookName;

}


public void setBookName(String bookName) {

this.bookName = bookName;

}


public String getBookCategory() {

return bookCategory;

}


public void setBookCategory(String bookCategory) {

this.bookCategory = bookCategory;

}


public double getBookPrice() {

return bookPrice;

}


public void setBookPrice(double bookPrice) {

this.bookPrice = bookPrice;

}


public String getBookPath() {

return bookPath;

}


public void setBookPath(String bookPath) {

this.bookPath = bookPath;

}


public String getBookRemarks() {

return bookRemarks;

}


public void setBookRemarks(String bookRemarks) {

this.bookRemarks = bookRemarks;

}


@Override

public String toString() {

return "Book [bookId=" + bookId + ", bookName=" + bookName + ", bookCategory=" + bookCategory + ", bookPrice="

+ bookPrice + ", bookPath=" + bookPath + ", bookRemarks=" + bookRemarks + "]";

}

}


正在回答 回答被采纳积分+1

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

1回答
好帮手慕阿满 2020-08-02 16:59:08

同学你好,测试同学的代码,报el表达式错误,如:

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

在ToUpdateBookServlet中,应该是将查询出现的book类对象存放到request中,转发到页面显示,并不是将BookServiceImpl对象存入。如:

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

另外在ToUpdateBookServlet类中,存入request中的分类信息是categoryList,在jsp页面中获取分类信息时,需要使用categoryList,而不是categorys。

点击修改后,添加图书信息,在BookServiceImpl类中,updateBook方法调用添加的方法,如:

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

这里应该是判断传入的id和books中的id是否相同,如果相同,删除原来的,添加新增的。

祝:学习愉快~

问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

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