Spring1 推出的时候可以说是不小的颠覆了J2EE 的开发,彻底把EJB打败,将J2EE开发进行简化,
Spring2 推出以后完美的与多种开源框架与服务器的结合,让你对其拥抱的更紧,Spring变成了一个工具箱,一应俱全,
Spring3 推出以后让开发真正的得到简单化,并且Spring3支持REST风格,采用Spring3进行开发,简单的有点过分了

如果说我在吹嘘,那么1行有效的代码就可以完成B/S模式的文件上传,呵呵。废话少说,先看代码:
清单1:
springmvc-servlet.xml

在springmvc-servlet.xml文件中添加以下代码:
    <bean id="multipartResolver" 
           class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
         <!– 设置上传文件大小的参数 –>
        <property name="maxUploadSize" value="1000000"/>
       </bean>

清单2:
web.xml

在web.xml文件中添加以下代码:

<servlet>   
      <servlet-name>springmvc</servlet-name>   
      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>   
      <load-on-startup>2</load-on-startup>   
   </servlet>   
 <servlet-mapping>   
     <servlet-name>springmvc</servlet-name>   
     <url-pattern>/</url-pattern>   
 </servlet-mapping>

清单3
upload.html

建立一个普通的html文件,加入以下代码:

<form method="post" action="/SpringREST/image/imageUpload" enctype="multipart/form-data">
    <input type="file" name="file" />
    <input type="submit"  value="upload"/>
</form>

清单4
ImageController.java

package com.javabloger.springrest.action;

import java.io.FileOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import com.javabloger.springrest.dao.ImageDAO;

@Controller
@RequestMapping("/image")

public class ImageController {
    @RequestMapping("/imageUpload")   
    public String processImageUpload(
                @RequestParam() MultipartFile file    // 关键就是这句话起了作用
                ) throws Exception {
            if (!file.isEmpty()) {
                byte[] bytes = file.getBytes();
                FileOutputStream fos = new FileOutputStream("d:/upload/"+file.getOriginalFilename()); // 上传到写死的上传路径
                fos.write(bytes);  //写入文件
              } 
            System.out.println ("name: "+file.getOriginalFilename()+"  size: "+file.getSize() );  // 打印文件大小和文件名称
             return "redirect:/image";   // 跳转你所指定的页面名称
            }
}

通过上一篇文章“Spring3 REST MVC框架,提速你的Web开发”在结合本篇文章的代码,我相信你也能很快的感受到Spring3的魅力。让我再熟悉一段时间,我会去看看Spring3中的源代码,我非常的好奇、非常的有兴趣。

Spring3文件上传,提速你的Web开发的更多相关文章

  1. 上传漏洞科普[1]-文件上传表单是Web安全主要威胁

    为了让最终用户将文件上传到您的网站,就像是给危及您的服务器的恶意用户打开了另一扇门.即便如此,在今天的现代互联网的Web应用程序,它是一种 常见的要求,因为它有助于提高您的业务效率.在Facebook ...

  2. 19、文件上传与下载/JavaMail邮件开发

    回顾: 一. 监听器 生命周期监听器 ServletRequestListener HttpSessionListener ServletContextListener 属性监听器 ServletRe ...

  3. Office文件上传自动生成缩略图-C#开发

    原文: http://www.knowsky.com/898407.html 上传office文件的时候需要将首页自动截图,用于显示文件列表的时候将文件第一页缩略图展示给用户.实现的方式有多种,这里给 ...

  4. javaEE(14)_文件上传下载

    一.文件上传概述 1.实现web开发中的文件上传功能,需完成如下二步操作: •在web页面中添加上传输入项•在servlet中读取上传文件的数据,并保存到本地硬盘中. 2.如何在web页面中添加上传输 ...

  5. [转]利用 Commons-Fileupload 实现文件上传

    转载 Java Web开发人员可以使用Apache文件上传组件来接收浏览器上传的文件,该组件由多个类共同组成,但是,对于使用该组件来编写文件上传功能的Java Web开发人员来说,只需要了解和使用其中 ...

  6. SpringMVC文件上传下载(单文件、多文件)

    前言 大家好,我是bigsai,今天我们学习Springmvc的文件上传下载. 文件上传和下载是互联网web应用非常重要的组成部分,它是信息交互传输的重要渠道之一.你可能经常在网页上传下载文件,你可能 ...

  7. WEB文件上传之apache common upload使用(一)

    文件上传一个经常用到的功能,它有许多中实现的方案. 页面表单 + RFC1897规范 + http协议上传 页面控件(flash/html5/activeX/applet) + RFC1897规范 + ...

  8. web项目的文件上传和 下载

    文件上传和下载在web应用中非常普遍,要在jsp环境中实现文件上传功能是非常容易的,因为网上有许多用Java开发的文件上传组件,本文以commons-fileupload组件为例,为jsp应用添加文件 ...

  9. springMVC学习记录3-拦截器和文件上传

    拦截器和文件上传算是springmvc中比较高级一点的内容了吧,让我们一起看一下. 下面先说说拦截器.拦截器和过滤器有点像,都可以在请求被处理之前和请求被处理之到做一些额外的操作. 1. 实现Hand ...

