纯Annotation方式配置SpringMVC的接收MultiPart请求

本文介绍了如何采用纯Annotation的方式在SpringMVC中处理MultiPart请求,避免XML配置,提高代码可维护性。核心步骤包括:1.继承AbstractAnnotationConfigDispatcherServletInitializer并定制MultipartConfig;2.配置multipartResolver的bean;3.示例代码展示如何处理MultiPart请求。
摘要由CSDN通过智能技术生成

一般如果我们需要SpringMVC能自动处理MultiPart请求,传统方法是使用xml的方式进行配置,xml文件难以维护,经典教材《Spring实战》第四版也推荐完全使用注解(Annotation)的方式来搭建Spring项目。

下面是实现纯Annotation方式实现SpringMVC的接收MultiPart请求的核心代码

1.继承AbstractAnnotationConfigDispatcherServletInitializer,用JAVA代码代替xml中的DispahcerServlet配置

AppInitializer.java

import Util.Config;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

import javax.servlet.MultipartConfigElement;
import javax.servlet.ServletRegistration;

public class AppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
    @Override
    protected Class<?>[] getRootConfigClasses() {

        return new Class<?>[]{RootConfig.class};
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {

        return new Class<?>[]{WebConfig.class};
    }



    @Override
    protected String[] getServletMappings() {

        return new String[]{"/action/*"};

    }

    @Override
    protected void customizeRegistration(ServletRegistration.Dynamic registration) {
        //上传的文件临时保存路径
        String tmpdir="D:/tmp";
        registration.setMultipartConfig(tmpdir);
    }
}

此处通过重载customizeRegistration向项目中添加了MultipartConfig,使得项目能处理Multipart请求

2.在添加 multipartResolver的bean

    @Bean
    public MultipartResolver multipartResolver(){
        return new StandardServletMultipartResolver();
    }

这里的Resolver提供了标准的SpringMVC文件上传处理方法

3.接下来就可以处理MultiPart请求了,以下是示例代码

    @ResponseBody
    @RequestMapping(value = "/putres", method = RequestMethod.POST)
    public void putres(@RequestPart("file") Part part, HttpServletResponse response) throws IOException {

        Resource resource = ResourceUtil.PutResource(part.getInputStream(), part.getName());
        //处理上传的文件

    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值