专栏首页怀英的自我修炼《Spring实战》摘录 - 13

《Spring实战》摘录 - 13

121

问题: #7.2.1-4 | 与StandardServletMultipartResolver有所不同,CommonsMultipart-Resolver会不会强制要求设置临时文件路径

回答: 不会

122

问题: #7.2.1-5 | 如下的配置就等价于我们在前文通过MultipartConfigElement所配置的StandardServletMultipartResolver

回答:

@Beanpublic MultipartResolver multipartResolver() throws IOException {  CommonsMultipartResolver multipartResolver =          new CommonsMultipartResolver();  multipartResolver.setUploadTempDir(      new FileSystemResource("/tmp/spittr/uploads"));  multipartResolver.setMaxUploadSize(2097152);  multipartResolver.setMaxInMemorySize(0);  return multipartResolver;}

123

问题: #7.2.2-1 | 想一下,对于提交的图片数据我们都了解哪些信息呢。或者,更为重要的是,我们还不知道些什么呢?

回答:

尽管我们已经得到了byte数组形式的图片数据,并且根据它能够得到图片的大小,但是对于其他内容我们就一无所知了。我们不知道文件的类型是什么,甚至不知道原始的文件名是什么。你需要判断如何将byte数组转换为可存储的文件

124

问题: #7.2.2-2 | Spring所提供的MultipartFile接口,用来处理上传的文件

回答:

package org.springframework.web.multipart;import java.io.File;import java.io.IOException;import java.io.InputStream;

public interface MultipartFile {  String getName();  String getOriginalFilename();  String getContentType();  boolean isEmpty();  long getSize();  byte[] getBytes() throws IOException;  InputStream getInputStream() throws IOException;  void transferTo(File dest) throws IOException;}

125

问题: #7.2.2-3 | 除此之外,MultipartFile还提供了一个便利的transferTo()方法,它能够帮助我们将上传的文件写入到文件系统中。作为样例,我们可以在process-Registration()方法中添加如下的几行代码,从而将上传的图片文件写入到文件系统中。代码是什么?、

回答:

profilePicture.transferTo(new File("/data/spittr/" + profilePicture.getOriginalFilename()));

126

问题: #7.2.2-4 | Part接口:Spring MultipartFile的替代方案。Part接口内部是什么?

回答:

package javax.servlet.http;import java.io.*;import java.util.*;

public interface Part {  public InputStream getInputStream() throws IOException;  public String getContentType();  public String getName();  public String getSubmittedFileName();  public long getSize();  public void write(String fileName) throws IOException;  public void delete() throws IOException;  public String getHeader(String name);  public Collection<String> getHeaders(String name);  public Collection<String> getHeaderNames();}

127

问题: #7.2.2-5 | Part方法与MultipartFile,中比较类似,但是稍有差异的地方,请举出2例

回答:

有一些比较类似,但是稍有差异

  • 比如getSubmittedFileName()对应于getOriginalFilename()。
  • 类似地,write()对应于transferTo(),借助该方法我们能够将上传的文件写入文件系统中。

128

问题: #7.3-1 | Spring提供了3种方式将异常转换为响应

回答:

  • 特定的Spring异常将会自动映射为指定的HTTP状态码;
  • 异常上可以添加@ResponseStatus注解,从而将其映射为某一个HTTP状态码;
  • 在方法上可以添加@ExceptionHandler注解,使其用来处理异常。

129

问题: #7.3.1-1 | Spring的一些异常会默认映射为HTTP状态码

回答:

  • BindException --- 400 - Bad Request
  • ConversionNotSupportedException --- 500 - Internal Server Error
  • HttpMediaTypeNotAcceptableException --- 406 - Not Acceptable
  • HttpMediaTypeNotSupportedException --- 415 - Unsupported Media Type
  • HttpMessageNotReadableException --- 400 - Bad Request
  • HttpMessageNotWritableException --- 500 - Internal Server Error
  • HttpRequestMethodNotSupportedException --- 405 - Method Not Allowed
  • MethodArgumentNotValidException --- 400 - Bad Request
  • MissingServletRequestParameterException --- 400 - Bad Request
  • MissingServletRequestPartException --- 400 - Bad Request
  • NoSuchRequestHandlingMethodException --- 404 - Not Found
  • TypeMismatchException --- 400 - Bad Request

130

问题: #7.3.1-2 | @ResponseStatus注解:将异常映射为特定的状态码

回答:

package spittr.web;import org.springframework.http.HttpStatus;import org.springframework.web.bind.annotation.RespinseStatus;

@RespinseStatus(value=HttpStatus.NOT_FOUND, //将异常映射为HTTP状态404                reason="Spittle Not Found")public class SpittleNotFoundException extends RuntimeException{    ...}

本文分享自微信公众号 - 怀英的自我修炼(hydzwxl),作者:怀英Qiu

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-04-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 《Spring实战》摘录 - 20

    问题:#11.2.1-4 | Hibernate的JPA适配器支持多种数据库,可以通过其database属性配置使用哪个数据库

    用户1335799
  • 怀英漫谈3-百度Echarts中日期控件的使用总结

    你好, 今天下午在用百度的Echarts做一个日历图的效果,其中跌跌碰碰遇到了几个问题,好在最终都解决了,今天想跟你聊聊这几个问题。 本篇偏编程,可以跳至最后看...

    用户1335799
  • 考研数学-1-导学

    逻辑简单的题目,会用强大的计算量撑起整个的3小时。因此,要保证逻辑上想通的不丢分。

    用户1335799
  • Builder设计模式构建整个应用的头部(NavigationBar)

    开发中基本上每个APP都会有自己的头部,如何去写这个头部呢?一部分人会在xml布局中直接写,一部分人会调用系统的ToolBar自定义布局,这两种方式都可以去实现...

    CatEatFish
  • Retrofit初探和简单使用

    ? Retrofit简单介绍 Retrofit是Square提供的开源产品,为Android平台的应用提供一个类型安全的REST客户端。它是基于注解,提供 J...

    非著名程序员
  • Java-策略设计模式

    今天 我们来学习一下策略模式,什么是策略模式呢?比如我们一个功能的实现可以有多个策略去选择,比如:出行方式可以选择:共享单车,拼车,私家车,出租等。如果将这个出...

    android_薛之涛
  • java学习之第五章编程题示例(初学篇)

    1 /* 2 Animal.java 3 */ 4 package animal; 5 6 public abstract class Animal { ...

    Gxjun
  • spring cloud 搭建oauth2授权服务 使用redis存储令牌

    路过君
  • 【SpringBoot2.0系列12】SpringBoot之JavaMail发送,支持FreeMark模板渲染

    大家都知道邮件协议有两个 smtp:邮件发送协议 pop3:邮件接收协议 我们现在要实现的邮件发送,那么重点就要放在smtp上。 在这里我们借助第三的邮...

    yukong
  • Android模拟器中替换系统应用的方法

    drunkdream

扫码关注云+社区

领取腾讯云代金券