在页面实现添加上传商品图片功能。

springmvc中对多部件类型解析

在页面form中提交enctype="multipart/form-data"的数据时,需要springmvc对multipart类型的数据进行解析。
    在springmvc.xml中配置multipart类型解析器。

 <!-- 文件上传 --><bean id="multipartResolver"class="org.springframework.web.multipart.commons.CommonsMultipartResolver"><!-- 设置上传文件的最大尺寸为5MB --><property name="maxUploadSize"><value>5242880</value></property></bean>

同时,需要将解析器enctype="multipart/form-data"配置到需要解析的界面

<form id="itemForm" action="${pageContext.request.contextPath }/items/editItemsSubmit.action" method="post" enctype="multipart/form-data">

添加上传图片的jar包

上边的解析内容部使用下面的jar包进行图片上传:

创建图片虚拟目录存储图片

两种配置方法

1、通过图形界面配置

打开项目,双击tomcat服务,选择Modules,在Web Modules界面中,打开Add External Web Modile... ,弹出Add Web Module窗口,通过Browse...选择图片存放的虚拟目录对应的本地目录,在Path中填写图片存放的子目录。如下图过程:

2、直接修改tomcat的配置

打开tomcat本地文件,在conf文件下有server.xml文件,添加虚拟目录:

<Context docBase="G:\springmvc\picture" path="/pic" reloadable="false"/>

添加结果

添加完成后,查看是否可用

启动项目,访问地址:http://localhost:8080/pic/图片名称,例如:http://localhost:8080/pic/SelfieCity_20160922132017_save.jpg,访问结果如下:

注意:在图片虚拟目录中,为了提高工作效率,一定将图片目录分级创建(提高i/o性能),一般我们采用按日期(年、月、日)进行分级创建。

上传图片代码

jsp页面

<tr><td>商品图片</td><td><c:if test="${items.pic !=null}"><img src="/pic/${items.pic}" width=100 height=100/><br/></c:if><input type="file"  name="items_pic"/> </td>
</tr>

controller方法

