文档章节

SpringMVC文件上传源码分析前言

乒乓狂魔
 乒乓狂魔
发布于 2015/02/15 17:51
字数 485
阅读 1387
收藏 39
点赞 0
评论 8

该如何研究SpringMVC的文件上传的源码呢?

研究源码并不是仅仅知道程序是怎样运行的,而应该从宏观的角度、不同的立场去看待问题。以SpringMVC文件上传的源码为例(麻雀虽小,五脏俱全),我们应该从下面几个方面去分析和研究:

#1 文件上传的基本规则:以什么样的格式来传输数据?

  • get or post ?
  • 与其他字段如何共存 ?
  • 多文件上传?

#2 站在apache fileupload的角度

  • apache fileupload目的是想写一个通用的解析文件上传的jar包,可以供所有的java web框架来方便使用
  • 它对外应该提供哪些API来方便外界使用?它又需要外界的哪些参数?
  • 哪些内容应该是它做的?
  • 哪些内容不应该由它来做?

#3 站在SpringMVC框架的角度

  • 它不再重复造轮子,使用其他一些jar包即可
  • 定义自己的方便用户使用的接口,如 MultipartFile、MultipartResolver,来屏蔽掉底层所使用的jar包
  • 需要将底层jar包和自己的接口结合起来

##所以不仅仅要理解程序,还需要理解整体的架构与思路,理清每一个角色的职责范围。如当需要限制上传的文件大小时,这一部分是谁的职责呢?

##如果我们都以上述方式要求自己,则源码分析才更有价值和意义,不然我们永远就只能处在类与类跳转的迷雾中

© 著作权归作者所有

共有 人打赏支持
乒乓狂魔
粉丝 979
博文 105
码字总数 271356
作品 0
长宁
程序员
加载中

评论(8)

爪哇小贩
爪哇小贩
哪个好用用哪个
乒乓狂魔
乒乓狂魔

引用来自“ldw4033”的评论

感觉说了和没说一样

引用来自“乒乓狂魔”的评论

的确没有实际的内容,而是看框架源码的思路,之后再来写实际的源码分析。对于我们这种刚开始看源码的人来说,经常困扰我们的场景就是点击一个类进去,就会有一大堆的类在等着我们,如果不理清职责的话,就会相当混乱

引用来自“ldw4033”的评论

可以把你的具体实现写出来,感觉就更好了

引用来自“乒乓狂魔”的评论

具体的源码分析正在写,今天应该可以完成了,到时候欢迎评判

引用来自“ldw4033”的评论

哥们。你这是放假了还是没有放假啊。这么勤劳,这点真是值得我学习啊。
今天放假,上班写博客呢
Marshmallow
Marshmallow

引用来自“ldw4033”的评论

感觉说了和没说一样

引用来自“乒乓狂魔”的评论

的确没有实际的内容,而是看框架源码的思路,之后再来写实际的源码分析。对于我们这种刚开始看源码的人来说,经常困扰我们的场景就是点击一个类进去,就会有一大堆的类在等着我们,如果不理清职责的话,就会相当混乱

引用来自“ldw4033”的评论

可以把你的具体实现写出来,感觉就更好了

引用来自“乒乓狂魔”的评论

具体的源码分析正在写,今天应该可以完成了,到时候欢迎评判
哥们。你这是放假了还是没有放假啊。这么勤劳,这点真是值得我学习啊。
黑土豆
黑土豆
我也醉了!
乒乓狂魔
乒乓狂魔

引用来自“ldw4033”的评论

感觉说了和没说一样

引用来自“乒乓狂魔”的评论

的确没有实际的内容,而是看框架源码的思路,之后再来写实际的源码分析。对于我们这种刚开始看源码的人来说,经常困扰我们的场景就是点击一个类进去,就会有一大堆的类在等着我们,如果不理清职责的话,就会相当混乱

引用来自“ldw4033”的评论

可以把你的具体实现写出来,感觉就更好了
具体的源码分析正在写,今天应该可以完成了,到时候欢迎评判
Marshmallow
Marshmallow

引用来自“ldw4033”的评论

感觉说了和没说一样

引用来自“乒乓狂魔”的评论

的确没有实际的内容,而是看框架源码的思路,之后再来写实际的源码分析。对于我们这种刚开始看源码的人来说,经常困扰我们的场景就是点击一个类进去,就会有一大堆的类在等着我们,如果不理清职责的话,就会相当混乱
可以把你的具体实现写出来,感觉就更好了
乒乓狂魔
乒乓狂魔

引用来自“ldw4033”的评论

感觉说了和没说一样
的确没有实际的内容,而是看框架源码的思路,之后再来写实际的源码分析。对于我们这种刚开始看源码的人来说,经常困扰我们的场景就是点击一个类进去,就会有一大堆的类在等着我们,如果不理清职责的话,就会相当混乱
Marshmallow
Marshmallow
感觉说了和没说一样
Controller中servletFileUpload.parseRequest(request)解析为空

原因分析 首先我们来看下Spring mvc 中文件上传的配置 方式二 这里springMVC 都为我们封装好成自己的文件对象了,转换的过程就在我们所配置的CommonsMultipartResolver这个转换器里面下面再来...

抢地主
2017/11/04
0
0
SpringMVC中servletFileUpload解析为空

原因分析 首先我们来看下Spring mvc 中文件上传的配置 再来看看Controller中使用 方式二 这里springMVC 都为我们封装好成自己的文件对象了,转换的过程就在我们所配置的CommonsMultipartResol...

rock912
2015/11/04
0
0
Spring源码分析之Bean的解析

