spring multipart源码分析:
2024-09-09 00:12:09
1、MultipartResolver
MultipartResolver接口提供了spring mvc的上传视图,MultipartResolver实例在请求转交给handlermapping之前。 也就是说DispatcherServlet ,在请求映射的时候,若找到MultipartResolver这个实例的话,
就直接把请求转交给MultipartResolver
/**
* Determine if the given request contains multipart content.
* <p>Will typically check for content type "multipart/form-data", but the actually
* accepted requests might depend on the capabilities of the resolver implementation.
* @param request the servlet request to be evaluated
* @return whether the request contains multipart content
*/
boolean isMultipart(HttpServletRequest request); /**
* Parse the given HTTP request into multipart files and parameters,
* and wrap the request inside a
* {@link org.springframework.web.multipart.MultipartHttpServletRequest}
* object that provides access to file descriptors and makes contained
* parameters accessible via the standard ServletRequest methods.
* @param request the servlet request to wrap (must be of a multipart content type)
* @return the wrapped servlet request
* @throws MultipartException if the servlet request is not multipart, or if
* implementation-specific problems are encountered (such as exceeding file size limits)
* @see MultipartHttpServletRequest#getFile
* @see MultipartHttpServletRequest#getFileNames
* @see MultipartHttpServletRequest#getFileMap
* @see javax.servlet.http.HttpServletRequest#getParameter
* @see javax.servlet.http.HttpServletRequest#getParameterNames
* @see javax.servlet.http.HttpServletRequest#getParameterMap
*/
MultipartHttpServletRequest resolveMultipart(HttpServletRequest request) throws MultipartException; /**
* Cleanup any resources used for the multipart handling,
* like a storage for the uploaded files.
* @param request the request to cleanup resources for
*/
void cleanupMultipart(MultipartHttpServletRequest request);
MultipartResolver接口提供了3个方法:
boolean isMultipart(HttpServletRequest request): 检查当前请求是否是multipart content type
resolveMultipart: 将httprequest转换成MultipartHttpServletRequest
已知的子类: CommonsMultipartResolver, StandardServletMultipartResolver
- 第一个需要使用 Apache 的 commons-fileupload 等 jar 包支持,但它能在比较旧的 servlet 版本中使用。
- 第二个不需要第三方 jar 包支持,它使用 servlet 内置的上传功能,但是只能在 Servlet 3 以上的版本使用。
2、multipartRequest
multipartRequest接口可以讲request对象封装成multipartRequest,提取请求的信息,MultipartReques类主要是对文件上传进行的处理。
最新文章
- [Erlang 0124] Erlang Unicode 两三事 - 补遗
- 跨域的另一种解决方案——CORS(Cross-Origin Resource Sharing)跨域资源共享
- 高级java必会系列二:多线程经常使用的3个关键字:synchronized、ReentrantLock、volatile
- Java输入/输出流体系
- php生成二维码可以有以下几种方式
- 项目开发-->;一键登录功能汇总
- codeforces 442C C. Artem and Array(有深度的模拟)
- MySQL导入txt文件
- 《C和指针》读书笔记——第一章 快速上手
- .NET程序编译原理
- 调侃Cookie
- AlertDialog基本用法详解
- Redis Windows版安装详解
- CentOS7修改主机名(hostname)
- web项目,ftl文件中的路径引入问题
- Basic Linux Privilege Escalation
- 三、安装cmake,安装resin ,tars服务,mysql 安装介绍,安装jdk,安装maven,c++ 开发环境安装
- iis 网页HTTP 错误 404.3 - Not Found解决方案
- clientHeight scrollHeight offsetHeight
- POJ - 1850 Code(组合数学)
热门文章
- oracle出现sga导致ORA-00821 ORA-00093报错解决办法
- Ubuntu安装后上网问题,
- [SQL]批量修改存储过程视图
- 对抗生成网络-图像卷积-mnist数据生成(代码) 1.tf.layers.conv2d(卷积操作) 2.tf.layers.conv2d_transpose(反卷积操作) 3.tf.layers.batch_normalize(归一化操作) 4.tf.maximum(用于lrelu) 5.tf.train_variable(训练中所有参数) 6.np.random.uniform(生成正态数据
- oracle 查看处理锁表
- Java中获取系统时间的四种方式
- vs2015下编译duilib的几个问题
- java方法体
- 20175213 2018-2019-2 《Java程序设计》第7周学习总结
- 堡垒机升级V3.2.14