零xml配置Spring MVC文件上传

来源:互联网 发布:淘宝商品管理 编辑:程序博客网 时间:2024/06/05 20:26

基于能不用xml配置就不用的原则,这次写一下如何零xml配置Spring MVC的文件上传功能

首先配置DispatchServlet

public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer{    @Override    protected Class<?>[] getRootConfigClasses() {        return new Class<?>[]{RootConfig.class};    }    @Override    protected Class<?>[] getServletConfigClasses() {        return new Class<?>[]{WebConfig.class};    }    //将DispatchServlet映射到“/”    @Override    protected String[] getServletMappings() {        return new String[]{"/"};    }    /*      设置Multipart具体细节(必须)      指定文件存放的临时路径      上传文件最大容量      整个请求的最大容量      0表示将所有上传的文件写入到磁盘中     */    @Override    protected void customizeRegistration(ServletRegistration.Dynamic registration) {        registration.setMultipartConfig(new MultipartConfigElement("/home/eros/temp",20971520,41943040,0));    }}

配置DispatchServlet负责加载的bean

@EnableWebMvc@Configuration@ComponentScan(basePackages = "controller")public class WebConfig extends WebMvcConfigurerAdapter{    //配置视图解析器    @Bean    public ViewResolver viewResolver(){        InternalResourceViewResolver resolver=new InternalResourceViewResolver();        resolver.setPrefix("/WEB-INF/views/");        resolver.setSuffix(".jsp");        return resolver;    }    //配置静态资源处理    @Override    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {        configurer.enable();    }    //配置Multipart解析器    @Bean    public MultipartResolver multipartResolver(){        StandardServletMultipartResolver resolver=new StandardServletMultipartResolver();        resolver.setResolveLazily(true);        return resolver;    }}

配置ContextLoaderListener负责加载的bean

@Configuration@ComponentScan(basePackages = "config",excludeFilters =        {@ComponentScan.Filter(type = FilterType.ANNOTATION,value = EnableWebMvc.class)})public class RootConfig {}

设置Controller

@Controller@RequestMapping(value = "/home")public class HomeController {    //上传功能    @RequestMapping(value = "/upload",method = RequestMethod.GET)    public String showUploadPage(){        return "file";    }    //处理文件上传    @RequestMapping(value = "/doUpload",method = RequestMethod.POST)    //通过@RequestPart指定请求中对应part的数据    public String doUpload(@RequestPart("file") MultipartFile file) throws IOException {        if (!file.isEmpty()){            FileUtils.copyInputStreamToFile(file.getInputStream()                    ,new File("/home/eros/"+file.getOriginalFilename()));        }        return "success";    }}

file.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head>    <title>Upload</title></head><body><h1>上传附件</h1><!--交由映射到“/home/doUpload的Controller处理请求”--><form method="post" action="/home/doUpload" enctype="multipart/form-data">    <input type="file" name="file">    <input type="submit"></form></body></html>

success.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head>    <title>success</title></head><body><h1>Success</h1></body></html>

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">  <modelVersion>4.0.0</modelVersion>  <groupId>org.eros.dgeek</groupId>  <artifactId>SpringMVC</artifactId>  <packaging>war</packaging>  <version>1.0-SNAPSHOT</version>  <name>SpringMVC Maven Webapp</name>  <url>http://maven.apache.org</url>  <dependencies>    <dependency>      <groupId>junit</groupId>      <artifactId>junit</artifactId>      <version>4.12</version>      <scope>test</scope>    </dependency>    <dependency>      <groupId>org.springframework</groupId>      <artifactId>spring-context</artifactId>      <version>4.3.8.RELEASE</version>    </dependency>    <dependency>      <groupId>org.springframework</groupId>      <artifactId>spring-aop</artifactId>      <version>4.3.8.RELEASE</version>    </dependency>    <dependency>      <groupId>org.springframework</groupId>      <artifactId>spring-webmvc</artifactId>      <version>4.3.8.RELEASE</version>    </dependency>    <dependency>      <groupId>org.springframework</groupId>      <artifactId>spring-jdbc</artifactId>      <version>4.3.8.RELEASE</version>    </dependency>    <dependency>      <groupId>org.springframework</groupId>      <artifactId>spring-aspects</artifactId>      <version>4.3.8.RELEASE</version>    </dependency>    <dependency>      <groupId>org.springframework</groupId>      <artifactId>spring-orm</artifactId>      <version>4.3.8.RELEASE</version>    </dependency>    <dependency>      <groupId>org.springframework</groupId>      <artifactId>spring-jms</artifactId>      <version>4.3.8.RELEASE</version>    </dependency>    <dependency>      <groupId>org.springframework</groupId>      <artifactId>spring-tx</artifactId>      <version>4.3.8.RELEASE</version>    </dependency>    <dependency>      <groupId>org.apache.tomcat</groupId>      <artifactId>tomcat-jsp-api</artifactId>      <version>8.5.13</version>    </dependency>    <dependency>      <groupId>commons-fileupload</groupId>      <artifactId>commons-fileupload</artifactId>      <version>1.3.2</version>    </dependency>  </dependencies>  <build>    <finalName>SpringMVCLearning</finalName>  </build></project>
0 0