SpringMvc框架(文件上传方式)

目录,更新ing,学习Java的点滴记录

  目录放在这里太长了,附目录链接大家可以自由选择查看--------Java学习目录

SpringMvc知识

第一篇---->SpringMvc初识|MVC|三层架构
第二篇---->IoC容器上下文和映射请求上下文
第三篇---->熟悉基本开发流程
第四篇---->接收各类请求参数的方式
第五篇---->获取请求中的Request,Session,Cookie等对象属性
第六篇---->拦截器开发
第七篇---->视图和视图解析器
第八篇---->数据校验
第九篇---->文件上传方式
第十篇---->数据转换和数据格式化

文件上传

1 介绍

  • 在互联网应用中,上传头像,图片,证件是十分常见的,这涉及到文件上传功能.SpringMvc为上传文件提供了良好的支持.首先SpringMvc的文件上传时通过MultipartResolver(Multipart解析器)处理的,对于MultipartResolver而言它只是一个接口,它有两个实现类
      1) CommonsMultipartResolver:依赖于Apache下的jakarta Common FileUpload 项目解析Multipart请求,可以在Spring各个版本中使用,只是它要依赖于第三方包才得以实现,后面的案例中使用这个
      2) StandardServletMultipartResolver:是Spring3.1版本后的产物,它依赖于Servlet3.0或者更高版本的实现,它不用依赖于第三方包
  • 实现类与接口继承关系
      在这里插入图片描述

2 配置MultipartResolver---- CommonsMultipartResovler

  • 导入依赖jar包
      在这里插入图片描述
      链接:https://pan.baidu.com/s/15O7ZtnOehh0cNn2j2jtPVQ 提取码:va3h

  • SpringMvc上下文中默认是没有装配MultipartResolver的,因此默认情况下不能处理文件的上传工作,如果想要使用Spring文件上传功能,需要在上下文中配置MultipartResolver

  • 在SpringMvc配置文件中配置MultipartResolver(配置项不一定全部配置,根据自己需要进行选择)
      在这里插入图片描述
      需要注意的是"multipartResolver"是Spring约定好的Bean name不可以修改.

  • 编写文件上传表单页面
      在这里插入图片描述
      注意,要把enctype定义为multipart/form-data,否则SpringMvc会解析失败.

  • 编写处理器方法
      在这里插入图片描述
      MultipartFile是一个SpringMvc提供的类,它的好处是可以把代码从Servlet API中解放出来,体现了Spring的思维,高度的解耦性.此外,还简化了许多关于文件的操作,对于文件上传的开发就更简单了.

  • 测试效果
      在这里插入图片描述
      在这里插入图片描述

2 配置MultipartResolver---- StandardServletMultipartResolver

  • StandardServletMultipartResolver不需要引入任何第三方jar包,适用于Spring3.1以上
  • 修改SpringMvc配置文件,配置MultipartResolver
      在这里插入图片描述
  • 从上面的配置文件中,使用property标签只有一个可选项能够配置MultipartResolver的属性,那么如何配置文件上传大小,文件单个大小等配置呢?
  • 在DispatcherServlet的地方进行配置文件上传相关配置项
      在这里插入图片描述
  • 复用CommonsMultipartResovler案例中的表单和处理器方法进行测试,测试结果符合预期

SpringMvc中MultipartResolver解析过程

  • SpringMvc对于MultipartResolver解析的调度是通过DispatcherServlet进行的.首先判断请求是否是一种enctype="multipart/*"的请求,如果是并且存在一个名称为multipartResolver的Bean定义,那么它将会把HttpServletRequest请求转换为MultipartHttpServletRequest请求对象.
  • MultipartHttpServletRequest是一个SpringMvc自定义的接口,它扩展了HTTPServletRequest和关于文件的操作接口MultipartRequest.同样的,实现MultipartHttpServletRequest接口的是一个抽象类,它就是AbstractMultipartHttpServletRequest,它提供了一个公有的实现,在这个类的基础上,根据MultipartResolver的不同,派生出DefaultMultipartHttpServletRequest和StandardMultipartHttpServletRequest.
  • MultipartHttpServletRequest具备原有HttpServletRequest对象的操作能力,也具备了文件操作的能力.对于文件的操作所持有的资源,到了最后DispatcherServlet会释放掉对应的资源.他还会把文件请求转换为一个MultipartFile对象,通过这个对象就可以进一步操作文件了.
  • 继承结构图如下:
      在这里插入图片描述
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值