注意:此文章是个人原创。希望有转载须要的朋友们标明文章出处,假设各位朋友们认为写的还好,就给个赞哈,你的鼓舞是我创作的最大动力。LinusZhu在此表示十分感谢,当然文章中如有纰漏。请联系linuszhu@163.com。敬请朋友们斧正。谢谢。

不知不觉已经把Spring的基础部分解说完了。所讲述的都是在项目中经经常使用到的东西。是经得住考验的。接下来的部分主要是要讲述使用SpringMVC进行的文件上传、处理Ajax请求、自己定义拦截器功能的实现,不多说了,首先解说文件上传部分,開始……

      主要过程例如以下:

1. 须要使用apache-commons下得上传组件。须要引入两个jar包:

apache-commons-fileupload.jar、apache-commons-io.jar

2.  在Springmvc-servlet.xml配置文件里。添加CommonsMultipartResoler配置。例如以下:

<bean id="multipartResolver"

class="org.springframework.web.multipart.commons.CommonsMultipartResolver" >

<property name="defaultEncoding" value="gbk"/> <!-- 默认编码 (ISO-8859-1) -->

<property name="maxInMemorySize" value="10240"/> <!-- 最大内存大小 (10240)-->

<property name="uploadTempDir" value="/upload/"/> <!-- 文件暂存地址,不是终于的文件文件夹 -->

<property name="maxUploadSize" value="-1"/> <!-- 最大文件大小,-1为无限止(-1) -->

</bean>

3.创建upload.jsp页面,内容例如以下:

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<title>SpringMVC文件上传</title>

</head>

<body bgcolor="#d6e3f6">

<form action="upload.do" method="post" enctype="multipart/form-data">

<input type="file" name="file" />

<br/><input type="submit" />

</form>

</body>

</html>

4. 建立控制器,代码例如以下:

package  com.spring.controller;

import java.io.File;

import java.util.Date;

import javax.servlet.ServletContext;

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.context.ServletContextAware;

import org.springframework.web.multipart.commons.CommonsMultipartFile;

@Controller

public  class  FileUploadController  implements  ServletContextAware {

private ServletContext servletContext;

@Override

public void setServletContext(ServletContext context) {

this.servletContext  = context;

}

//@RequestParam("file")一定要有

@RequestMapping(value="/upload.do")

public  String handleUploadData(@RequestParam("file")  CommonsMultipartFile file){

if (!file.isEmpty()) {

//获取本地存储路径

String path = this.servletContext.getRealPath("/uploadFile/");        System.out.println(path);

String fileName = file.getOriginalFilename();

String fileType = fileName.substring(fileName.lastIndexOf("."));

System.out.println(fileType);

//新建一个文件

File file2 = new File(path,new Date().getTime() + fileType);     try {

//将上传的文件写入新建的文件里

file.getFileItem().write(file2);

} catch (Exception e) {

e.printStackTrace();

return "redirect:upload_error.jsp";

}

return "redirect:upload_ok.jsp";

}else{

return "redirect:upload_error.jsp";

}

}

}

5. 建立upload_ok.jsp页面

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

</head>

<body>

<h1>上传文件成功</h1>

</body>

</html>

6. 建立upload_error.jsp页面

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

</head>

<body>

<h1>上传文件失败</h1>

</body>

</html>

7. 项目执行測试:

输入地址:http://localhost:8081/SpringMVC02/upload.jsp ,选择要上传文件,例如以下:

点击提交。上传成功返回成功界面:

进入项目公布后的上传文件路径(uploadFile目录以下),会发现上传的文件,例如以下:

