这里就写上简单的详细步骤,跟着步骤一块做就能够实现一个jsp文件上传的功能

1,首先是导入以下两个包

在额外导入这个包,主要用于封装数据

以上三个包点此下载

2,设置添加商品提交表单的form标签的属性

<form class="am-form am-form-horizontal"  id="addmodform" method="post" enctype="multipart/form-data">

注意method必须为post

设置enctype="multipary/form-data"这个属性不能少,

设置图片上传的input标签

<input type="file" id="user-name2" name="productImg" > 

3,接着点击提交按钮到自己设置好的servlet

在servlet中由于设置了上述的enctype此时requese域的getParameter等获取参数值的方法全部都会无效,

我们要用特殊的方法来判断是否是文件上传的表单来取input的值

接下来是servlet的代码,跟着一步一步写,你就能实现图片上传了,其中出现的异常全部抛出

public void addProduct(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException, FileUploadException, IllegalAccessException, InvocationTargetException {//封装表单数据到product实体中Product product = new Product();//收集数据的容器Map<String,Object> map = new HashMap<String, Object>();//创建磁盘工厂DiskFileItemFactory factory = new DiskFileItemFactory();//创建文件上传核心对象ServletFileUpload upload = new ServletFileUpload(factory);//解析request集合List<FileItem> parseRequest = upload.parseRequest(request);//遍历request集合for (FileItem fileItem : parseRequest) {//判断是普表单项还是文件表单项boolean formField = fileItem.isFormField();if(formField){//是普通表单项String fieldName = fileItem.getFieldName();//获取表单项名字,也就是平时getParameter的那个nameString stringValues = fileItem.getString("utf-8");//获取表单项的值,平时getParameter的那个name返回的值当然要编码map.put(fieldName, stringValues);//设置到map,取出一个name你就得将这个值添加到上面定义的map中,用于后面进行封装}else{//是文件上传的表单项//获取上传的文件名字String name = fileItem.getName();//设置保存路径,也就是你根路径底下的一个文件夹中String realPath = this.getServletContext().getRealPath("images");//获取输入流读取文件InputStream inputStream = fileItem.getInputStream();//创建输出流写入文件,路径/图片名字OutputStream outputStream = new FileOutputStream(realPath+"/"+name);//将文件写入到images中IOUtils.copy(inputStream, outputStream);//关流inputStream.close();outputStream.close();fileItem.delete();//根据对象保存路径~(相对路径),一般数据库中的图片字段都是相对路径.总之添加数据时根据你数据库图片字段的格式添加map.put("productImg", "images/"+name);}}//封装数据,相当于将表单提交的数据一个一个set进去.导入上述的beanutils包就能调用BeanUtils.populate(product, map);//将表单没有提交到的数据封装到实体中,这个根据你设置的字段来封装product.setProductSaleCount(0);//刚上架的商品销售量位0product.setProductState(0);//刚上架的商品状态为商品审核中设置为0product.setIsHot(0);//刚上架的商品状态默认不是热门商品设置为1product.setIsOpenStore(0);;//刚上架的商品状态店铺上下架状态为0//调用service的添加商品方法proService.addProduct(product);//重定向跳转到列表显示页面response.sendRedirect(request.getContextPath()+"/storeServlet?op=productmanage&storeid="+id);
其中涉及到的一个比较有意思的知识点fileitem对象,有兴趣的可以自己去了解.

JSP完成添加商品时的图片上传相关推荐

  1. 1688以图搜货接口,1688图片搜索接口,拍立淘接口,以图搜商品接口,图片上传搜索商品接口,按图搜索接口代码对接参数说明

    一.接口说明: 有两种方式可以通过图片url地址请求获取到图片上的相似商品列表,然后再次拿到商品详情. 点击获取key和secret 方式一:可以用淘宝/1688平台外的图片进行先上传然后再搜索商品的 ...

  2. 激活时显示图片上传资源服务器失败,720全景图上传时提示“切图失败”的处理办法...

    前段时间服务器被攻击,之前的网站都受到影响.全景系统也是如此,重新搞了之后总感觉不如之前的好用,早上在测试的时候,在后台上传素材,页面提示"切图失败",然后就卡在服务器处理页面不动 ...

  3. uniapp---------订单多商品评价及图片上传、删除功能

    效果图如下: 前端代码如下: <template><view id="orderPj"><view class="Box" v-f ...

  4. [iOS]服务器使用php时多图片上传AFNetworking的设置

    与java服务器不同 服务器使用php时 [formData appendPartWithFileData:UIImageJPEGRepresentation(_PhArray[i], 0.1f) n ...

  5. 【报错笔记】关于图片上传时的路径问题

    在图片上传时将图片上传到本地磁盘后 如下将图片保存到了D盘下 因此在jsp页面中读取对应图片时,需要在tomcat中配置相关信息. 在jsp页面中图片路径src中使用虚拟路径加数据库中图片名称就可以将 ...

  6. html5 图片上传,支持图片预览、压缩、及进度显示,兼容IE6+及标准浏览器

    原文:html5 图片上传,支持图片预览.压缩.及进度显示,兼容IE6+及标准浏览器 以前写过上传组件,见 打造 html5 文件上传组件,实现进度显示及拖拽上传,兼容IE6+及其它标准浏览器,对付一 ...

  7. jeefast使用Mybatis进行图片上传

    在jeefast中找到配置虚拟目录的地方 看一下是否继承了WebMvcConfigurerAdapter 接口,如果继承的话就重写配置虚拟目录的方法 @Overridepublic void addR ...

  8. CKEditor4.7之使用实现图片上传功能

    步骤 1.下载CKEditor4.7 官网下载CKEditor,基础包,标准包,全包选择其一.地址:https://ckeditor.com/ckeditor-4/download/ 2.将文件CKE ...

  9. CentOS7设置静态IP、搭建单机版FastDFS图片服务器、使用FastDFS-Client客户端进行简单测试、实现图片上传、实现商品添加修改删除

    CentOS7设置静态IP.搭建单机版FastDFS图片服务器.使用FastDFS-Client客户端进行简单测试.实现图片上传.实现商品添加修改删除 CentOS7设置静态IP而且还可以上网 192 ...

  10. 淘淘商城第三天—完成商品添加功能 商品类目选择 图片上传 图片服务器搭建 kindEditor富文本编辑器的使用 商品添加功能

    1.实现商品类目选择功能 1.1需求 在商品添加页面,点击"选择类目"显示商品类目列表: 请求初始化树形控件的url:/item/cat/list 1.2 EasyUI tree数 ...

最新文章

  1. 牛腩44 整合登陆页 RequiredFieldValidator 和 ValidationSummary 以及 asp.net 自带的MD5 加密...
  2. mysql 多行转换多列 列不确定_多行转多列,行数和列数不确定
  3. Linq 入门系列 [OfType,ToArray,ToList,ToDictionary]
  4. 把图片做成html,HTML5实践-图片设置成灰度图
  5. Flask 实战:如何从零开发“知乎”
  6. 8086条件转移指令JE,JZ
  7. 按季度分类汇总_2019年纯碱行业相关上市公司季报 与半年报情况汇总
  8. ubuntu下的linux怎样备份文件,Ubuntu系统如何备份还原?Ubuntu系统备份还原教程
  9. CentOS 下安装JDK
  10. [转载]百分之百自动登录2345王牌技术员联盟源代码(delphi)
  11. Jquery 取色器
  12. php代码加密工具xend,PHP代码加密工具 Xend v3.0.1
  13. Codeforces 853 A. Planning
  14. android测试类--Method setUp in android.test.AndroidTestCase not mocked
  15. Unity Android 接入高德定位SDK
  16. 免费linux脚本下载地址,shell脚本 下载|Linux shell脚本 v免费版下载 - D9下载站
  17. C++ opengl 漫反射和镜面反射参数
  18. apollo 高精地图解析
  19. NIST测试结果分析
  20. RAID 容量计算器

热门文章

  1. 遥感物理相关名词解释
  2. 山东理工ACM 1110 C语言实验——Hello World!(printf练习)
  3. 编程 100个训练题目
  4. 微处理器和由微型计算机构成,微处理器的组成
  5. 美国计算机硕士毕业在美薪资,美国计算机硕士留学费用全都在这了!
  6. 市场爆发在即 分布式电站运维出路何在?
  7. 三天打鱼两天晒网问题
  8. U3D中ShaderForge插件使用系列教程之一
  9. 【C语言】OJ题:printf函数的返回值
  10. 爬虫:Python爬取煎蛋网图片