如何使用Apache commons获取表单单独传回的数据?(需求在注释)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | private void addBook(HttpServletRequest request, HttpServletResponse response){ book = new Book(); FileItemFactory factory = new DiskFileItemFactory(); /** *需求是获取书本名称和价格 通过mybatis查询获取书本是否唯一(返回书本对象可能是空值也可能是查询到) * 这里希望先把书名和价格抓取出来,通过filItem上面方法可以实现呢? */ ServletFileUpload sf = new ServletFileUpload(factory); try { List<FileItem> formData = sf.parseRequest(request); for (FileItem fileItem:formData){ if (fileItem.isFormField()){ System.out.println( "common files" + fileItem.getFieldName()+ ":" + fileItem.getString( "UTF-8" )); switch (fileItem.getFieldName()){ case "name" : book.setName(fileItem.getString( "UTF-8" )); break ; case "categoryId" : book.setCategoryId(Long.valueOf(fileItem.getString( "UTF-8" ))); break ; case "level" : book.setLevel(Integer.valueOf(fileItem.getString( "UTF-8" ))); break ; case "price" : book.setPrice(Integer.valueOf(fileItem.getString( "UTF-8" ))); break ; } } else { System.out.println( "files options :" +fileItem.getFieldName()); String imgPath = request.getServletContext().getRealPath( "/img" ); System.out.println(imgPath); String fileName = UUID.randomUUID().toString(); String suffix = fileItem.getName().substring(fileItem.getName().lastIndexOf( "." )); System.out.println(imgPath); System.out.println(fileName); fileItem.write( new File(imgPath,fileName+suffix)); book.setImgPath( "/img/" +fileName+suffix); } } bookService.insert(book); response.sendRedirect( "/admin/book/list" ); } catch (FileUploadException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } |
21
收起
正在回答 回答被采纳积分+1
4回答
狂野男孩_程序猴
2022-06-25 13:11:18
java工程师2020版
- 参与学习 人
- 提交作业 9402 份
- 解答问题 16556 个
综合就业常年第一,编程排行常年霸榜,无需脱产即可学习,北上广深月薪过万 无论你是未就业的学生还是想转行的在职人员,不需要基础,只要你有梦想,想高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