SpringMVC multipart文件上传详细教程之一:项目概述及基本配置
来源:互联网 发布:中国国家顶级域名 编辑:程序博客网 时间:2024/06/05 18:01
项目概述
该demo是关于SpringMVC mutipart文件上传的实例。程序基于Java配置,注解驱动。视图解析器为InternalResourceViewResolver,multipart解析器为StandardServletMultipartResolver,视图为JSP,版本管理工具为Maven,开发工具为IntelliJ IDEA。完整源码已经上传至Github,项目Repository地址为:https://github.com/Dodozhou/SpringMVC_FileUpload,可前往克隆完整项目。
下图是项目结构图:
容器初始化及基本配置
首先创建initializer包,并在该包下创建WebAppinitializer类:
WebAppInitializer.java
package com.star.initializer;import com.star.config.RootConfig;import com.star.config.WebConfig;import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;import javax.servlet.MultipartConfigElement;import javax.servlet.ServletRegistration;import javax.servlet.http.HttpServletRequest;/** * Created by hp on 2017/2/24. * 通过abstractAnnotationConfigDispatcherServletInitializer来配置DispatcherServlet是传统 * web.xml方式的替代方案。如果愿意,可以同时包含web.xml和该类,但这没有必要。 * 该方式来配置servlet,只支持Servlet3.0的服务器,如Tomcat7或更高版本。 */public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { //配置servlet映射路径,它会将一个或多个路径映射到DispatcherServlet上。 @Override protected String[] getServletMappings() { return new String[]{"/"}; } //指定Spring中的另一个上下文(ContextLoderListener创建的上下文)加载配置的文件 //该配置类配置驱动应用后端的中间层和数据层组件的bean @Override protected Class<?>[] getRootConfigClasses() { return new Class<?>[]{RootConfig.class}; } //该方法指定了DispatcherServlet加载配置的文件 @Override protected Class<?>[] getServletConfigClasses() { return new Class<?>[] {WebConfig.class}; } //配置文件上传的具体参数,如保存路径、文件大小等等 @Override protected void customizeRegistration(ServletRegistration.Dynamic registration) { registration.setMultipartConfig( new MultipartConfigElement("",2000000,10000000,0)); }}
该类继承了abstractAnnotationConfigDispatcherServletInitializer类并重写了4个方法:
- getServletMappings():设置Servlet映射路径
- getRootConfigClasses():指定ContextLoderListener创建的上下文的配置类
- getServletConfigClasses():指定DispatcherServlet创建的上下文加载配置的类
- customizeRegistration():配置multipart上传的详细参数(临时存放文件夹,单个文件最大大小,整个请求最大大小)
接着创建RootConfig,该类用来配置ContextLoderListener创建的应用上下文中的bean,通常是后端中间层组件的声明文件。在本项目中不做配置,但需要加上@Configuration注解。
RootConfig.java
package com.star.config;import org.springframework.context.annotation.Configuration;/** * Created by hp on 2017/2/24. * 该类用来配置ContextLoderListener创建的应用上下文中的bean */@Configurationpublic class RootConfig {}
重点是WebConfig,在该配置文件中,配置了视图解析器、multipart解析器、静态资源转发器、web组件的bean等。
WebConfig.java
package com.star.config;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;import org.springframework.web.multipart.MultipartResolver;import org.springframework.web.multipart.support.StandardServletMultipartResolver;import org.springframework.web.servlet.ViewResolver;import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;import org.springframework.web.servlet.config.annotation.EnableWebMvc;import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;import org.springframework.web.servlet.view.InternalResourceViewResolver;import java.io.IOException;/** * Created by hp on 2017/2/24. */@Configuration@EnableWebMvc //启用注解驱动的SpringMVC,等同于<mvc:annotation-driver>@ComponentScan("com.star")public class WebConfig extends WebMvcConfigurerAdapter{ //配置视图解析器、静态资源转发器、web组件的bean等 //继承WebMvcConfigurerAdapter可以使用其静态资源处理方法 @Bean public ViewResolver viewResolver(){ InternalResourceViewResolver resolver=new InternalResourceViewResolver(); resolver.setPrefix("/WEB-INF/views/"); resolver.setSuffix(".jsp"); return resolver; } //将静态资源的请求转发到Servlet容器处理,而不是DispatcherServlet处理 @Override public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { configurer.enable(); } //配置multipart解析器 //具体参数的配置在AbstractAnnotationConfigDispatcherServletInitializer的方法 //customizeRegistration(Dynamic registration)方法或web.xml中设置 @Bean public MultipartResolver multipartResolver() throws IOException{ return new StandardServletMultipartResolver(); }}
到此,项目的配置已经完成。为了篇幅的简洁,对代码中的具体方法没有讲解,若对配置文件中的方法存在疑问,可参照这篇讲解理论的博客: SpringMVC入门之九:multipart文件上传
下一篇: SpringMVC multipart文件上传详细教程之二:控制器的编写及异常处理
1 0
- SpringMVC multipart文件上传详细教程之一:项目概述及基本配置
- SpringMVC multipart文件上传详细教程之二:控制器的编写及异常处理
- SpringMVC multipart文件上传详细教程之三:视图及运行结果
- SpringMVC multipart文件上传
- SpringMVC multipart(文件上传)
- SpringMVC multipart文件上传
- SpringMVC multipart文件上传
- springmvc + multipart 实现文件上传
- SpringMVC入门之九:multipart文件上传
- SpringMVC 菜鸟教程 1 文件上传 配置
- 深入springMVC------文件上传源码解析(上篇) 最近在项目中,使用springmvc 进行上传文件时,出现了一个问题: org.springframework.web.multipart
- SpringMVC 文件上传:org.springframework.web.multipart.commons.CommonsMultipartFile
- springmvc项目基本配置
- springmvc配置上传文件
- SpringMVC上传文件配置
- SpringMVC文件上传配置
- SpringMVC multipart文件上传下载
- SpringMVC上传文件基本使用
- 40. Combination Sum II(unsolved)
- 88. Merge Sorted Array python
- JS里for循环遍历对象的顺序---是按成员添加到对象中的先后顺序遍历的
- 机器学习核函数理解
- 第一周:[LeetCode]1. Two Sum
- SpringMVC multipart文件上传详细教程之一:项目概述及基本配置
- webapi接收上传的文件和相关参数
- 数据库的查询排序、分组查询及筛选
- 洋洋洒洒一大片的aio实验代码
- 关于Android事件分发机制一些要注意的问题
- 技术人员的发展之路
- [Android4.4]电池低电量告警提示
- 优化MySchool 第八章 酒店管理系统
- 使用java.util.zip包压缩和解压缩文件