老师,这几步怎么完成呢?

老师,这几步怎么完成呢?

  2、在servlet中通过图书id获取图书信息并存入request中,转发到修改图书的页面。

3、然后在jsp页面使用el表达是来显示图书信息,并修改图书信息。

4、最后点击修改按钮跳转至修改servlet中进行修改,修改成功后可跳转到展示图书页面。

  同上注意价格的验证,添加对应的正则表达式。


正在回答

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

2回答

同学你好,同学可以先从bookList.jsp文件中跳转到UpdateBookGetBookIdServlet中,将数据存入request中,并转发到修改图书的页面(updateBook.jsp)中,最后跳转到UpdateBookServlet中,进行修改。参考代码如下所示:

UpdateBookGetBookIdServlet

import java.io.IOException;
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.cclass.Book;
import com.imooc.service.impl.BookServiceImpl;

/**
 * Servlet implementation class UpdateBookGetBookIdServlet
 */
@WebServlet("/updateBookGetBookId")
public class UpdateBookGetBookIdServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public UpdateBookGetBookIdServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String bookId = request.getParameter("bookId");
		BookServiceImpl bsi = new BookServiceImpl();
		Book book = bsi.getBooksById(bookId);
		request.setAttribute("book", book);
		request.getRequestDispatcher("/updateBook.jsp").forward(request, response);
	}

}

updateBook.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="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 id="formUpdate" class="form-horizontal" action="${pageContext.request.contextPath}/updateBook" method="post" enctype="multipart/form-data">

                <div class="form-group">
                    <label for="name" 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="name" class="col-sm-2 control-label">图书名称 :</label>
                    <div class="col-sm-8">
                        <input name="bookName" class="form-control" id="bookName" value="${book.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"  value="${book.bookCate}" style="width: auto;margin-left: 15px">
                       <c:forEach items="${categoryList }" var="c" varStatus="idx">
                      	<option value="${c.cateId }" selected="">${c.cateName }</option>
                     	  <!-- 下拉列表的内容要从分类中进行读取,value值是分类id -->
                       </c:forEach>
                    </select>
                </div>

                 <div class="form-group">
                    <label for="name" class="col-sm-2 control-label">价格 :</label>
                    <div class="col-sm-8">
                        <input name="bookPrice" class="form-control" id="bookPrice" value="${book.price}">
                    </div>
                  </div>
                   
                  <div class="form-group" >
                    <label for="name" class="col-sm-2 control-label">图书封面 :</label>
                    <input type="file" id="bookPic" name="bookPic" value="${book.bookCover}" style="padding-left: 15px">
                  </div>

                  <div class="form-group">
                    <label for="name" class="col-sm-2 control-label">备注 :</label>
                    <div class="col-sm-8">
                        <input name="remarks" class="form-control" id="remarks" value="${book.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>
        <script type="text/javascript">
        	document.getElementById("formUpdate").onsubmit = function(){
        		var regex = /^[0-9]*$/;
        		var bookId = document.getElementById("bookId").value;
        		var bookName = document.getElementById("bookName").value;
        		var categoryId = document.getElementById("categoryId").value;
        		var bookPic = document.getElementById("bookPic").value;
        		var remarks = document.getElementById("remarks").value;
        		var bookPrice = document.getElementById("bookPrice").value;
        		if(regex.test(bookPrice) == false || bookPrice == ""){
        			alert("价格不能含有非数字或不能为空");
        			return false;
        		}else if(bookId == ""){
        			alert("图书ID不能为空");
        			return false;
        		}else if(bookName == ""){
        			alert("图书名称不能为空");
        			return false;
        		}else if(categoryId == ""){
        			alert("分类不能为空");
        			return false;
        		}else if(bookPic == ""){
        			alert("图书封面不能为空");
        			return false;
        		}else if(remarks == ""){
        			alert("备注不能为空");
        			return false;
        		}else{
        			return true;
        		}
        	}
        </script>
    </body>
</html>

BookServiceImpl与UpdateBookServlet代码在下一个问答中,同学可进行参考:

好帮手慕小尤 2020-05-23 17:35:22

BookServiceImpl

//修改图书信息:
	public void updateBook(Book book) {
		for (int i = 0; i < books.size(); i++) {
			if(books.get(i).getBookId().equals(book.getBookId())) {
				books.set(i, book);
			}
		}
	}
	//根据图书ID来查询书籍信息:
	public Book getBooksById(String bookID) {
		for(Book b : books) {
			if(b.getBookId().equals(bookID)) {
				return b;
			}	
		}
		System.out.println("未找到该书籍");
		return null;		
	}

UpdateBookServlet

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.cclass.Book;
import com.imooc.service.impl.BookServiceImpl;
import com.imooc.service.impl.CategoryServiceImpl;
import com.imooc.utils.UploadUtils;

/**
 * Servlet implementation class UpdateBookServlet
 */
@WebServlet("/updateBook")
public class UpdateBookServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public UpdateBookServlet() {
        super();
        // TODO Auto-generated constructor stub
    }
    

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		Map<String,String> newBook = new HashMap<String,String>();
		DiskFileItemFactory disFileItemFactory = new DiskFileItemFactory();
		ServletFileUpload fileUpload = new ServletFileUpload(disFileItemFactory);
		try {
			List<FileItem> list = fileUpload.parseRequest(request);
			for(FileItem fileItem : list) {
				if(fileItem.isFormField()) {
					String name = fileItem.getFieldName();
					String value = fileItem.getString("UTF-8");
					newBook.put(name, value);
				}else {
					String  fileName = fileItem.getName();
					//获取唯一文件名
					fileName = UploadUtils.getUuidFileName(fileName);
					InputStream is = fileItem.getInputStream();
					String path = getServletContext().getRealPath("/img");
					//System.out.println(path);
					String url = path + "\\" + fileName;
					OutputStream os = new FileOutputStream(url);
					newBook.put("path", request.getContextPath() + "/img/" + fileName);
					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();
		}
		// 获取图书更新后的的数据
		String bookId = newBook.get("bookId");
		String bookName = newBook.get("bookName");
		String categoryId = newBook.get("categoryId");
		String bookCate = CategoryServiceImpl.getCateNameById(categoryId);
		String price = newBook.get("bookPrice");
		String bookCover = newBook.get("path");
		//System.out.println(bookCover);
		String remarks = newBook.get("remarks");
		Book book = new Book(bookId, bookName, bookCate, price, bookCover, remarks);
		//进行添加
		BookServiceImpl bs = new BookServiceImpl();	
		bs.updateBook(book);
		System.out.println("修改图书servlet成功");
		response.sendRedirect(request.getContextPath()+"/bookList.jsp");
	}
}

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

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

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

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

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

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

帮助反馈 APP下载

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

公众号

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

在线咨询

领取优惠

免费试听

领取大纲

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