文档章节

SpringMVC文件上传源码分析前言

乒乓狂魔
 乒乓狂魔
发布于 2015/02/15 17:51
字数 485
阅读 1402
收藏 39

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

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

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

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

#2 站在apache fileupload的角度

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

#3 站在SpringMVC框架的角度

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

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

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

© 著作权归作者所有

共有 人打赏支持
乒乓狂魔
粉丝 996
博文 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
Quartz与Spring集成—— SchedulerFactoryBean的初始化分析

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

哲别0
2017/11/05
0
0
Spring源码分析之Bean的解析

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

疼丸李白
2017/12/28
0
0
springboot情操陶冶-初识springboot

前言:springboot由于其轻便和去配置化等的特性已经被广泛应用,基于时代潮流以及不被鄙视,笔者于是开辟此篇开始认识springboot 前话 springboot是基于spring而开发的轻量级框架,所以在学习...

南柯问天
07/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

sourcetree 离线免注册登录安装教程

Sourcetree是一个优秀的git可视化管理工具,深受开发者喜爱Sourcetree官网,但是在安装时需要谷歌账户登录,需要翻qiang才可以,此一点一直被人们所诟病。今天本教程就为大家提供离线免登陆安...

QQZZFT
13分钟前
0
0
使用 PostgreSQL 解决一个实际的统计分析问题

使用 PostgreSQL 解决一个实际的统计分析问题作者:老农民(刘启华)Email: 46715422@qq.com 之前有个朋友扔给我一个奇葩需求,他们公司之前做了一批问卷调查,全部都是统一格式的excel...

新疆老农民
16分钟前
0
0
TypeScript基础入门之高级类型的映射类型

转发 TypeScript基础入门之高级类型的映射类型 高级类型 映射类型 一个常见的任务是将一个已知的类型每个属性都变为可选的: interface PersonPartial {    name?: string;    age?...

durban
31分钟前
0
0
Dubbo源码分析(6):Dubbo内核实现之基于SPI思想Dubbo内核实现

SPI接口定义 定义了@SPI注解 package com.alibaba.dubbo.common.extension; import java.lang.annotation.Documented;import java.lang.annotation.ElementType;import java.lang.an......

郑加威
32分钟前
0
0
RxJS的另外四种实现方式(后记)—— 同时实现管道和链式编程

目录 RxJS的另外四种实现方式(序) RxJS的另外四种实现方式(一)——代码最小的库 RxJS的另外四种实现方式(二)——代码最小的库(续) RxJS的另外四种实现方式(三)——性能最高的库 Rx...

一个灰
35分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部