Springboot开心学习(第五天)

1. 整合Gson

还是在上一个创建的工程里

修改pom.xml把json包排除出去,在把gson包依赖添加进来

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-json</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
</dependency>

启动,查看数据格式:
在这里插入图片描述
可以看到默认日期格式如上。

下面进行自定义修改,修改WebMvcConfig.java

@Configuration
public class WebMvcConfig {
//    @Bean
//    MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter(){
//        MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
//        ObjectMapper objectMapper = new ObjectMapper();
//        objectMapper.setDateFormat(new SimpleDateFormat("yyyy/MM/dd"));
//        converter.setObjectMapper(objectMapper);
//        return converter;
//    }

//    @Bean
//    ObjectMapper objectMapper(){
//        ObjectMapper objectMapper = new ObjectMapper();
//        objectMapper.setDateFormat(new SimpleDateFormat("yyyy/MM/dd"));
//        return objectMapper;
//    }

    @Bean
    GsonHttpMessageConverter gsonHttpMessageConverter(){
        GsonHttpMessageConverter converter = new GsonHttpMessageConverter();
        converter.setGson(new GsonBuilder().setDateFormat("yyyy/MM/dd").create());
        return converter;
    }
}

再次运行,查看结果:
在这里插入图片描述
也可以只改Gson即可,修改WebMvcConfig.java

//    @Bean
//    GsonHttpMessageConverter gsonHttpMessageConverter(){
//        GsonHttpMessageConverter converter = new GsonHttpMessageConverter();
//        converter.setGson(new GsonBuilder().setDateFormat("yyyy/MM/dd").create());
//        return converter;
//    }

    @Bean
    Gson gson(){
        return new GsonBuilder().setDateFormat("yyyy/MM/dd").create();
    }

结果是一样的

2. 整合Fastjson

首先去掉Gson依赖,添加Fastjson依赖

<!--<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
</dependency>-->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.62</version>
</dependency>

手动添加转换器,修改WebMvcConfig

//    @Bean
//    Gson gson(){
//        return new GsonBuilder().setDateFormat("yyyy/MM/dd").create();
//    }

    @Bean
    FastJsonHttpMessageConverter fastJsonHttpMessageConverter(){
        FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();
        return converter;
    }

启动查看结果:
在这里插入图片描述
自定义格式,修改WebMvcConfig

@Bean
    FastJsonHttpMessageConverter fastJsonHttpMessageConverter(){
        FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();
        FastJsonConfig config = new FastJsonConfig();
        config.setDateFormat("yyyy-MM-dd");
        converter.setFastJsonConfig(config);
        return converter;
    }

查看结果:
在这里插入图片描述

3. 静态资源访问

3.1 系统默认位置

Spring Boot默认了五个位置放置静态资源,优先级从高到低分别是:

  1. classpath:/META-INF/resources/
  2. classpath:/resources/
  3. classpath:/static/
  4. classpath:/public/
  5. webapp下

下面测试前4个,分别在各自位置创建相同的js文件,如下:
在这里插入图片描述
启动,结果如下:
在这里插入图片描述
删掉/META-INF/resources/下的文件,重新启动,结果:
在这里插入图片描述
删掉/resources/下的文件,重新启动,结果:
在这里插入图片描述
删掉/static/下的文件,重新启动,结果:
在这里插入图片描述

3.2 自定义静态资源位置

3.2.1 修改配置文件

创建自定义静态资源访问位置
在这里插入图片描述
修改application.properties

spring.resources.static-locations=classpath:/sky/

重启项目,结果如下:
在这里插入图片描述

3.2.2 Java配置类

修改WebMvcConfig

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/**").addResourceLocations("classpath:/sky/");
    }
}

4. Spring Boot文件上传

创建上传controller

@RestController
public class FileUploadController {
    SimpleDateFormat sdf = new SimpleDateFormat("/yyyy/MM/dd/");

    @PostMapping("/upload")
    public String upload(MultipartFile file, HttpServletRequest request){
        String format = sdf.format(new Date());
        String realPath = request.getServletContext().getRealPath("/img") + format;
        File folder = new File(realPath);
        if (!folder.exists()) {
            folder.mkdirs();
        }
        String oldName = file.getOriginalFilename();
        String newName = UUID.randomUUID().toString() + oldName.substring(oldName.lastIndexOf('.'));
        try {
            file.transferTo(new File(folder, newName));
            String url = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + "/img" + format + newName;
            return url;
        }catch (IOException e){
            e.printStackTrace();
        }
        return "error";
    }
}

创建测试的html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="/upload" method="post" enctype="multipart/form-data">
    <input type="file", name="file">
    <input type="submit" value="提交">
</form>

</body>
</html>

测试,查看结果:
在这里插入图片描述

注意:若有特殊设置,则在application.properties配置即可

以上传文件大小为例:

spring.servlet.multipart.max-file-size=1KB

再次上传大于1KB的图片,就会报错,如下:
在这里插入图片描述

5. Ajax实现文件上传

下载jquery包放在static目录下,下载地址:Jquery下载

只改前端页面即可

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="jquery-3.3.1.js"></script>
</head>
<body>
<div id="result"></div>
<input type="file" id="file">
<input type="button" value="上传" onclick="uploadFile()">
<script>
    function uploadFile() {
        var file = $("#file")[0].files[0];
        var formData = new FormData();
        formData.append("file", file);
        $.ajax({
            type: 'post',
            url: '/upload',
            processData: false,
            contentType: false,
            data: formData,
            success: function (msg) {
                $("#result").html(msg);
            }
        })
    }

</script>
</body>
</html>

启动后,结果如下:
在这里插入图片描述

6. 多文件上传

创建前端页面index3.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="/uploads" method="post" enctype="multipart/form-data">
    <input type="file", name="files" multiple>
    <input type="submit" value="提交">
</form>

</body>
</html>

创建后端服务

@PostMapping("/uploads")
public String uploads(MultipartFile[] files, HttpServletRequest request){
    String format = sdf.format(new Date());
    String realPath = request.getServletContext().getRealPath("/img") + format;
    File folder = new File(realPath);
    if (!folder.exists()) {
        folder.mkdirs();
    }
    for (MultipartFile file : files) {
        String oldName = file.getOriginalFilename();
        String newName = UUID.randomUUID().toString() + oldName.substring(oldName.lastIndexOf('.'));
        try {
            file.transferTo(new File(folder, newName));
            String url = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + "/img" + format + newName;
            System.out.println(url);
        }catch (IOException e){
            e.printStackTrace();
        }
    }

    return "success";
}

运行,结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值