该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
public class AdminAddBookServlet extends HttpServlet {
private BookService bookService = new BookService();
private CategoryService categoryService = new CategoryService();
public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;chareset=utf-8");
/* * 1.把表单数据封装到book对象中
* 上传3步*/
//创建工厂
DiskFileItemFactory factory = new DiskFileItemFactory();
//得到解析器
ServletFileUpload sfu = new ServletFileUpload(factory);
//使用解析器去解析request对象,得到List对象
try {
List fileItemList = sfu.parseRequest(req);
/* * 把fileitemlist中的数据封装到book对象中
* 把所有普通表单字段数据先封装到map中
* 再把map中的数据封装到book对象中
* (因为这里继承的是http为不是base)*/
Map map = new HashMap();
for(FileItem fileItem: fileItemList) {
if(fileItem.isFormField()) {//if里面的方法是判断是否是普通表单字段
map.put(fileItem.getFieldName(), fileItem.getString("UTF-8"));
//表单项的名称做键,表单项的值做值
}
}
Book book =CommonUtils.toBean(map, Book.class);
//为book设置主键
book.setBid(CommonUtils.uuid() );
Category category =CommonUtils.toBean(map, Category.class);
book.setCategory(category);
/* 2.保存上传的文件
* 保存目录
* 保存的文件名称
*/
//得到保存的目录
String savepath = this.getServletContext().getRealPath("/book_img");
//保存文件名称:给原来的名称添加uuid前缀,避免名称冲突
String filename = CommonUtils.uuid() + "_" + fileItemList.get(1).getName();
// 使用目录和文件名称创建目标文件
File destFile = new File(savepath, filename);
// 保存上传文件到目标文件位置
System.out.println("出错1");
fileItemList.get(1).write(destFile);
/* 3.把图片路径给book的image*/
System.out.println("出错2");
book.setImage("book_image/"+filename);
/* 4.使用Bookservice完成保存*/
bookService.add(book);
/*
* 5.返回图书列表
*/
req.getRequestDispatcher("/admin/AdminBookServlet?method=findAll").forward(req, resp);
} catch (Exception e) {
}
}
}