随机推荐

  1. 对象的克隆(clone方法)

    1.深拷贝与浅拷贝 浅拷贝是指拷贝对象时仅仅拷贝对象本身(包括对象中的基本变量),而不拷贝对象包含的引用指向的对象.深拷贝不仅拷贝对象本身,而且拷贝对象包含的引用指向的所有对象. 2.深拷贝和浅拷贝的 ...

  2. jQuery EasyUI学习二

    1.   课程介绍 1.  Datagrid组件(掌握) 2.  Dialog.form组件(掌握) 3. Layout.Tabs;(掌握) Datagrid组件 2.1.  部署运行pss启动无错 ...

  3. 30天自制OS(linux环境)-day1

    30天自制OS(linux环境)--第一天 我是在CentOS的环境上面实现的,使用ubuntu的环境也是类似的 第一步:因为要对二进制文件进行编辑,所以安装二进制编辑器hexedit(当然其他的也可 ...

  4. 循序渐进VUE+Element 前端应用开发(31)--- 系统的日志管理,包括登录日志、接口访问日志、实体变化历史日志

    在一个系统的权限管理模块中,一般都需要跟踪一些具体的日志,ABP框架的系统的日志管理,包括登录日志.接口访问日志.实体变化历史日志,本篇随笔介绍ABP框架中这些日志的管理和界面处理. 1.系统登录日志 ...

  5. Let’s Encrypt 通配符证书,泛域名证书申请配置

    首先你可以查看下官方提供的支持申请通配符证书的客户端列表:https://letsencrypt.org/docs/client-options/. 参考链接:https://github.com/N ...

  6. 关于ajax 异步文件上传 node 文件后台接口

    <body> <img src="" alt="" id="img"> <input type="f ...

  7. Nginx安装,开箱即用?

    一.官网 首页:http://nginx.org/ 下载地址:http://nginx.org/download 安装文档:http://nginx.org/en/docs/install.html ...

  8. 深入了解MySQL主从复制的原理

    欢迎微信关注「SH的全栈笔记」 0. 主从复制 首先主从复制是什么?简单来说是让一台MySQL服务器去复制另一台MySQL的数据,使两个服务器的数据保持一致. 这种方式与Redis的主从复制的思路没有 ...

  9. python3实现计算器

    实验内容 1.简单计算器的设计 请设计简单的"加减乘除"计算器并从键盘上输入数据进行计算 数字的加减乘除,input返回的结果是str类型的,通过截取字符串中的运算符,来提取数字, ...

  10. pymysql模块使用介绍

    pymysql ​ 我们要学的pymysql就是用来在python程序中如何操作mysql,本质上就是一个套接字客户端,只不过这个套接字客户端是在python程序中用的,既然是客户端套接字,应该怎么用 ...