【Java从0到架构师】SpringBoot - SpringMVC

Java 从 0 到架构师目录:【Java从0到架构师】学习记录

Gitee 代码:https://gitee.com/szluyu99/mj_java_frame/tree/master/04_SpringBoot

SpringMVC 的配置

示例代码:SpringBoot - SpringMVC

默认情况下,SpringBoot 已经内置了很多 SpringMVC 的常用配置口

  • 如果希望在此基础上,继续增加一些配置,可以使用 WebMvcConfigurer
@Configuration
public class SpringMVCConfig implements WebMvcConfigurer {
}
  • 如果希望完全自定义 SpringMVC 的配置,那就是用 @EnableWebMvc
@Configuration
@EnableWebMvc
public class SpringMVCConfig implements WebMvcConfigurer {
}

application 配置文件中的配置,参考

  • spring-boot-autoconfigure.jar 中的 WebMvcProperties 类
spring:
  mvc:
    servlet:
      load-on-startup: 0
# 日期格式转换
spring:
  mvc:
    format:
      date: yyyy-MM-dd

文件上传功能

文件大小限制的配置:

spring:
  servlet:
    multipart:
      max-request-size: 100MB
      max-file-size: 100MB

在 SpringBoot 中使用 servletContext.getRealPath("/") 获取的路径可能如下:

  • C:\Users\MJ\AppData\Local\Temp\tomcat-docbase.14216908544470700598.8080
@PostMapping("/upload")
public String upload(String username, MultipartFile photo, HttpServletRequest request) throws Exception {
    // 获取文件扩展名
    String extension = FilenameUtils.getExtension(photo.getOriginalFilename());

    // 目标文件
    String dir = properties.getUpload().getImageFullpath();
    String filename = UUID.randomUUID() + "." + extension;
    File file = new File(dir + filename);

    // 创建好目标文件所在的父目录
    FileUtils.forceMkdirParent(file);

    // 将文件数据写到目标文件
    photo.transferTo(file);

    return "上传成功!!!";
}

文件下载 - 以附件形式下载

如果直接通过一个链接去访问文件,则会直接在浏览器上显示该文件内容,而不是进行下载

@GetMapping("/download")
public void download(HttpServletResponse response) throws Exception {
    // 把文件以附件的形式返回
    // 设置响应头
    response.setHeader("Content-Disposition", "attachment; filename=bg.png");
    // 读取文件
    try (InputStream is = new ClassPathResource("static/txt/bg.png").getInputStream()) {
        // 将文件数据利用response写回到客户端
        IOUtils.copy(is, response.getOutputStream());
    }
}

单独在 SpringMVC 中也是这样使用

静态资源访问

在 SpringBoot 中,静态资源需要进行映射才能直接访问

SpringBoot 默认的静态资源映射处理

  • spring-boot-autoconfigure.jar
  • WebMvcAutoConfiguration
  • WebMvcAutoConfigurationAdapter
  • addResourceHandlers

静态资源访问 - 映射

方法1:可以通过 application 配置文件进行静态资源的映射

spring:
  mvc:
    static-path-pattern: /**
   
  resources:
    static-locations: classpath:/myStatic/, file:///F:/myStatic/

方法2:Java 代码中,可以通过 WebMvcConfigurer 的方法进行静态资源的映射

@Configuration
public class SpringMvcConfig implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
    	// 映射classpath下的资源
        registry.addResourceHandler("/**")
                .addResourceLocations("classpath:/static/");
                
		// 映射本地资源
        registry.addResourceHandler("/**")
                .addResourceLocations("file:///F:/static/");
        registry.addResourceHandler("/**")
                .addResourceLocations("file:///F:/upload/");
    }
}

静态资源访问 - webjars

SpringBoot 支持使用 webiars 的方式访问静态资源

示例:使用 webjars 访问 jquery

<dependency>
	<groupId>org.webjars</groupId>
	<artifactId>jquery</artifactId>
	<verison>3.5.1</version>
</dependency>

在这里插入图片描述

<!-- path: /webjars/** -->
<!-- location: classpath:/META-INF/resources/webjars/ -->
<script th:src="@{/webjars/jquery/3.5.1/jquery.js}"></script>
阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

萌宅鹿同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值