Java EE - Spring MVC 文件上传
发布日期:2021-06-30 19:50:25 浏览次数:2 分类:技术文章

本文共 4332 字,大约阅读时间需要 14 分钟。

问题导读:

1. 如何使用Commons FileUpload Commons IO 上传文件?

2. 如何利用Servlet 3.0 容器内置功能上传文件?

解决方案:

文件上传

Commons FileUpload

  • 对于Servlet 3.0 以下的Servlet 容器我们需要使用 还需要
  • 在Spring MVC 配置文件中定义multipartResolver bean
  • bean 中添加一个 为 List<MultipartFile> 的属性
//产品图片	private List
images; public List
getImages() { return images; } public void setImages(List
images) { this.images = images; }
  • 我们可以来看看Tomcat最近几个版本分别支持的JavaEE规范。
------------------------
Tomcat 6: Servlet 2.5、JSP 2.1、EL 2.1
Tomcat7: Servlet 3.0、JSP 2.2、EL 2.2
Tomcat8: Servlet 3.1、JSP 2.3、EL 3.0
------------------------
除此以外,Tomcat 8还支持像Java WebSocket 1.0这样的新规范。

控制器

package controller;import java.io.File;import java.io.IOException;import java.util.ArrayList;import java.util.List;import javax.servlet.http.HttpServletRequest;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.ModelAttribute;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.multipart.MultipartFile;import bean.Product;@Controllerpublic class ProductController {	@RequestMapping(value="/product_input")	public String inputProduct(Model model) {		model.addAttribute("product",new Product());		return "ProductForm";	}	@RequestMapping(value="/product_save")	public String saveProduct(HttpServletRequest servletRequest,			@ModelAttribute("product") Product product,Model model) {				/*		 * 将上传的图片保存在相应目录下		 */		// 得到文件		List
images = product.getImages(); List
imagesNames = new ArrayList
();// System.out.println(images.size()); //判断 images 的 list 中是否有图片 if(null != images && !images.isEmpty()) { // 遍历 list for(MultipartFile image : images) { // 返回客户端本地驱动器中的初始文件名 String imageName = image.getOriginalFilename();// imagesNames.add(imageName); System.out.println(imageName); // 创建 file // Tomcat 的WebApps目录下该资源路径下的xxx File imageFile = new File(servletRequest.getServletContext().getRealPath("WEB-INF/image/"),imageName); // 保存文件 try { image.transferTo(imageFile); } catch (IllegalStateException | IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } return "ProductDetails"; }}

配置文件

JSP 页面

ProductForm

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%>
添加商品
添加商品

ProductDetails

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>    <%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%>
商品详情

该商品已经保存

详细信息
商品名称:${product.name }
商品描述:${product.description }
商品价格:${product.price }

商品图片

  1. ${image.originalFilename }

测试

Servlet 3.0 以上版本web容器上传文件

Servlet 3.0 以上版本web容器可以不使用Commons FileUpLoad 和Commons IO 元件

配置文件

web.xml

springmvc
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:conf/springmvc-config.xml
1
20000000
400000000
1000000
springmvc
/

springmvc-config.xml

多部分解析器:org.springframework.web.multipart.support.StandardServletMultipartResolver

测试

转载地址:https://lipenglin.blog.csdn.net/article/details/52763458 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Linux - 常用命令(长期更新)
下一篇:Jquery - 属性操作

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年05月03日 15时26分47秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

IEEE与APA引用格式 2019-04-30
research gap 2019-04-30
pytorch训练cifar10数据集查看各个种类图片的准确率 2019-04-30
Python鼠标点击图片,获取点击点的像素坐标 2019-04-30
路径规划(一) —— 环境描述(Grid Map & Feature Map) & 全局路径规划(最优路径规划(Dijkstra&A*star) & 概率路径规划(PRM&RRT)) 2019-04-30
神经网络调参实战(四)—— 加深网络层次 & 批归一化 batch normalization 2019-04-30
数据挖掘与数据分析(三)—— 探索性数据分析EDA(多因子与复合分析) & 可视化(1)—— 假设检验(μ&卡方检验&方差检验(F检验))&相关系数(皮尔逊&斯皮尔曼) 2019-04-30
RRT算法(快速拓展随机树)的Python实现 2019-04-30
路径规划(二) —— 轨迹优化(样条法) & 局部规划(人工势能场法) & 智能路径规划(生物启发(蚁群&RVO) & 强化学习) 2019-04-30
D*算法 2019-04-30
强化学习(四) —— Actor-Critic演员评论家 & code 2019-04-30
RESTful API 2019-04-30
优化算法(四)——粒子群优化算法(PSO) 2019-04-30
数据挖掘与数据分析(三)—— 探索性数据分析EDA(多因子与复合分析) & 可视化(2)——回归分析(最小二乘法&决定系数&残差不相关)&主成分分析&奇异值分解 2019-04-30
数据在Oracle中的存储 2019-04-30
优化算法(五)—人工蜂群算法Artificial Bee Colony Algorithm(ABC) 2019-04-30
轨迹规划 trajectory planning 2019-04-30
AGV自动导引运输车 2019-04-30
Trie树(字典树) 2019-04-30
COMP7404 Machine Learing——Logistic Regression 2019-04-30