SpringMVC经典系列-12基于SpringMVC的文件上传---【LinusZhu】的更多相关文章

  1. python 全栈开发,Day75(Django与Ajax,文件上传,ajax发送json数据,基于Ajax的文件上传,SweetAlert插件)

    昨日内容回顾 基于对象的跨表查询 正向查询:关联属性在A表中,所以A对象找关联B表数据,正向查询 反向查询:关联属性在A表中,所以B对象找A对象,反向查询 一对多: 按字段:xx book ----- ...

  2. Django与Ajax,文件上传,ajax发送json数据,基于Ajax的文件上传,SweetAlert插件

    一.Django与Ajax AJAX准备知识:JSON 什么是 JSON ? JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻 ...

  3. django 12天(跨域,文件上传,下载,cookie,session)

    django 12天(跨域,文件上传,下载) 跨域 什么是跨域 1.协议不同 2.端口不同 3.主机不同 如何解决跨域 1.安装django-cors-headers模块 2.在settings.py ...

  4. SpringMVC经典系列-15对SpringMVC的总结---【LinusZhu】

    注意:此文章是个人原创,希望有转载须要的朋友们标明文章出处,假设各位朋友们认为写的还好,就给个赞哈.你的鼓舞是我创作的最大动力,LinusZhu在此表示十分感谢,当然文章中如有纰漏,请联系linusz ...

  5. SpringMVC中采用简洁的配置实现文件上传

    文件上传我们一般会有两种策略,一种是通过IO流上传,还有一种是通过表单上传,其实这两种在客户端实现起来都是很简单的,在服务端处理会略有差别,个人感觉IO上传代码简单,但是也有很多硬伤,还是表单上传更合 ...

  6. springmvc环境下使用ajaxfileupload.js进行文件上传

    controller: /* #region */ @RequestMapping(produces = "text/html;charset=UTF-8", value = &q ...

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

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

  8. 基于jsp的文件上传和下载

    参考: 一.JavaWeb学习总结(五十)--文件上传和下载 此文极好,不过有几点要注意: 1.直接按照作者的代码极有可能listfile.jsp文件中 <%@taglib prefix=&qu ...

  9. 基于tornado的文件上传demo

    这里,web框架是tornado的4.0版本,文件上传组件,是用的bootstrap-fileinput. 这个小demo,是给合作伙伴提供的,模拟APP上摄像头拍照,上传给后台服务进行图像识别用,识 ...

随机推荐

  1. 【Tomcat】java.lang.OutOfMemoryError

    1.Java heap space Heap size 昨天在服务器上面部署项目,之前服务器上面已经有一个项目的了. 然后我再部署一个,上去跑了之后,居然内存溢出了. 好吧,内存溢出就调一下,调了之后 ...

  2. 五张图概括 什么是 ASP 、 ASP.NET (Web Pages,Web Forms ,MVC )

    当你看懂下面这五张图,我相信你对于学习.NET Web开发路线将不陌生!                                               来源: http://www.w3 ...

  3. PHP5新语法学习

    Final标记方法,使其不能被子类重载:Final标记类,使其不能被继承. 连续引用返回的对象$obj->method()->method2(); __autoload()使用未定义的类的 ...

  4. CodeForces 225C Barcode DP

    也是一道dp ,想到了就会觉得很巧妙 矩阵中只有白块和黑块,要求repaint后满足下述条件: 每列一种颜色 根据输入范围x, y 要求条纹宽度在[x, y] 之间 数据范围: n, m, x and ...

  5. docker学习笔记13:Dockerfile 指令 WORKDIR介绍

    Dockerfile中的WORKDIR指令用于指定容器的一个目录, 容器启动时执行的命令会在该目录下执行. 相当于设置容器的工作目录了.我们来看一个dockerfile文件 #test FROM ub ...

  6. 基于visual Studio2013解决C语言竞赛题之0507筛选素数

     题目

  7. 模拟红外协议C程序——接收模块

    目的:方便程序的调试,提供效率,减少工作累,可以不在线调试编程时显示实时数据,特别产品不带显示的或者MCU是OPT的,有很大的帮助. 过程:将要看的数据发送出来,另一个板(一个带有显示的就OK了,显示 ...

  8. 给刚通过51入门的新人讲讲S12(MCS12XS128)与51的差别

    MCS51是keil也对应地做好了非常多,也就是有非常多对你而言是透明的,是你不必关心的,你所要接触的寄存器数量也非常小,在这个时候你很多其它是写函数,仅仅只是针对这个平台写C程序比在PC上写C控制台 ...

  9. freemarker报错之八

    1.错误描写叙述 freemarker.core.ParseException: Encountered "string" at line 21, column 21 in typ ...

  10. 用tomcat搭建web服务器

    链接地址:http://www.blogjava.net/qingshow/archive/2010/01/17/309846.html qingshow “不积跬步无以至千里,不积小流无以成江海”. ...