这一节介绍SpringMVC对文件上传的支持,该功能支持需要使用到两个jar包:cmmons-fileupload-1.2.2.jar和commons-io-2.1.jar。

  在controller类中添加输入参数MultipartFile,通过HttpServletRequest来获取文件拷贝的真实路径,对应代码如下所示:

@RequestMapping(value = "/add", method = RequestMethod.POST)
public String add(@Validated Users user, BindingResult br,Model model, MultipartFile attach,HttpServletRequest req) throws IOException {// 一定要紧跟Validate之后写验证结果类
if (br.hasErrors()) {
model.addAttribute("user", user);
// 如果有错误直接跳转到add视图
return "user/add";
} String realpath = req.getSession().getServletContext().getRealPath("/resources/upload"); File f = new File(realpath+"/"+attach.getOriginalFilename());
FileUtils.copyInputStreamToFile(attach.getInputStream(),f); users.put(user.getUsername(), user);
return "redirect:/user/users";
}

  在前台页面添加input标签,设置type属性为file,并且把提交enctype属性值设置为multipart/format-data,对应add.jsp代码如下所示:

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="sf" uri="http://www.springframework.org/tags/form" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 此时没有写action,直接提交会提交给/add -->
<!-- 将表单中的值添加到modelAttribute的属性值user中 -->
<sf:form method="post" modelAttribute="user" enctype="multipart/form-data">
Username:<sf:input path="username"/><sf:errors path="username"/><br/>
Password:<sf:password path="password"/><sf:errors path="password"/><br/>
Nickname:<sf:input path="nickname"/><br/>
Email:<sf:input path="email"/><sf:errors path="email"/><br/>
Attach:<input type="file" name="attachs"/><br/>
<input type="submit" value="添加用户"/>
</sf:form>
</body>
</html>

  在hello-servlet.xml文件中设置文件上传需要的multipartReslver,对应代码如下所示:

<!-- 设置multipartResolver才能完成文件上传 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="5000000"></property>
</bean>

注:此处在前台add.jsp页面中上传文件的name属性值必须与controller类中的文件名对应的入参名称保持一致。

springMVC入门-09的更多相关文章

  1. SpringMVC札集(01)——SpringMVC入门完整详细示例(上)

    自定义View系列教程00–推翻自己和过往,重学自定义View 自定义View系列教程01–常用工具介绍 自定义View系列教程02–onMeasure源码详尽分析 自定义View系列教程03–onL ...

  2. 【Spring】SpringMVC入门示例讲解

    目录结构: // contents structure [-] SpringMVC是什么 Spring MVC的设计原理 SpringMVC入门示例 1,复制Jar包 2,Web.xml文件 3,My ...

  3. Spring+SpringMVC+MyBatis深入学习及搭建(十二)——SpringMVC入门程序(一)

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6999743.html 前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(十一)——S ...

  4. SpringMVC入门第二天

    SpringMVC第二天 1.   回顾 1.Springmvc介绍? Springmvc是Spring公司 2.Springmvc入门程序 第一步:Web工程 第二步:导Jar包 第三步:web.x ...

  5. 3.2.1 SpringMVC入门

    一. SpringMVC入门 1. MVC介绍 MVC全名 是Model View Controller, 是模型(model) - 视图(view) - 控制器(controller) 的缩写, 它 ...

  6. SpringMVC入门学习(二)

    SpringMVC入门学习(二) ssm框架 springMVC  在上一篇博客中,我简单介绍了一下SpringMVC的环境配置,和简单的使用,今天我们将进一步的学习下Springmvc的操作. mo ...

  7. SpringMVC入门学习(一)

    SpringMVC入门学习(一) ssm框架 spring  SpringMVC是一个Java WEB框架,现在我们知道Spring了,那么,何为MVC呢? MVC是一种设计模式,其分为3个方面 mo ...

  8. springMVC入门(一)

    1.   SpringMVC入门 1.1SpringMVC是什么 Spring web mvc和Struts2都属于表现层的框架,它是Spring框架的一部分,我们可以从Spring的整体结构中看得出 ...

  9. SpringMVC.入门篇《二》form表单

    SpringMVC.入门篇<二>form表单 项目工程结构: 在<springmvc入门篇一.HelloWorld>基础上继续添加代码,新增:FormController.ja ...

随机推荐

  1. VMware里Ubuntukylin-14.04-desktop的VMware Tools安装图文详解

    不多说,直接上干货! 总的来说,根据分为三个步骤. 步骤一: 点击 :虚拟机—–>安装VM tools 然后发现桌面会跳出如下问题: 客户机操作系统已将 CD-ROM 门锁定,并且可能正在使用 ...

  2. SearchView去掉下划线

    SearchView calSearchView = (SearchView) findViewById(R.id.sv_search_text); if (calSearchView != null ...

  3. Cacheable redis 宕机

    使用Cacheable注解Redis方法时,如果Redis服务器挂了,就直接抛出异常了, java.net.ConnectException: Connection refused: connect ...

  4. 软件级负载均衡器(LVS/HAProxy/Nginx)的特点简介和对比

    本文出自 “抚琴煮酒” 博客,出处http://andrewyu.blog.51cto.com/1604432/697466   现在网站发展的趋势对网络负载均衡的使用是随着网站规模的提升根据不同的阶 ...

  5. SpringMVC form 表单提交报400错误

    错误代码: HTTP Status 400 - type Status report message description The request sent by the client was sy ...

  6. SQL更改表架构

    修改SQL架构: ALTER SCHEMA 新架构 TRANSFER 旧架构.对象名称

  7. Springboot --- Spring Security (一)

      文章部分图片来自参考资料 问题 : Spring Security 内部实现的原理是什么 概述 Spring Security 是个安全框架,可以提供认证,防止网络功能等功能,可以结合 sprin ...

  8. Tuple解决在视图中通过razor获取控制器传递给视图的匿名对象的报错问题

    C#的编译器总是将匿名类型编译成internal的,当在视图中直接使用控制器传递的匿名对象时就会报错错误代码:控制器代码视图代码执行结果: ****************************** ...

  9. Idea生成Javadoc

    Idea tools菜单下:Generate Javadoc...,在弹出的对话框中选择指定的包或文件,也可滤掉指定的包或文件.如果有自定义的javadoc标签,则需要在other command l ...

  10. java单例模式的心得

    由于设计模式对于java高级开发人员来说是非常重要的,网上也有很多关于设计模式的文章,博客等.所以,首先我对相对简单的单例模式做一个简单的总结. 一.实现方式 单例模式的实现方式有3种,分别是饿汉式, ...