JavaWeb开发_Day11
2024-7-25
| 2024-7-27
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password
参考课程:
黑马程序员 JavaWeb开发教程】
@ZZHow(ZZHow1024)

综合案例-文件上传

  • 简介
    • 文件上传,是指将本地图片、视频、音频等文件上传到服务器,供其他用户浏览或下载的过程。
    • 文件上传在项目中应用非常广泛,我们经常发微博、发微信朋友圈都用到了文件上传功能。
    • 前端页面三要素
      • method="post"
      • enctype="multipart/form-data"
      • type="file"
  • 本地存储
    • 在 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. 接收上传的图片
            1. 将图片存储起来(OSS)
            1. 返回图片访问的 URL
        • 步骤
          • 引入阿里云 OSS 上传文件工具类(由官方的示例代码改造而来)
          • 上传图片接口开发

    综合案例-修改员工

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

    Spring Boot配置文件

    • 参数配置化
      • 可以将配置信息(如阿里云 OSS 的配置信息)统一在 application.properties 中配置
        • 使用 @Value 注解进行属性注入
          • @Value 注解通常用于外部配置的属性注入,具体用法为:@Value("${配置文件中的 key}")
      • YAML 配置文件
        • SpringBoot 提供了多种属性配置方式
          • application.properties
            • application.yml(与 yaml 相同)
              • application.yaml(与 yml 相同)
              • 常见配置文件格式对比
                • XML:臃肿
                  • properties:层级结构不清晰
                    • YAML(yml / yaml):简洁、数据为中心
                    • YAML 基本语法
                      • 大小写敏感。
                      • 数值前边必须有空格,作为分隔符。
                      • 使用缩进表示层级关系,缩进时,不允许使用 Tab 键,只能用空格(IntelliJ IDEA 中会自动将 Tab 转换为空格)。
                      • 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可。
                      • # 表示注释,从这个字符一直到行尾,都会被解析器忽略。
                    • YAML 数据格式
                      • 对象 / Map 集合:
                        • 数组 / List / Set 集合:
                      • @ConfigurationProperties 注解
                        • 自动注入的前提
                          • 有 Get 和 Set 方法(@Data 注解)
                          • 交给 IOC 容器管理,成为 Bean 对象(@Component 注解)
                          • @ConfigurationProperties 注解并配置 prefix 属性
                        • 示例:
                          • 消除红色警告(可选)
                            • “Spring Boot Configuration Annotation Processor not configured”
                            • 添加 Maven 坐标
                              • 该依赖会自动识别被 @ConfigurationProperties 标识的 Bean 对象,并在配置项中进行提示。
                              • 在配置文件中可以使用驼峰命名也可以使用提示的横杠命名
                            • @ConfigurationProperties 注解与 @Value 注解的对比
                              • 相同点
                                • 都用来注入外部配置的属性的。
                              • 不同点
                                • @Value 注解只能一个一个进行外部属性的注入。 @ConfigurationProperties 注解可以批量将外部的属性配置注入到 Bean 对象的属性中。
                        • Java
                        • JavaWeb
                        • 学技术
                        • JavaWeb开发_Day12JavaWeb开发_Day10
                          Loading...
                          目录