JavaWeb开发_Day11

参考课程:

黑马程序员 JavaWeb开发教程】

[https://www.bilibili.com/video/BV1m84y1w7Tb]

@ZZHow(ZZHow1024)

综合案例-文件上传

  • 简介

    • 文件上传,是指将本地图片、视频、音频等文件上传到服务器,供其他用户浏览或下载的过程。

    • 文件上传在项目中应用非常广泛,我们经常发微博、发微信朋友圈都用到了文件上传功能。

    • 前端页面三要素

      • method=“post”
      • enctype=“multipart/form-data”
      • type=“file”
      <form action="/upload" method="post" enctype="multipart/form-data">
      	姓名:<input type="text" name="username"><br>
      	年龄:<input type="text" name="age"><br>
      	头像:<input type="file" name="image"><br>
      <input type="submit" value="提交">
      
  • 本地存储

    • 在 application.properties 中配置上传文件大小限制

      #配置单个文件上传大小限制
      
      #配置单个请求最大大小的限制(一次请求中是可以上传多个文件)
      
    • MultipartFile 中的方法

      • String getOriginalFilename(); //获取原始文件名
      • void transferTo(File dest); //将接收的文件转存到磁盘文件中
      • long getSize(); //获取文件的大小,单位:字节
      • byte[] getBytes(); //获取文件内容的字节数组
      • InputStream getlnputstream(); //获取接收到的文件内容的输入流
  • 阿里云 OSS

    • 阿里云:阿里巴巴集团旗下全球领先的云计算公司,也是中国最大的云服务提供商。

    • 阿里云 OSS:

      阿里云对象存储OSS(Object Storage Service) ,是一款海量、安全、低成本、高可靠的云存储服务。使用OSS,可以通过网络随时存储和调用包括文本、图片、音频和视频等在内的各种文件。

    • 第三方服务-通用思路

      准备工作 → 参照官方 SDK 编写入门程序 → 集成使用

      • SDK:Software Development Kit 的缩写,软件开发工具包,包括辅助软件开发的依赖(JAR 包)、代码示例等,都可以叫做 SDK。
    • 阿里云 OSS-使用步骤

      注册阿里云(实名认证) → 充值 → 开通对象存储服务(OSS) → 创建 Bucket → 获取 Accesskey(秘钥) → 参照官方 SDK 编写入门程序 → 案例集成 OSS

      • Bucket: 存储空间是用户用于存储对象(Object,就是文件)的容器,所有的对象都必须隶属于某个存储空间。
    • 阿里云 OSS-集成

      • UploadController
        1. 接收上传的图片
        2. 将图片存储起来(OSS)
        3. 返回图片访问的 URL
      • 步骤
        • 引入阿里云 OSS 上传文件工具类(由官方的示例代码改造而来)
        • 上传图片接口开发

综合案例-修改员工

  • 查询回显
    • 思路
      • Browser
      • EmpController
        • 注解:@GetMapping、@PathVariable
        1. 接收路径参数 id
        2. 调用 service 方法查询数据
        3. 响应
      • EmpService
        1. 调用 mapper 接口查询数据
      • EmpMapper
        1. select * from emp where id = ?;
      • Database
  • 修改员工
    • 思路
      • Browser
      • EmpController
        • 注解:@PutMapping、@RequestBody
        1. 接收请求参数并封装
        2. 调用 service 方法执行修改操作
        3. 响应
      • EmpService
        1. 补充基础数据
        2. 调用 mapper 接口修改数据
      • EmpMapper
        1. update emp set username = ?, name = ?, gender = ? …where id = ?;(动态 SQL 实现)
      • Database

Spring Boot配置文件

  • 参数配置化

    • 可以将配置信息(如阿里云 OSS 的配置信息)统一在 application.properties 中配置

      #自定义的阿里云 OSS 配置信
      aliyun.oss.endpoint=https://oss-cn-hangzhou.aliyuncs.com
      aliyun.oss.accessKeyId=xxx
      aliyun.oss.accessKeySecret=xxx
      aliyun.oss.bucketName=web-tlias
      
    • 使用 @Value 注解进行属性注入

      @Component
      public class AliOSSUtils {
      	@Value("${aliyun.oss.endpoint}")
      	private String endpoint;
      	@Value("${aliyun.oss.accessKeyId}")
      	private String accessKeyId;
      	@Value("${aliyun.oss.accessKeySecret}")
      	private String accessKeySecret;
      	@Value("${aliyun.oss.bucketName}")
      	private String bucketName;
      }
      

      @Value 注解通常用于外部配置的属性注入,具体用法为:@Value("${配置文件中的 key}")

  • YAML 配置文件

    • SpringBoot 提供了多种属性配置方式

      • application.properties

        server.port=8080
        server.address=127.0.0.1
        
      • application.yml(与 yaml 相同)

        server:
         port: 8080
         address: 127.0.0.1
        
      • application.yaml(与 yml 相同)

        server:
         port: 8080
         address: 127.0.0.1
        
    • 常见配置文件格式对比

      • XML:臃肿

        <server>
        	<port>8080</port>
        	<address>127.0.0.1</address>
        </server>
        
      • properties:层级结构不清晰

        server.port=8080
        server.address=127.0.0.1
        
      • YAML(yml / yaml):简洁、数据为中心

        server:
         port: 8080
         address: 127.0.0.1
        
    • YAML 基本语法

      • 大小写敏感。
      • 数值前边必须有空格,作为分隔符。
      • 使用缩进表示层级关系,缩进时,不允许使用 Tab 键,只能用空格(IntelliJ IDEA 中会自动将 Tab 转换为空格)。
      • 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可。
      • 表示注释,从这个字符一直到行尾,都会被解析器忽略。

    • YAML 数据格式

      • 对象 / Map 集合:

        user:
         name: zhangsan
         age: 18
         password: 123456
        
      • 数组 / List / Set 集合:

        hobby:
         - Java
         - C
         - C++
        
  • @ConfigurationProperties 注解

    • 自动注入的前提

      • 有 Get 和 Set 方法(@Data 注解)
      • 交给 IOC 容器管理,成为 Bean 对象(@Component 注解)
      • @ConfigurationProperties 注解并配置 prefix 属性
    • 示例:

      @Data
      @Component
      @ConfigurationProperties(prefix = "aliyun.oss")
      public class AliOSSProperties {
      	private String endpoint;
      	private String accessKeyId;
      	private String accessKeySecret;
      	private String bucketName;
      }
      
    • 消除红色警告(可选)

      “Spring Boot Configuration Annotation Processor not configured”

      • 添加 Maven 坐标

        <dependency>
        	<groupId>org.springframework.boot</groupId>
        	<antifactId>spring-boot-configuration-processor</artifactId>
        </dependency>
        
      • 该依赖会自动识别被 @ConfigurationProperties 标识的 Bean 对象,并在配置项中进行提示。

      • 在配置文件中可以使用驼峰命名也可以使用提示的横杠命名

    • @ConfigurationProperties 注解与 @Value 注解的对比

      • 相同点
        • 都用来注入外部配置的属性的。
      • 不同点
        • @Value 注解只能一个一个进行外部属性的注入。
          @ConfigurationProperties 注解可以批量将外部的属性配置注入到 Bean 对象的属性中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值