在图书更新时出现异常
问题描述:
之前根据老师的指导在删除和更新出现问题,删除已经解决了,然后在修改还是出现问题
相关代码:
ManagementController.java
1 | package com.pre.library.controller;<br><br> import java.io.File;<br> import java.io.IOException;<br> import java.io.PrintWriter;<br> import java.util.List;<br> import java.util.UUID;<br><br> import javax.servlet.ServletException;<br> import javax.servlet.annotation.WebServlet;<br> import javax.servlet.http.HttpServlet;<br> import javax.servlet.http.HttpServletRequest;<br> import javax.servlet.http.HttpServletResponse;<br><br> import org.apache.commons.fileupload.FileItem;<br> import org.apache.commons.fileupload.FileItemFactory;<br><br> import org.apache.commons.fileupload.disk.DiskFileItemFactory;<br> import org.apache.commons.fileupload.servlet.ServletFileUpload;<br><br><br> import com.pre.library.entity.Books;<br> import com.pre.library.entity.Category;<br> import com.pre.library.service.BookService;<br> import com.pre.library.service.CategoryService;<br> /**<br> * Servlet implementation class ManagementController<br> */ <br> @WebServlet ( "/management" )<br> public class ManagementController extends HttpServlet {<br> private static final long serialVersionUID = 1L;<br> private BookService bookService= new BookService(); <br> private CategoryService categoryService= new CategoryService();<br> /**<br> * @see HttpServlet#HttpServlet()<br> */ <br> public ManagementController() {<br> super ();<br> // TODO Auto-generated constructor stub<br> }<br><br> /**<br> * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)<br> */<br> protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {<br> request.setCharacterEncoding("utf-8");<br> response.setContentType("text/html;charset=utf-8");<br> String method = request.getParameter("method");<br> if ("bookList".equals(method)) {<br> this.bookList(request, response);<br> }else if ("show_addBook".equals(method)) {<br> this.addBook(request, response);<br> }else if ("createBook".equals(method)) {<br> this.createBook(request, response);<br> }else if("deleteBook".equals(method)) {<br> this.deleteBook(request, response);<br> }else if(method.equals("show_updateBook")) {<br> this.showUpdatePage(request,response);<br> }else if(method.equals("update")) {<br> this.update(request,response);<br> }else if("categoryList".equals(method)) {<br> this.categoryList(request, response);<br> }else if("show_Category".equals(method)) {<br> this.addCategory(request,response);<br> }else if("categoryCreate".equals(method)) {<br> this.categoryCreate(request,response);<br> }<br> }<br> //category展示<br> public void categoryList(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {<br> List<Category> categoryList=categoryService.categoryList();<br> request.setAttribute("categoryList", categoryList);<br> request.getRequestDispatcher("/WEB-INF/jsp/categoryList.jsp").forward(request, response);<br> }<br> //图书展示<br> private void bookList(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {<br> List<Books> bookList = bookService.bookList();<br> request.setAttribute("bookList", bookList);<br> request.getRequestDispatcher("/WEB-INF/jsp/bookList.jsp").forward(request, response);<br> }<br> /**<br> * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)<br> */<br> protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {<br> // TODO Auto-generated method stub<br> doGet(request, response);<br> }<br> //显示新增页面<br> private void addBook(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {<br> request.getRequestDispatcher("/WEB-INF/jsp/addBook.jsp").forward(request, response); <br> }<br> //显示新增分类页面<br> private void addCategory(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { <br> request.getRequestDispatcher("/WEB-INF/jsp/addCategory.jsp").forward(request, response);<br> }<br> //新增图书分类<br> private void categoryCreate(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {<br> //1. 初始化FileUpload组件<br> FileItemFactory factory = new DiskFileItemFactory();<br> /**<br> * FileItemFactory 用于将前端表单的数据转换为一个个FileItem对象<br> * ServletFileUpload 则是为FileUpload组件提供Java web的Http请求解析<br> */<br> ServletFileUpload sf = new ServletFileUpload(factory);<br> //2.遍历所有FileItem<br> try {<br> List<FileItem>formData=sf.parseRequest(request);<br> Category category=new Category();<br> for(FileItem fi:formData) {<br> if(fi.isFormField()) {<br> System.out.println("普通输入项:" + fi.getFieldName() + ":" + fi.getString("UTF-8"));<br> switch (fi.getFieldName()) {<br> case "categoryId":<br> category.setCategoryId(Integer.parseInt(fi.getString("UTF-8")));<br> break;<br> case "categoryName":<br> category.setCategoryName(fi.getString("UTF-8"));<br> break;<br> default:<br> break;<br> }<br> }else {<br> System.out.println("文件上传项:" + fi.getFieldName());<br> }<br> }<br> categoryService.addCategory(category);<br> response.sendRedirect("/management?method=categoryList");//返回列表页<br> } catch (Exception e) {<br> // TODO Auto-generated catch block<br> e.printStackTrace();<br><br> }<br> }<br> //新增图书信息<br> private void createBook(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {<br> //1. 初始化FileUpload组件<br> FileItemFactory factory = new DiskFileItemFactory();<br> /**<br> * FileItemFactory 用于将前端表单的数据转换为一个个FileItem对象<br> * ServletFileUpload 则是为FileUpload组件提供Java web的Http请求解析<br> */<br> ServletFileUpload sf = new ServletFileUpload(factory);<br> //2.遍历所有FileItem<br> try {<br> List<FileItem>formData=sf.parseRequest(request);<br> Books book=new Books();<br> for(FileItem fi:formData) {<br> if(fi.isFormField()) {<br> System.out.println("普通输入项:" + fi.getFieldName() + ":" + fi.getString("UTF-8"));<br> switch (fi.getFieldName()) {<br> case "bookId":<br> book.setBookId(Integer.parseInt(fi.getString("UTF-8")));<br> break;<br> case "bookName":<br> book.setBookName(fi.getString("UTF-8"));<br> break;<br> case "categoryId":<br> book.setCategoryId(fi.getString("UTF-8"));<br> break;<br> case "bookPrice":<br> book.setBookPrice(Integer.parseInt(fi.getString("UTF-8")));<br> break;<br> case "remarks":<br> book.setRemarks(fi.getString("UTF-8"));<br> break;<br> default:<br> break;<br> }<br> }else {<br> System.out.println("文件上传项:" + fi.getFieldName());<br> //3.文件保存到服务器目录<br> String path = request.getServletContext().getRealPath("/upload");<br> System.out.println("上传文件目录:" + path);<br> //String fileName = "test.jpg";<br> String fileName = UUID.randomUUID().toString();<br> //fi.getName()得到原始文件名,截取最后一个.后所有字符串,例如:wxml.jpg->.jpg<br> String suffix = fi.getName().substring(fi.getName().lastIndexOf("."));<br> //fi.write()写入目标文件<br> fi.write(new File(path,fileName + suffix));<br> book.setBookPic("/upload/" + fileName + suffix);<br> }<br> }<br> bookService.addBook(book);<br> response.sendRedirect("/management?method=bookList");//返回列表页<br> } catch (Exception e) {<br> // TODO Auto-generated catch block<br> e.printStackTrace();<br><br> }<br> }<br> /**<br> * 显示更新页面<br> * @param request<br> * @param response<br> * @throws ServletException<br> * @throws IOException<br> */<br> private void showUpdatePage(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {<br> String id = request.getParameter("id");<br> Books book = bookService.findById(Integer.parseInt(id));<br> request.setAttribute("book", book);<br> request.getRequestDispatcher("/WEB-INF/jsp/updateBook.jsp").forward(request, response);<br> }<br> /**<br> * 实现油画更新<br> * @param request<br> * @param response<br> * @throws ServletException<br> * @throws IOException<br> */<br> private void update(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {<br> int isPreviewModified = 0;<br> //文件上传时的数据处理与标准表单完全不同<br> /*<br> String pname = request.getParameter("pname");<br> System.out.println(pname);<br> */<br> //1. 初始化FileUpload组件<br> FileItemFactory factory = new DiskFileItemFactory();<br> /**<br> * FileItemFactory 用于将前端表单的数据转换为一个个FileItem对象<br> * ServletFileUpload 则是为FileUpload组件提供Java web的Http请求解析<br> */<br> ServletFileUpload sf = new ServletFileUpload(factory);<br> //2. 遍历所有FileItem<br> try {<br> List<FileItem> formData = sf.parseRequest(request);<br> Books book = new Books();<br> for(FileItem fi:formData) {<br> if(fi.isFormField()) {<br> System.out.println("普通输入项:" + fi.getFieldName() + ":" + fi.getString("UTF-8"));<br> switch (fi.getFieldName()) {<br> case "bookId":<br> book.setBookId(Integer.parseInt(fi.getString("UTF-8")));<br> break;<br> case "bookName":<br> book.setBookName(fi.getString("UTF-8"));<br> break;<br> case "categoryId":<br> book.setCategoryId(fi.getString("UTF-8"));<br> break;<br> case "bookPrice":<br> book.setBookPrice(Integer.parseInt(fi.getString("UTF-8")));<br> break;<br> case "remaraks":<br> book.setRemarks(fi.getString("UTF-8"));<br> break;<br> case "isPreviewModified":<br> isPreviewModified = Integer.parseInt(fi.getString("UTF-8"));<br> break;<br> default:<br> break;<br> }<br> }else {<br> if(isPreviewModified == 1) { <br> System.out.println("文件上传项:" + fi.getFieldName());<br> //3.文件保存到服务器目录<br> String path = request.getServletContext().getRealPath("/upload");<br> System.out.println("上传文件目录:" + path);<br> //String fileName = "test.jpg";<br> String fileName = UUID.randomUUID().toString();<br> //fi.getName()得到原始文件名,截取最后一个.后所有字符串,例如:wxml.jpg->.jpg<br> String suffix = fi.getName().substring(fi.getName().lastIndexOf("."));<br> //fi.write()写入目标文件<br> fi.write(new File(path,fileName + suffix));<br> book.setBookPic("/upload/" + fileName + suffix);<br> }<br> }<br> }<br> //更新数据的核心方法<br> bookService.update(book,isPreviewModified);<br> response.sendRedirect("/management?method=bookList");//返回列表页<br> } catch (Exception e) {<br> // TODO Auto-generated catch block<br> e.printStackTrace();<br> }<br> }<br> //删除<br> public void deleteBook(HttpServletRequest request, HttpServletResponse response) throws IOException {<br> String id = request.getParameter("id");<br> System.out.println("id"+id);<br> PrintWriter out = response.getWriter();<br> try {<br> bookService.deleteBook(Integer.parseInt(id));<br> //{"result":"ok"}<br> out.println("{\"result\":\"ok\"}");<br> }catch(Exception e) {<br> e.printStackTrace();<br> out.println("{\"result\":\"" + e.getMessage() + "\"}");<br> }<br><br> }<br>}<br><br> |
Books.java:
1 | package com.pre.library.entity;<br> /**<br> * 1.类型描述:图书id,图书名,图书分类,价格,图书封面,备注<br> * @author zhanzhimin<br> *<br> */ <br> public class Books {<br> private Integer id; //序号<br> private Integer bookId;//图书id<br> private String bookName;//图书名<br> private String categoryId;//图书分类分类1-计算机2-软件工程<br> private Integer bookPrice;//价格<br> private String bookPic;//图书封面<br> private String remarks;//备注<br> public Integer getId() {<br> return id;<br> }<br> public void setId(Integer id) {<br> this.id=id;<br> }<br> public Integer getBookId() {<br> return bookId;<br> }<br> public void setBookId(Integer bookId) {<br> this.bookId = bookId;<br> }<br> public String getBookName() {<br> return bookName;<br> }<br> public void setBookName(String bookName) {<br> this.bookName = bookName;<br> }<br> public String getCategoryId() {<br> return categoryId;<br> }<br> public void setCategoryId(String categoryId) {<br> this.categoryId = categoryId;<br> }<br> public Integer getBookPrice() {<br> return bookPrice;<br> }<br> public void setBookPrice(Integer bookPrice) {<br> this.bookPrice = bookPrice;<br> }<br> public String getBookPic() {<br> return bookPic;<br> }<br> public void setBookPic(String bookPic) {<br> this.bookPic = bookPic;<br> }<br> public String getRemarks() {<br> return remarks;<br> }<br> public void setRemarks(String remarks) {<br> this.remarks = remarks;<br> }<br>}<br> |
BookDao.java:
1 | package com.pre.library.dao;<br><br> import java.util.List;<br><br><br> import com.pre.library.entity.Books;<br> import com.pre.library.utils.XmlDataSource;<br><br> public class BookDao {<br> //图书信息的展示,通过XmlDataSource文件进行读取<br> public List<Books> bookList() {<br> List<Books> bookList = XmlDataSource.bookData();<br> return bookList;<br> }<br> //查找<br> public Books findById(Integer id) {<br> List<Books> data = XmlDataSource.bookData();<br> Books book = null;<br> for(Books books : data) {<br> if(books.getId() == id) {<br> book = books;<br> break;<br> }<br> }<br> return book;<br> }<br> //图书添加<br> public void addBook(Books book) {<br> XmlDataSource.appendBook(book);<br> }<br> //删除图书<br> public void deleteBook(Integer id) {<br> XmlDataSource.deleteBook(id);<br> }<br> //更新图书<br> public void update(Books book) {<br> XmlDataSource.update(book);<br> }<br>}<br> |
BookService.java:
1 | package com.pre.library.service;<br><br> import java.util.List;<br><br><br> import com.pre.library.dao.BookDao;<br> import com.pre.library.entity.Books;<br><br><br> public class BookService {<br> private BookDao bookDao= new BookDao();<br> //图书的展示<br> public List<Books> bookList() {<br> /*List<Books> bookList = XmlDataSource.bookData();<br> return bookList;*/<br> return bookDao.bookList();<br> }<br> //查询<br> public Books findById(Integer id) {<br> Books book = bookDao.findById(id);<br> if(book==null) {<br> throw new RuntimeException("[id=" + id +"]图书不存在");<br> }<br> return book;<br> }<br><br> //图书添加<br> public void addBook(Books book) {<br> bookDao.addBook(book);<br> }<br> //删除图书<br> public void deleteBook(Integer id) {<br> bookDao.deleteBook(id);<br> }<br> /**<br> * 更新业务逻辑<br> * @param newBook 新的图书数据<br> * @param isPreviewModified 是否修改bookPic属性<br> */<br> public void update(Books newBook,Integer isPreviewModified) {<br> Books oldBook=this.findById(newBook.getId());<br> oldBook.setBookId(newBook.getBookId());<br> oldBook.setBookName(newBook.getBookName());<br> oldBook.setBookPrice(newBook.getBookPrice());<br> oldBook.setRemarks(newBook.getRemarks());<br> if(isPreviewModified==1) {<br> oldBook.setBookPic(newBook.getBookPic());<br> }<br> bookDao.update(oldBook);<br> }<br> public static void main(String[] arge) {<br> BookService bookService=new BookService();<br> List<Books> booklist=bookService.bookList();<br> for(Books books:booklist) {<br> System.out.println(books.getBookName());<br> }<br> }<br>}<br> |
XmlDataSource.java:
1 | package com.pre.library.utils;<br> import java.io.FileOutputStream;<br> import java.io.IOException;<br> import java.io.OutputStreamWriter;<br> import java.io.UnsupportedEncodingException;<br> import java.io.Writer;<br> import java.net.URLDecoder;<br> import java.util.ArrayList;<br> import java.util.List;<br> import org.dom4j.Document;<br> import org.dom4j.DocumentException;<br> import org.dom4j.Element;<br> import org.dom4j.Node;<br> import org.dom4j.io.SAXReader;<br><br> import com.pre.library.entity.Books;<br> import com.pre.library.entity.Category;<br><br> /**<br> * 数据源类,用于XML文件解析为Java对象<br> * <br> * @author zhanzhimin<br> */ <br> public class XmlDataSource {<br> private static List<Books> data = new ArrayList<Books>();<br> private static List<Category> categoryData= new ArrayList<Category>();<br> private static String dataFile;<br> private static String categoryDataFile;<br> static {<br> // painting.xml文件完整物理地址<br> // c:\new style\book.xml<br> // c:\new%20style\book.xml<br> dataFile = XmlDataSource.class.getResource("/book.xml").getPath();<br> categoryDataFile=XmlDataSource.class.getResource("/category.xml").getPath();<br> reloadBooks();<br> reloadCategory();<br> }<br> //对category进行编写<br> public static void reloadCategory() {<br> // 通过URLDecoder类将Base64转换成普通字符窜<br> URLDecoder decoder = new URLDecoder();<br> try {<br> categoryDataFile=decoder.decode(categoryDataFile,"utf-8");<br> System.out.println(categoryDataFile);<br> //利用dom4j进行解析<br> SAXReader reader=new SAXReader();<br> Document doucument=reader.read(categoryDataFile);<br> List<Node> list=doucument.selectNodes("/root/category");<br> categoryData.clear();<br> for(Node node:list) {<br> Element element=(Element)node;<br> String categoryId=element.elementText("categoryId");<br> String categoryName=element.elementText("categoryName");<br> Category category=new Category();<br> category.setCategoryId(Integer.parseInt(categoryId));<br> category.setCategoryName(categoryName);<br> categoryData.add(category);<br> System.out.println(categoryId+" "+categoryName);<br> }<br> } catch (Exception e) {<br> // TODO Auto-generated catch block<br> e.printStackTrace();<br> }<br> }<br> //对book公共读取的方法<br> public static void reloadBooks() {<br> // 通过URLDecoder类将Base64转换成普通字符窜<br> URLDecoder decoder = new URLDecoder();<br> try {<br> dataFile = decoder.decode(dataFile, "utf-8");<br> System.out.println(dataFile);<br> // 利用dom4j对xml解析<br> SAXReader reader = new SAXReader();<br> Document document = reader.read(dataFile);<br> List<Node> list = document.selectNodes("/root/book");<br> //清空集合的数据<br> data.clear();<br> for (Node node : list) {<br> Element element = (Element) node;<br> String id = element.attributeValue("id");<br> String bookId = element.elementText("bookId");<br> String bookName = element.elementText("bookName");<br> Books book = new Books();<br> book.setId(Integer.parseInt(id));<br> book.setBookId(Integer.parseInt(bookId));<br> book.setBookName(bookName);<br> book.setCategoryId(element.elementText("categoryId"));<br> book.setBookPrice(Integer.parseInt(element.elementText("bookPrice")));<br> book.setBookPic(element.elementText("bookPic"));<br> book.setRemarks(element.elementText("remarks"));<br> data.add(book);<br> System.out.println(bookId + ":" + bookName);<br> }<br><br> } catch (Exception e) {<br> // TODO Auto-generated catch block<br> e.printStackTrace();<br> }<br> }<br> //对category增加<br> public static void appendCategory(Category category) {<br> //利用SAXReader读取xml文档<br> SAXReader reader=new SAXReader();<br> Writer writer=null;<br> try {<br> Document document=reader.read(categoryDataFile);<br> Element root=document.getRootElement();<br> Element c=root.addElement("category");<br> //3.创建各个节点<br> c.addElement("categoryId").setText(category.getCategoryId().toString());<br> c.addElement("categoryName").setText(category.getCategoryName().toString());<br> //4.完成追加,写入xml<br> writer=new OutputStreamWriter(new FileOutputStream(categoryDataFile),"UTF-8");<br> document.write(writer);<br> } catch (Exception e) {<br> // TODO Auto-generated catch block<br> e.printStackTrace();<br> }finally {<br> if(writer!=null) {<br> try {<br> writer.close();<br> } catch (IOException e) {<br> // TODO Auto-generated catch block<br> e.printStackTrace();<br> }<br> }<br> reloadCategory();<br> }<br> }<br> /**<br> * 添加图书的信息<br> * @param 实体对象Books book<br> * <br> */<br> public static void appendBook(Books book) {<br> //通过SAXReader读取xml文档,得到Document<br> SAXReader reader=new SAXReader();<br> Writer writer=null;<br> try {<br> Document document=reader.read(dataFile);<br> //2.创建book.xml的book节点<br> Element root=document.getRootElement();<br> Element b=root.addElement("book");<br> //3.创建各个节点<br> b.addAttribute("id", String.valueOf(data.size()+1));<br> b.addElement("bookId").setText(book.getBookId().toString());<br> b.addElement("bookName").setText(book.getBookName());<br> b.addElement("categoryId").setText(book.getCategoryId());<br> b.addElement("bookPrice").setText(book.getBookPrice().toString());<br> b.addElement("bookPic").setText(book.getBookPic());<br> b.addElement("remarks").setText(book.getRemarks());<br> //4.完成追加,写入xml<br> writer=new OutputStreamWriter(new FileOutputStream(dataFile),"UTF-8");<br> document.write(writer);<br> } catch (Exception e) {<br> // TODO Auto-generated catch block<br> e.printStackTrace();<br> }finally {<br> if(writer!=null) {<br> try {<br> writer.close();<br> } catch (IOException e) {<br> // TODO Auto-generated catch block<br> e.printStackTrace();<br> }<br> }<br> reloadBooks() ;<br> }<br> }<br> //按bookId进行删除<br><br> public static void deleteBook(Integer id) {<br> SAXReader reader=new SAXReader();<br> Writer writer=null;<br> try {<br> Document doucment=reader.read(dataFile);<br> List<Node>nodes=doucment.selectNodes("/root/book[@id="+id+"]");<br> if(nodes.size()==0) {<br> throw new RuntimeException("id="+id+"图书编号不存在");<br> }<br> Element b=(Element) nodes.get(0);<br> b.getParent().remove(b);<br> writer=new OutputStreamWriter(new FileOutputStream(dataFile),"UTF-8");<br> doucment.write(writer);<br><br> } catch (Exception e) {<br> // TODO Auto-generated catch block<br> e.printStackTrace();<br> }finally {<br> if(writer!=null) {<br> try {<br> writer.close();<br> } catch (IOException e) {<br> // TODO Auto-generated catch block<br> e.printStackTrace();<br> }<br> }<br> reloadBooks();<br> }<br><br> }<br> //更新<br> public static void update(Books book) {<br> SAXReader reader=new SAXReader();<br> Writer writer=null;<br> try {<br> Document document=reader.read(dataFile);<br> //节点路径[@属性名=属性值]<br> // /root/book[@id=x]<br> List<Node>nodes=document.selectNodes("/root/book[@id="+book.getId()+"]");<br> if(nodes.size()==0) {<br> throw new RuntimeException("id="+book.getId()+"图书编号不存在");<br> }<br> Element b = (Element)nodes.get(0);<br> b.selectSingleNode("bookId").setText(book.getBookId().toString());<br> b.selectSingleNode("bookName").setText(book.getBookName());<br> b.selectSingleNode("categoryId").setText(book.getCategoryId());<br> b.selectSingleNode("bookPrice").setText(book.getBookPrice().toString());<br> b.selectSingleNode("bookPic").setText(book.getBookPic());<br> b.selectSingleNode("remarks").setText(book.getRemarks());<br> writer = new OutputStreamWriter(new FileOutputStream(dataFile),"UTF-8");<br> document.write(writer);<br> } catch (Exception e) {<br> // TODO Auto-generated catch block<br> e.printStackTrace();<br> }<br> finally {<br> if(writer != null) {<br> try {<br> writer.close();<br> } catch (IOException e) {<br> // TODO Auto-generated catch block<br> e.printStackTrace();<br> }<br> }<br> reloadBooks();<br> }<br> }<br> public static List<Books> bookData() {<br> return data;<br><br> }<br> public static List<Category> categoryData(){<br> return categoryData;<br> }<br> public static void main(String[] args) {<br> /*new XmlDataSource();<br> List<Books> bk=XmlDataSource.bookData();<br> System.out.println(bk);*/<br> //List<Category> cg=XmlDataSource.categoryData();<br> //System.out.println(cg);<br> /*Books b=new Books();<br> b.setBookId(1000);<br> b.setBookName("软件更新");<br> b.setCategoryId("计算机");<br> b.setBookPrice(100);<br> b.setBookPic("/image/g1.jpg");<br> b.setRemarks("测试");<br> //XmlDataSource.deleteBook(11010);*/<br> //Category c=new Category();<br> //c.setCategoryId(2);<br> //c.setCategoryName("计算机");<br> //XmlDataSource.deleteBook(3);<br> //List<Books> bk=XmlDataSource.bookData();<br> //System.out.println(bk);<br><br> }<br>}<br> |
udateBook.jsp:
1 | <% @page contentType= "text/html;charset=utf-8" %><br><!DOCTYPE html><br><html><br> <head><br> <meta charset= "UTF-8" ><br> <title>修改图书信息</title><br> <link rel= "stylesheet" href= "css/bootstrap.min.css" ><br> <link rel= "stylesheet" href= "css/add.css" ><br> <script type= "text/javascript" src= "js/jquery-3.4.1.min.js" ></script><br> <script type= "text/javascript" src= "js/validation.js" ></script><br> <script><br> function checkSubmit() {<br> var a = checkEmpty( "#bookId" , "#errBookId" );<br> var b = checkEmpty( '#bookName' , "#errBname" );<br> // var c = checkCategory('#categoryId',"#err");<br> var d = checkPrice('#bookPrice',"#errBookPrice");<br> var e = checkFile('#bookPic',"#errBookPic");<br> var f = checkEmpty('#remarks',"#errRemarks");<br> if (a && b && d && e && f) {<br> return true;<br> } else {<br> return false;<br> }<br> }<br></script><br> </head><br> <body><br> <nav class="navbar navbar-default"><br> <div class="container"><br> <div class="navbar-header"><br> <a class="navbar-brand" href="/dept/list.do"><br> 图书信息管理<br> </a><br> </div><br> </div><br> </nav><br> <div class="container"><br> <div class="jumbotron"><br> <h1>Hello, XXX!</h1><br> <p>请小心的修改图书信息。。。</p><br> </div><br> <div class="page-header"><br> <h3><small>修改</small></h3><br> </div><br> <form class="form-horizontal" action="/management?show_updateBook" method="post"><br><br> <div class="form-group"><br> <label for="name" class="col-sm-2 control-label">图书编号 :</label><br> <div class="col-sm-8"><br> <input name="bookId" class="form-control" id="bookId" readonly="readonly" onblur="checkEmpty('#bookId','#errBookId')" value="${book.bookId }"><br> </div><br> </div><br> <div class="form-group"><br> <label for="name" class="col-sm-2 control-label">图书名称 :</label><br> <div class="col-sm-8"><br> <input name="bookName" class="form-control" id="bookName" onblur="checkEmpty('#bookName','#errBname')" value="${book.bookName }"><br> </div><br> </div><br> <div class="form-group"><br> <label for="categoryId" class="col-sm-2 control-label">分类 :</label><br> <select id="categoryId" name="categoryId" class="col-sm-2 form-control" style="width: auto;margin-left: 15px"><br> <option value="ca0001" selected="">计算机</option><br> <option value="ca0002">文学</option><br> <option value="ca0003">历史</option><br> <!-- 下拉列表的内容要从分类中进行读取,value值是分类id --><br> </select><br> </div><br><br> <div class="form-group"><br> <label for="name" class="col-sm-2 control-label">价格 :</label><br> <div class="col-sm-8"><br> <input name="bookPrice" class="form-control" id="bookPrice" onblur="checkPrice('#bookPrice','#errBookPrice')" value="${book.bookPrice }"><br> </div><br> </div><br><br> <div class="form-group" ><br> <label for="name" class="col-sm-2 control-label">图书封面 :</label><br> <input type="file" id="bookPic" name="bookPic" style="padding-left: 15px" onchange="checkFile('#bookPic','#errBookPic')"><br> </div><br><br> <div class="form-group"><br> <label for="name" class="col-sm-2 control-label">备注 :</label><br> <div class="col-sm-8"><br> <input name="remarks" class="form-control" id="remarks" onblur="checkEmpty('#remarks','#errRemarks')" value="${book.remarks}"><br> </div><br> </div><br><br> <div class="form-group"><br> <div class="col-sm-offset-2 col-sm-10"><br> <button type="submit" class="btn btn-primary">修改</button> <br> </div><br> </div><br> </form><br> </div><br> <footer class="text-center" ><br> copy@imooc<br> </footer><br> </body><br></html><br> |
book.xml:
1 | <?xml version= "1.0" encoding= "UTF-8" ?><br><!-- 数据文件 --><br><root><br> <book id= "1" ><br> <bookId> 11010 </bookId><br> <bookName>人生哲学</bookName><br> <categoryId>文学</categoryId><br> <bookPrice> 20 </bookPrice><br> <bookPic>/upload/g1.jpg</bookPic><br> <remarks> 6666 </remarks><br> </book><br> <book id= "2" ><br> <bookId> 21010 </bookId><br> <bookName>软件工程</bookName><br> <categoryId>计算机</categoryId><br> <bookPrice> 20 </bookPrice><br> <bookPic>/upload/g1.jpg</bookPic><br> <remarks> 6666 </remarks><br> </book><br> <book id= "3" ><br> <bookId> 31010 </bookId><br> <bookName>中国地理</bookName><br> <categoryId>历史</categoryId><br> <bookPrice> 20 </bookPrice><br> <bookPic>/upload/g1.jpg</bookPic><br> <remarks> 6666 </remarks><br> </book><br> <book id= "4" ><br> <bookId> 41010 </bookId><br> <bookName>数据库原理</bookName><br> <categoryId>计算机</categoryId><br> <bookPrice> 20 </bookPrice><br> <bookPic>/upload/g1.jpg</bookPic><br> <remarks> 6666 </remarks><br> </book><br> <book id= "5" ><br> <bookId> 51010 </bookId><br> <bookName>大明历程</bookName><br> <categoryId>历史</categoryId><br> <bookPrice> 20 </bookPrice><br> <bookPic>/upload/g1.jpg</bookPic><br> <remarks> 6666 </remarks><br> </book><br></root> |
bookList.jsp:
1 | <% @page contentType= "text/html;charset=utf-8" %><br><% @taglib uri= "http://java.sun.com/jsp/jstl/core" prefix= "c" %><br><% @taglib uri= "http://java.sun.com/jsp/jstl/fmt" prefix= "fmt" %><br><!DOCTYPE html><br><html><br><head><br><meta charset= "UTF-8" ><br><title>图书后台管理</title><br><link rel= "stylesheet" href= "css/index.css" ><br><link rel= "stylesheet" href= "css/bootstrap.min.css" ><br><script type= "text/javascript" src= "js/jquery-3.4.1.min.js" ></script><br><script src= "js/sweetalert2.js" type= "text/javascript" ></script><br><script type= "text/javascript" ><br> //对话框显示预览图<br> function showPreview(previewObj){<br> var preview = $(previewObj).attr( "data-preview" );<br> var pname = $(previewObj).attr( "data-pname" );<br> Swal.fire({<br> title: pname,<br> html: "<img src='" + preview + "' style='width:361px;height:240px'>" ,<br> showCloseButton: true ,<br> showConfirmButton: false <br> })<br> }<br> //删除数据<br> function del(delObj){<br> var id = $(delObj).attr( "data-id" );<br> var bookName = $(delObj).attr( "data-pname" );<br> var bookPic = $(delObj).attr( "data-preview" );<br> Swal.fire({<br> title : "确定要删除" + bookPic + "该图书吗?" ,<br> html : "<img src='" + bookPic + "' style='width:160px;height:90px'>" ,<br> showCancelButton: true ,<br> confirmButtonText: "是" ,<br> cancelButtonText: "否" <br> }).then(function(result){<br> if (result.value== true ){<br> //alert( "你点了'是'按钮" )<br> $.ajax({<br> url: "/management?method=deleteBook&id=" + id,<br> type : "get" ,<br> dataType: "json" ,<br> success : function(json){<br> if (json.result== "ok" ){<br> window.location.reload();<br> } else {<br> Swal.fire({<br> title : json.result<br> })<br> }<br> //console.log(json);<br> }<br> })<br> }<br> })<br> }<br></script><br></head><br><body><br> <header><br> <div class = "container" ><br> <nav><br> <a href= "/management?method=bookList" >图书信息管理</a><br> </nav><br> <nav><br> <a href= "/management?method=categoryList" >分类管理</a><br> </nav><br><br> </div><br> </header><br> <section class = "banner" ><br> <div class = "container" ><br> <div><br> <h1>图书管理系统</h1><br> <p>图书信息管理</p><br> </div><br> </div><br> </section><br> <section class = "main" ><br><br><br> <div class = "container" ><br> <form class = "form-horizontal" action= "/searchBook" method= "post" ><br> <div class = "form-group" style= "float: right;" ><br> <div class = "col-sm-offset-2 col-sm-10" ><br> <button type= "submit" class = "btn btn-primary" >查询</button><br> <br> </div><br> </div><br> <div class = "form-group" style= "float: right; width: 300px;" ><br> <div class = "col-sm-8" ><br> <input name= "searchContent" class = "form-control" <br> id= "searchContent" placeholder= "输入要查询的分类" style= "width: 250px" ><br> </div><br> </div><br><br><br> </form><br> </div><br> <div class = "container" ><br><br> <table class = "table table-striped" ><br> <thead><br> <tr><br> <th>序号</th><br> <th>图书编号</th><br> <th>图书名称</th><br> <th>分类</th><br> <th>价格</th><br> <th>图书封面</th><br> <th>操作</th><br><br> </tr><br> </thead><br> <tbody><br> <c:forEach items= "${bookList }" var= "bookList" varStatus= "idx" ><br> <tr><br> <td>${idx.index + 1 }</td><br> <td>${bookList.bookId}</td><br> <td>${bookList.bookName}</td><br> <td>${bookList.categoryId}</td><br> <td><fmt:formatNumber pattern= "¥0.00" <br> value= "${bookList.bookPrice}" ></fmt:formatNumber></td><br> <td><img src= "${bookList.bookPic}" ></td><br> <td><a href= "/management?method=show_updateBook&id=${bookList.id}" >修改</a><br> <a href= "javascript:void(0)" data-id= "${bookList.id }" data-pname= "${bookList.bookName }" data-preview= "${bookList.bookPic }" onclick= "del(this)" >删除</a><br> <!--在循环显示数据时,此处的book0001可以用EL表达式进行替换--><br> </tr><br> </c:forEach><br> </tbody><br> </table><br> </div><br> </section><br> <section class = "page" ><br> <div class = "container" ><br> <div id= "fatie" ><br> <a href= "/management?method=show_addBook" ><button>新建</button></a><br> </div><br> </div><br> </section><br> <footer> copy@慕课网 </footer><br></body><br></html><br> |
相关截图:
17
收起
正在回答
2回答
同学你好,根据报错提示在ManagementController中的第57行出现了异常,根据报错提示显示是空指针异常
如下问题同学少写了method
另外这里应该添加
enctype="multipart/form-data"
祝学习愉快~
java工程师2020版
- 参与学习 人
- 提交作业 9403 份
- 解答问题 16556 个
综合就业常年第一,编程排行常年霸榜,无需脱产即可学习,北上广深月薪过万 无论你是未就业的学生还是想转行的在职人员,不需要基础,只要你有梦想,想高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