Spring学习笔记之Spring MVC的高级技术

本篇主要介绍利用Spring MVC处理文件上传,异常处理,为控制器添加通知以及跨重定向请求传递数据。
摘要由CSDN通过智能技术生成

本篇主要介绍利用Spring MVC处理文件上传,异常处理,为控制器添加通知以及跨重定向请求传递数据。

1.Spring MVC处理文件上传

1.1使用multipart格式提交表单

在有文件上传的表单中,我们需要使用multipart格式的数据来上传,multipart格式的数据会将一个表单拆分成多个部分(part),每个部分对应一个输入域。在一半的表单输入域中,它所对应的部分会放置文本型数据,但是如果上传文件的话,它所对应的部分可以是二进制。下面是前段页面表单部分:

<form action="${ctx}/register" enctype="multipart/form-data" method="post">
        <label>用户名:</label>
        <input type="text" name="username"><br/>
        <label>密码:</label>
        <input type="password" name="password"><br/>
        <label>邮箱:</label>
        <input type="text" name="email"><br/>
        <label>头像:</label>
        <input type="file" name="image" accept="image/jpeg,image/png,image/gif"><br/>
        <input type="submit" value="注册">    
    </form>

form表单现在将enctype属性设置为multipart/form-data,这会告诉浏览器以multipart数据的形式提交表单,而不是以表单数据的形式进行提交。在multipart中,每个输入域都会对应一个part。而文件上传输入域中的accept属性用来将文件类型限制为JPEG、PNG和GIF图片。

1.2配置multipart解析器

DispatcherServlet将解析multipart请求数据的任务委托给了Spring中MultipartResolver策略接口的实现。Spring内置了两个MultipartResolver的实现供我们选择:

  • CommonsMultipartResolver:使用Jakarta Commons FileUpload解析multipart请求
  • StandardServletMultipartResolver:依赖于Servlet3.0对multipart请求的支持。

使用Servlet 3.0解析multipart请求:
在Spring MVC上下文中将其声明为bean:

@Configuration 
@EnableWebMvc //启用Spring MVC
@ComponentScan("spittr.web") //启用组件扫描
public class WebConfig 
        extends WebMvcConfigurerAdapter{
   
    /**
     * 配置multipart解析器
     * @return
     */
    @Bean
    public MultipartResolver multipartResolver(){
        return new StandardServletMultipartResolver();
    }
}

StandardServletMultipartResolver的配置是在Servlet中通过传入一个MultipartConfigElement实例来指定:
如果是自定义的Servlet,即(自己实现WebApplicationInitializer),这样做:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值