正在回答
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>
</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");
}
}如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
2. 从网页搭建入门JavaWeb
- 参与学习 人
- 提交作业 676 份
- 解答问题 9666 个
本阶段将从前端网页搭建入手,到Java Web基础,前后端结合助你完成Java Web小白的蜕变!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星