注意以下红框中内容:

     @RequestMapping("/editItemsSubmit")public String editItemsSubmit(Model model,HttpServletRequest request,Integer id,@ModelAttribute("items") @Validated(value={ValidGroup1.class}) ItemsCustom itemsCustom,BindingResult bindingResult,MultipartFile items_pic   //接收商品图片)throws Exception {// 获取校验错误信息if (bindingResult.hasErrors()) {// 输出错误信息List<ObjectError> allErrors = bindingResult.getAllErrors();for (ObjectError objectError : allErrors) {// 输出错误信息System.out.println(objectError.getDefaultMessage());}// 将错误信息传到页面model.addAttribute("allErrors", allErrors);//可以直接使用model将提交pojo回显到页面model.addAttribute("items", itemsCustom);// 出错重新到商品修改页面return "items/editItems";}//原始名称String originalFilename = items_pic.getOriginalFilename();//上传图片if(items_pic != null && originalFilename!=null && originalFilename.length()>0){//存储图片的物力路径String pic_path="G:\\springmvc\\picture\\";//新的图片名称String newFileName = UUID.randomUUID() + originalFilename.substring(originalFilename.lastIndexOf("."));//新图片File newFile = new File(pic_path+newFileName);//将内存中的数据写入磁盘items_pic.transferTo(newFile);//将新图片名称写到itemsCustom中itemsCustom.setPic(newFileName);}//调用service更新商品信息,页面需要将商品信息传到此方法itemsService.updateItems(id, itemsCustom);return "success";}

测试

通过以上步骤,图片上传的内容已经完善,使用修改功能对上传图片进行测试

进入如下页面,选择本地图片,提交:

经过代码调试,查看上传图片是否存在。

最后,查看图片上传是否成功:

一:查看图片的虚拟目录中是否已经存在刚刚上传的图片;

二:查看数据库表中picture字段是否为刚上传图片文件名。

小编执行成功,并测试完成。

【springmvc】——上传图片相关推荐

  1. SpringMVC 上传图片保存到服务器 同时更改图片名称保存至数据库

    @RequestMapping("upload") public void upload(@RequestParam(value = "file", requi ...

  2. springMVC上传图片并压缩

    今天IPad客户端突然找到我说IPad界面加载图片时内存暴增,需要我把图片压缩一下,在看了一些博客之后决定用谷歌的Thumbnailator,为啥? 压缩像素可调节.一行代码.压缩快,废话不多说来看看 ...

  3. JAVAWEB开发之SpringMVC详解(二)——高级开发、数据回显、参数绑定集合、图片上传、json交互、validation校验、异常处理、RESTful支持、拦截器

    知识回顾 springmvc框架 用户请求url到DispatcherServlet前端控制器,相当于中央调度器,降低系统各组件之间的耦合度. DispatcherServlet前端控制器通过Hand ...

  4. springmvc深入浅出(备java基础,javaee课程,struts同类)-任亮-专题视频课程

    springmvc深入浅出(备java基础,javaee课程,struts同类)-11045人已学习 课程介绍         Spring web mvc架构.springmvc入门程序.非注解处理 ...

  5. 基于ssm的上传图片

    原创地址:http://blog.csdn.net/qq_33764491/article/details/77440180 第一次接触上传图片,自己还是很头疼的.大佬的帮助和网上的资料着实帮了我不少 ...

  6. 把php数据转成json格式转换,php将从数据库中获得的数据转换成json格式并输出的方法...

    php将从数据库中获得的数据转换成json格式并输出的方法 如下所示: header('content-type:application/json;charset=utf8'); $results = ...

  7. 基于SSM+MySQL+BootStrap+JSP的大学生校园二手市场交易系统(附论文)

    项目运行截图 一.项目摘要 目前社会发展迅速,人们的消费水平随之提高,有时难免会有冲动消费或者一些买来的东西使用次数很少的现象,如果对这些物品不及时处理,就会造成浪费资源的现象,与保护环境的理念背道而 ...

  8. 【毕业设计】基于spring的校园二手交易系统

    文章目录 0 前言 1 项目简介 2 总体设计 2.1 用户功能 2.2 管理员功能 2.3 用户模块设计 2.3.1 用户登录/注册模块 2.3.2 发布与检索模块 2.3.3 核心交易模块 2.4 ...

  9. 关于CKEditor4.5.6的使用,自定义toolbar配置,上传图片案例(SpringMVC+MyBatis案例),自定义行高,去编辑器的中内容,将编辑器中内容设置到指定的位置等

     关于CKEditor的一个配置整理,改文件为config.js: 文件内容如下: /**  * @license Copyright (c) 2003-2016, CKSource - Fred ...

  10. springmvc学习笔记(17)-上传图片

    2019独角兽企业重金招聘Python工程师标准>>> springmvc学习笔记(17)-上传图片 标签: springmvc [TOC] 本文展示如何在springmvc中上传图 ...

最新文章

  1. 【Netty】NIO 通道 ( Channel ) 组件
  2. 估价分类不允许分离估价
  3. AAAI 2020 开源论文 | 一种针对图嵌入模型的受限黑盒对抗攻击框架
  4. iOS关于代理的理解
  5. 《人人都是产品经理》读后小结
  6. gitlab mr wip 怎么弄成_Gitlab基本管理(二)
  7. Android-更改字体(LED液晶数字字体)
  8. 服装店如何根据自身情况使用进销存软件?
  9. windows系统的定时任务
  10. 两行轨道根数norad_极客历史记录的本周:NORAD跟踪圣诞老人,第一个HTTP测试,巴贝奇诞辰...
  11. python tkinter库引用tkk_Python之tkinter:调用python库的tkinter带你进入GUI世界(一)——Jason niu...
  12. 游艺《修真》新五岳论剑活动开启
  13. 个人开发者支付接入方案——支付宝当面付
  14. %02 java_02 java语言基础
  15. 2021-2027全球与中国NFC嵌体市场现状及未来发展趋势
  16. 同步复制使用系列三-TwoWay
  17. C语言-->筛选法和选择排序
  18. python——socket编程
  19. 这几个使用电脑的小技巧分享给你
  20. 浏览器未安装flash插件

热门文章

  1. vintage、滚动率等相关指标介绍
  2. 华北科技学院计算机专业录取分数线,华北科技学院2018年在河北省各专业录取分数线...
  3. python语言特点有哪些-python语言的特点(优缺点)总结
  4. 【TOML配置文件】配置文件我用TOML!人性化,少出错!
  5. Q4还没结束,我已看到2022年全球科技并购已近3000亿美元了
  6. android uevent_open_socket,android 6.0 healthd vold接收uevent
  7. 最受欢迎的网络安全文章50篇
  8. cf 923B Producing Snow
  9. linux下server命令,Linux基础命令
  10. ArcBlock ⑨ 月报 | 树立技术传播三大支柱 夯实全球开发者社区基础