手机网上商城-项目经验总结(六)-更新商品

来源:互联网 发布:web在线考试系统源码 编辑:程序博客网 时间:2024/05/18 00:59

6.商品的更新// 编辑public void update(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException, IllegalAccessException,InvocationTargetException, FileUploadException {FileItemFactory fileItemFactory = new DiskFileItemFactory();ServletFileUpload sf = new ServletFileUpload(fileItemFactory);if (sf.isMultipartContent(request))// 判断表单enctype为否为mutipart-data{// 如果表单含有上传标签,那么getParamMap方法失效,// 因为前台input太多,所以我们要使用beanUtils快速封装,那么我们就需要自己封装Map了Map<String, String> paramsMap = new HashMap<String, String>();List<FileItem> itemList = sf.parseRequest(request);// 1.上传for (FileItem fileItem : itemList) {if (!fileItem.isFormField())// 判断是否为上传组件{if (fileItem.getSize() > 0) {// 判断前台选择文件没有// 1.1执行上传// 1.1.1获取服务器上传目录路径String path = getServletContext().getRealPath("/products");// 1.1.2上传InputStream is = fileItem.getInputStream();// getFieldName()获取表单标签name属性值// getName()获取文件名// getString()获取表单标签value值FileOutputStream fos = new FileOutputStream(new File(path, fileItem.getName()));IOUtils.copy(is, fos);// 清除临时文件fileItem.delete();is.close();fos.close();// 将pimage属性存入mapparamsMap.put(fileItem.getFieldName(), "products/"+ fileItem.getName());} } else// 普通组件{paramsMap.put(fileItem.getFieldName(),fileItem.getString("UTF-8"));}}// 2.封装product对象 保存到数据库里Product product = new Product();BeanUtils.populate(product, paramsMap);// 保存欲修改的对象 供删除Product delete_product = ps.findProductByPid(product.getPid());boolean result = ps.updateProduct(product);// 修改成功后删除if (delete_product.getPimage() != null) {if (result) {String path = getServletContext().getRealPath("");File file = new File(path, delete_product.getPimage());if (file.exists()) {file.delete();}}}if (result) {response.getWriter().println("<script>confirm('修改成功');location.href='/ShopStore/product?method=list';</script>");} else {response.getWriter().println("<script>confirm('修改失败');location.href='/ShopStore/admin/product/edit.jsp;</script>");}}}

阅读全文
0 0