《Java EE SSM框架》学习笔记(15-2)

Spring MVC的文件上传是通过MultipartResolver处理的。

它有两个实现类:

CommonsMultipartResolver:依赖于第三方包。

StandardServletMultipartResolver:是Spring3.1版本后的产物。

 

可通过注解配置MultipartResolver,写在WebConfig类中。

multipartResolver是Spring约定好的Bean name,不可修改。

通过java配置Spring MVC初始化时,只需继承一个类,AbstractAnnotationConfigDispatcherServletInitializer。

通过覆盖方法,customizeRegistration,用于初始化DispatcherServlet设置的方法,配置关于文件上传的一些属性。

public class MyWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
	//Spring IoC容器配置
	@Override
	protected Class<?>[] getRootConfigClasses() {
		//可以返回Spring的Java配置文件数组
		return new Class<?>[] {};
	}

	//DispatcherServlet的URI映射关系配置
	@Override
	protected Class<?>[] getServletConfigClasses() {
		//可以返回Spring的Java配置文件数组
		return new Class<?>[] { WebConfig.class };
	}

	//DispatchServlet[修改为:DispatcherServlet]拦截请求匹配
	@Override
	protected String[] getServletMappings() {
		return new String[] { "*.do" };
	}
	
	/**
	 * @param dynamic Servlet动态加载配置
	 */
	@Override
	protected void customizeRegistration(Dynamic dynamic) {
		//文件上传路径
		String filepath = "e:/mvc/uploads";
		//5MB
		Long singleMax = (long) (5*Math.pow(2, 20));
		//10MB
		Long totalMax = (long) (10*Math.pow(2, 20));
		//配置MultipartResolver,限制请求,单个文件5MB,总共文件10MB
		dynamic.setMultipartConfig(new MultipartConfigElement(filepath, singleMax, totalMax, 0));
	}

}

 

使用XML配置:

 

对MultipartReolver解析的调度,是通过DispatcherServlet进行的。

判定是否有enctype="multipart/*"请求,并且存在multipartResolver的Bean定义。

则Spring MVC将HttpServletRequest请求转换为MultipartHttpServletRequest请求对象。

MultipartHttpServletRequest

 

在Controller中,使用HttpServletRequest作为方法参数,会造成API侵入。

可修改MultipartFile(Spring MVC提供的类)或者Part类对象(Servlet API提供的类)。

使用MultipartFile:

 

使用Part:

 

Github地址:https://github.com/heinsven/ssm_15_2.git

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值