作者: 一字马胡 转载标志 【2017-12-28】 更新日志 前言 Spring源码分析是一个系列,源码是Spring 4.X,本系列主要分析Spring的代码执行流程,过于细节的内容将不会涉及太多,主要是为了理清...

疼丸李白
2017/12/28
0
0
Quartz与Spring集成—— SchedulerFactoryBean的初始化分析

前言 Quartz是一个开源的定时调度框架,支持集群部署。我们可以通过其Java API来使用它,或者通过Spring来配置与管理,也可以结合使用两种方式。本文重点分析Quartz2.2.3与Spring4.3.0.RELEA...

哲别0
2017/11/05
0
0
SpringMVC源码解析(一)——初始化

前言 本系列文章顺延“Spring源码解析”,是在“父容器”创建完成后,对“子容器”(SpringMVC)创建,以及请求处理的解析。 源码解读 说起 SpringMVC,DispatcherServlet 应该是最熟悉的类之...

MarvelCode
06/26
0
0
深入理解Spring源码(一)-IOC容器的定位,载入,注册

前言:Spring源码继承,嵌套层次非常多,读起来非常容易晕,小伙伴们在看文章的时候一定要跟着文章的思路自己去源码里点一点,看一看,并且多看几次。就会越来越清晰。下面开始正题 1.Spring...

Meet相识_bfa5
05/01
0
0
SpringMVC文件上传接口设计与实现

1 前两篇文章的铺垫 1.1 SpringMVC文件上传源码分析前言(http://my.oschina.net/pingpangkuangmo/blog/378836) 1.2 apache fileupload源码分析(http://my.oschina.net/pingpangkuangmo/blog......

乒乓狂魔
2015/03/02
0
13
spring boot 源码分析(九) 事件机制 之 BootstrapApplicationListener

一、前言 前面我们从源码简单介绍了一下spring boot 的 事件机制的相关类。下面我们接着介绍一个事件相关的 监听器BootstrapApplicationListener 二、类图 三、源码分析 未完待续......

学海无涯_
06/05
0
0
spring mvc文件上传实现进度条

文件上传应该大部分人都接触过,一般都是基于commons-fileupload组件来实现,SpringMVC的文件上传功能也是在commons-fileupload组件提供的功能上面做了一些包装功能,使文件上传开发更容易方...

小天120
2014/02/10
0
20
spring boot 源码分析(一) 配置文件加载1

一、前言 之前写过几篇关于spring boot 的使用相关的文章。我们用一项技术,不能只停留到表面,要深究其源码是如何实现,这样我们才能在关键时刻游刃有余。所以从本章开始,将会写一些关于s...

学海无涯_
05/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

idea tomcat 远程调试

tomcat 配置 编辑文件${tomcat_home}/bin/catalina.sh,在文件开头添加如下代码。    CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=7829" Idea端配......

qwfys
今天
1
0
遍历目录下的文件每250M打包一个文件

#!/usr/bin/env python # -*- utf-8 -*- # @Time : 2018/7/20 0020 下午 10:16 # @Author : 陈元 # @Email : abcmeabc@163.com # @file : tarFile.py import os import tarfile import thr......

寻爱的小草
今天
1
0
expect同步文件&expect指定host和要同步的文件&构建文件分发系统&批量远程执行命令

20.31 expect脚本同步文件 expect通过与rsync结合,可以在一台机器上把文件自动同步到多台机器上 编写脚本 [root@linux-5 ~]# cd /usr/local/sbin[root@linux-5 sbin]# vim 4.expect#!/...

影夜Linux
今天
1
0
SpringBoot | 第九章:Mybatis-plus的集成和使用

前言 本章节开始介绍数据访问方面的相关知识点。对于后端开发者而言,和数据库打交道是每天都在进行的,所以一个好用的ORM框架是很有必要的。目前,绝大部分公司都选择MyBatis框架作为底层数...

oKong
今天
13
0
win10 上安装解压版mysql

1.效果 2. 下载MySQL 压缩版 下载地址: https://downloads.mysql.com/archives/community/ 3. 配置 3.1 将下载的文件解压到合适的位置 我最终将myql文件 放在:D:\develop\mysql 最终放的位...

Lucky_Me
今天
2
0
linux服务器修改mtu值优化cpu

一、jumbo frames 相关 1、什么是jumbo frames Jumbo frames 是指比标准Ethernet Frames长的frame,即比1518/1522 bit大的frames,Jumbo frame的大小是每个设备厂商规定的,不属于IEEE标准;...

问题终结者
今天
2
0
expect脚本同步文件expect脚本指定host和要同步的文件 构建文件分发系统批量远程执行命令

expect脚本同步文件 在一台机器上把文件同步到多台机器上 自动同步文件 vim 4.expect [root@yong-01 sbin]# vim 4.expect#!/usr/bin/expectset passwd "20655739"spawn rsync -av ro...

lyy549745
今天
1
0
36.rsync下 日志 screen

10.32/10.33 rsync通过服务同步 10.34 linux系统日志 10.35 screen工具 10.32/10.33 rsync通过服务同步: rsync还可以通过服务的方式同步。那需要开启一个服务,他的架构是cs架构,客户端服务...

王鑫linux
今天
1
0
matplotlib 保存图片时的参数

简单绘图 import matplotlib.pyplot as pltplt.plot(range(10)) 保存为csv格式,放大后依然很清晰 plt.savefig('t1.svg') 普通保存放大后会有点模糊文件大小20多k plt.savefig('t5.p...

阿豪boy
今天
3
0
java 8 复合Lambda 表达式

comparator 比较器复合 //排序Comparator.comparing(Apple::getWeight);List<Apple> list = Stream.of(new Apple(1, "a"), new Apple(2, "b"), new Apple(3, "c")) .collect(......

Canaan_
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部