From 4ed2199e64487c49b3e64d3ebb28766a46c27ece Mon Sep 17 00:00:00 2001 From: leeseohyun Date: Fri, 10 Nov 2023 23:45:35 +0900 Subject: [PATCH 1/4] =?UTF-8?q?[=EC=9D=B4=EC=84=9C=ED=98=84]=204=EC=A3=BC?= =?UTF-8?q?=EC=B0=A8=20=EA=B3=BC=EC=A0=9C=20-=20complete?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../classDiagram_leeseohyun.PNG" | Bin 0 -> 54503 bytes .../domain_leeseohyun/Blogpost.java" | 28 ++++++++++++++++++ .../domain_leeseohyun/Category.java" | 21 +++++++++++++ .../domain_leeseohyun/Resume.java" | 20 +++++++++++++ .../domain_leeseohyun/User.java" | 27 +++++++++++++++++ 5 files changed, 96 insertions(+) create mode 100644 "4\354\243\274\354\260\250 Server S-Day \352\263\274\354\240\234/classDiagram_leeseohyun.PNG" create mode 100644 "4\354\243\274\354\260\250 Server S-Day \352\263\274\354\240\234/domain_leeseohyun/Blogpost.java" create mode 100644 "4\354\243\274\354\260\250 Server S-Day \352\263\274\354\240\234/domain_leeseohyun/Category.java" create mode 100644 "4\354\243\274\354\260\250 Server S-Day \352\263\274\354\240\234/domain_leeseohyun/Resume.java" create mode 100644 "4\354\243\274\354\260\250 Server S-Day \352\263\274\354\240\234/domain_leeseohyun/User.java" diff --git "a/4\354\243\274\354\260\250 Server S-Day \352\263\274\354\240\234/classDiagram_leeseohyun.PNG" "b/4\354\243\274\354\260\250 Server S-Day \352\263\274\354\240\234/classDiagram_leeseohyun.PNG" new file mode 100644 index 0000000000000000000000000000000000000000..3cb7cdb18e99e71c3f4b9130be75703fc5d3becf GIT binary patch literal 54503 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 blogposts = new ArrayList<>(); +} diff --git "a/4\354\243\274\354\260\250 Server S-Day \352\263\274\354\240\234/domain_leeseohyun/Resume.java" "b/4\354\243\274\354\260\250 Server S-Day \352\263\274\354\240\234/domain_leeseohyun/Resume.java" new file mode 100644 index 0000000..4b7b9ba --- /dev/null +++ "b/4\354\243\274\354\260\250 Server S-Day \352\263\274\354\240\234/domain_leeseohyun/Resume.java" @@ -0,0 +1,20 @@ +package com.example.serverstudy4.domain_leeseohyun; + +import jakarta.persistence.*; +import lombok.Getter; +import lombok.Setter; + +@Entity +@Getter @Setter +public class Resume { + @Id + @GeneratedValue + @JoinColumn(name="resume_id") + private Long id; + private String title; //제목 + private String content; //내용 + + @ManyToOne //Many 쪽임 + @JoinColumn(name="user_id") + private User user; +} diff --git "a/4\354\243\274\354\260\250 Server S-Day \352\263\274\354\240\234/domain_leeseohyun/User.java" "b/4\354\243\274\354\260\250 Server S-Day \352\263\274\354\240\234/domain_leeseohyun/User.java" new file mode 100644 index 0000000..b4eb313 --- /dev/null +++ "b/4\354\243\274\354\260\250 Server S-Day \352\263\274\354\240\234/domain_leeseohyun/User.java" @@ -0,0 +1,27 @@ +package com.example.serverstudy4.domain_leeseohyun; + +import jakarta.persistence.*; +import lombok.Getter; +import lombok.Setter; + +import java.util.ArrayList; +import java.util.List; + +@Entity +@Getter +@Setter +public class User { + + @Id + @GeneratedValue + @Column(name="user_id") + private Long id; //id + private String name; //이름 + private int age; //나이 + private String country; //국가 + private String city; //도시 + private String postal_code; //우편번호 + + @OneToMany(mappedBy="user") //one 쪽이다 + private List blogposts = new ArrayList<>(); +} From 2eeb60072b2cbea85c4741fc7010148e576718cf Mon Sep 17 00:00:00 2001 From: leeseohyun Date: Sat, 18 Nov 2023 16:23:58 +0900 Subject: [PATCH 2/4] =?UTF-8?q?[=EC=9D=B4=EC=84=9C=ED=98=84]=205=EC=A3=BC?= =?UTF-8?q?=EC=B0=A8=20=EA=B3=BC=EC=A0=9C=20-=20ing?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../files_leeseohyun/S3Controller.java" | 53 +++++++++++++++++++ .../files_leeseohyun/application.yml" | 15 ++++++ ...4\354\260\250_\352\263\274\354\240\234.md" | 0 3 files changed, 68 insertions(+) create mode 100644 "5\354\243\274\354\260\250 Server S-Day \352\263\274\354\240\234/files_leeseohyun/S3Controller.java" create mode 100644 "5\354\243\274\354\260\250 Server S-Day \352\263\274\354\240\234/files_leeseohyun/application.yml" create mode 100644 "5\354\243\274\354\260\250 Server S-Day \352\263\274\354\240\234/\354\235\264\354\204\234\355\230\204_5\354\243\274\354\260\250_\352\263\274\354\240\234.md" diff --git "a/5\354\243\274\354\260\250 Server S-Day \352\263\274\354\240\234/files_leeseohyun/S3Controller.java" "b/5\354\243\274\354\260\250 Server S-Day \352\263\274\354\240\234/files_leeseohyun/S3Controller.java" new file mode 100644 index 0000000..c08ae6e --- /dev/null +++ "b/5\354\243\274\354\260\250 Server S-Day \352\263\274\354\240\234/files_leeseohyun/S3Controller.java" @@ -0,0 +1,53 @@ +package ServerStudy5Cloud.ServerStudy5Cloud.Controller; + +import com.amazonaws.services.s3.AmazonS3; +import com.amazonaws.services.s3.model.CannedAccessControlList; +import com.amazonaws.services.s3.model.S3ObjectSummary; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + + +@Controller +@RequiredArgsConstructor +public class S3Controller { + + private final AmazonS3 amazonS3; + + @Value("${cloud.aws.s3.bucket}") + private String bucketName; + + @GetMapping("/") + public String listFiles(Model model) { + // S3 버킷의 객체 목록 가져오기 + List objectSummaries = amazonS3.listObjectsV2(bucketName).getObjectSummaries(); + // getUrl로 객체 URL 가져온 후, List에 넣어 index.html에 반환 + List fileUrls = new ArrayList<>(); + for (S3ObjectSummary os : objectSummaries) { + String url = amazonS3.getUrl(bucketName, os.getKey()).toString(); + fileUrls.add(url); + } + model.addAttribute("fileUrls", fileUrls); + return "index"; + } + + @PostMapping("/upload") + public String uploadFile(@RequestParam("file") MultipartFile file) throws IOException { + String filename = file.getOriginalFilename(); + // putObject로 파일을 S3 버킷에 업로드 + amazonS3.putObject(bucketName, filename, file.getInputStream(), null); + // ACL 퍼블릭으로 설정 + amazonS3.setObjectAcl(bucketName, filename, CannedAccessControlList.PublicRead); + return "redirect:/"; + } +} +// 동작 영상 : https://drive.google.com/file/d/10wPjsBbnbIR5E6pKbwmr2sZ-GsLY-FWP/view?usp=sharing \ No newline at end of file diff --git "a/5\354\243\274\354\260\250 Server S-Day \352\263\274\354\240\234/files_leeseohyun/application.yml" "b/5\354\243\274\354\260\250 Server S-Day \352\263\274\354\240\234/files_leeseohyun/application.yml" new file mode 100644 index 0000000..4b7489c --- /dev/null +++ "b/5\354\243\274\354\260\250 Server S-Day \352\263\274\354\240\234/files_leeseohyun/application.yml" @@ -0,0 +1,15 @@ +spring: + config: + import: optional:file:.env[.properties] +# 이렇게 .env 파일을 사용하려고 했지만 잘 동작하지 않아서... 빌드 Edit Configuration에서 Environment variables로 설정해서 했습니다...! +cloud: + aws: + s3: + bucket: ${S3_BUCKET} + stack.auto: false + region.static: ap-northeast-2 + credentials: + access-key: ${CREDENTIALS_ACCESS_KEY} + secret-key: ${CREDENTIALS_SECRET_KEY} +server: + port: 8080 \ No newline at end of file diff --git "a/5\354\243\274\354\260\250 Server S-Day \352\263\274\354\240\234/\354\235\264\354\204\234\355\230\204_5\354\243\274\354\260\250_\352\263\274\354\240\234.md" "b/5\354\243\274\354\260\250 Server S-Day \352\263\274\354\240\234/\354\235\264\354\204\234\355\230\204_5\354\243\274\354\260\250_\352\263\274\354\240\234.md" new file mode 100644 index 0000000..e69de29 From bd34917495cb7f3e6b7567a34893b6674b35435e Mon Sep 17 00:00:00 2001 From: Seohyun Lee <32611398+seohyun-lee@users.noreply.github.com> Date: Sat, 18 Nov 2023 16:35:34 +0900 Subject: [PATCH 3/4] =?UTF-8?q?[=EC=9D=B4=EC=84=9C=ED=98=84]=205=EC=A3=BC?= =?UTF-8?q?=EC=B0=A8=20=EA=B3=BC=EC=A0=9C=20-=20complete?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...4\243\274\354\260\250_\352\263\274\354\240\234.md" | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git "a/5\354\243\274\354\260\250 Server S-Day \352\263\274\354\240\234/\354\235\264\354\204\234\355\230\204_5\354\243\274\354\260\250_\352\263\274\354\240\234.md" "b/5\354\243\274\354\260\250 Server S-Day \352\263\274\354\240\234/\354\235\264\354\204\234\355\230\204_5\354\243\274\354\260\250_\352\263\274\354\240\234.md" index e69de29..fa3f376 100644 --- "a/5\354\243\274\354\260\250 Server S-Day \352\263\274\354\240\234/\354\235\264\354\204\234\355\230\204_5\354\243\274\354\260\250_\352\263\274\354\240\234.md" +++ "b/5\354\243\274\354\260\250 Server S-Day \352\263\274\354\240\234/\354\235\264\354\204\234\355\230\204_5\354\243\274\354\260\250_\352\263\274\354\240\234.md" @@ -0,0 +1,11 @@ +### 5주차 Server S-Day 과제 - 이서현 +> 과제: S3에 객체 업로드 및 조회 + +> 심화 과제: application.yml 변경 + +## 과제 +### 사진 +![image](https://github.com/GDSC-Ewha-5th/GDSC-Server-5th/assets/32611398/305cc543-d0df-46bc-8c28-d615a45a70fa) + +### 참고 자료 +* [Spring] 설정 파일 환경변수를 통해 숨기기 — Shin._.Mallang https://ttl-blog.tistory.com/1125 From 48b6237f43646c306e191900a68d6b18bd451e97 Mon Sep 17 00:00:00 2001 From: leeseohyun Date: Sat, 18 Nov 2023 16:38:02 +0900 Subject: [PATCH 4/4] =?UTF-8?q?=ED=8C=8C=EC=9D=BC=20=EC=9C=84=EC=B9=98=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../files_leeseohyun/S3Controller.java" | 53 ------------------- .../files_leeseohyun/application.yml" | 15 ------ ...4\354\260\250_\352\263\274\354\240\234.md" | 11 ---- 3 files changed, 79 deletions(-) delete mode 100644 "5\354\243\274\354\260\250 Server S-Day \352\263\274\354\240\234/files_leeseohyun/S3Controller.java" delete mode 100644 "5\354\243\274\354\260\250 Server S-Day \352\263\274\354\240\234/files_leeseohyun/application.yml" delete mode 100644 "5\354\243\274\354\260\250 Server S-Day \352\263\274\354\240\234/\354\235\264\354\204\234\355\230\204_5\354\243\274\354\260\250_\352\263\274\354\240\234.md" diff --git "a/5\354\243\274\354\260\250 Server S-Day \352\263\274\354\240\234/files_leeseohyun/S3Controller.java" "b/5\354\243\274\354\260\250 Server S-Day \352\263\274\354\240\234/files_leeseohyun/S3Controller.java" deleted file mode 100644 index c08ae6e..0000000 --- "a/5\354\243\274\354\260\250 Server S-Day \352\263\274\354\240\234/files_leeseohyun/S3Controller.java" +++ /dev/null @@ -1,53 +0,0 @@ -package ServerStudy5Cloud.ServerStudy5Cloud.Controller; - -import com.amazonaws.services.s3.AmazonS3; -import com.amazonaws.services.s3.model.CannedAccessControlList; -import com.amazonaws.services.s3.model.S3ObjectSummary; -import lombok.RequiredArgsConstructor; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Controller; -import org.springframework.ui.Model; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.multipart.MultipartFile; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - - -@Controller -@RequiredArgsConstructor -public class S3Controller { - - private final AmazonS3 amazonS3; - - @Value("${cloud.aws.s3.bucket}") - private String bucketName; - - @GetMapping("/") - public String listFiles(Model model) { - // S3 버킷의 객체 목록 가져오기 - List objectSummaries = amazonS3.listObjectsV2(bucketName).getObjectSummaries(); - // getUrl로 객체 URL 가져온 후, List에 넣어 index.html에 반환 - List fileUrls = new ArrayList<>(); - for (S3ObjectSummary os : objectSummaries) { - String url = amazonS3.getUrl(bucketName, os.getKey()).toString(); - fileUrls.add(url); - } - model.addAttribute("fileUrls", fileUrls); - return "index"; - } - - @PostMapping("/upload") - public String uploadFile(@RequestParam("file") MultipartFile file) throws IOException { - String filename = file.getOriginalFilename(); - // putObject로 파일을 S3 버킷에 업로드 - amazonS3.putObject(bucketName, filename, file.getInputStream(), null); - // ACL 퍼블릭으로 설정 - amazonS3.setObjectAcl(bucketName, filename, CannedAccessControlList.PublicRead); - return "redirect:/"; - } -} -// 동작 영상 : https://drive.google.com/file/d/10wPjsBbnbIR5E6pKbwmr2sZ-GsLY-FWP/view?usp=sharing \ No newline at end of file diff --git "a/5\354\243\274\354\260\250 Server S-Day \352\263\274\354\240\234/files_leeseohyun/application.yml" "b/5\354\243\274\354\260\250 Server S-Day \352\263\274\354\240\234/files_leeseohyun/application.yml" deleted file mode 100644 index 4b7489c..0000000 --- "a/5\354\243\274\354\260\250 Server S-Day \352\263\274\354\240\234/files_leeseohyun/application.yml" +++ /dev/null @@ -1,15 +0,0 @@ -spring: - config: - import: optional:file:.env[.properties] -# 이렇게 .env 파일을 사용하려고 했지만 잘 동작하지 않아서... 빌드 Edit Configuration에서 Environment variables로 설정해서 했습니다...! -cloud: - aws: - s3: - bucket: ${S3_BUCKET} - stack.auto: false - region.static: ap-northeast-2 - credentials: - access-key: ${CREDENTIALS_ACCESS_KEY} - secret-key: ${CREDENTIALS_SECRET_KEY} -server: - port: 8080 \ No newline at end of file diff --git "a/5\354\243\274\354\260\250 Server S-Day \352\263\274\354\240\234/\354\235\264\354\204\234\355\230\204_5\354\243\274\354\260\250_\352\263\274\354\240\234.md" "b/5\354\243\274\354\260\250 Server S-Day \352\263\274\354\240\234/\354\235\264\354\204\234\355\230\204_5\354\243\274\354\260\250_\352\263\274\354\240\234.md" deleted file mode 100644 index fa3f376..0000000 --- "a/5\354\243\274\354\260\250 Server S-Day \352\263\274\354\240\234/\354\235\264\354\204\234\355\230\204_5\354\243\274\354\260\250_\352\263\274\354\240\234.md" +++ /dev/null @@ -1,11 +0,0 @@ -### 5주차 Server S-Day 과제 - 이서현 -> 과제: S3에 객체 업로드 및 조회 - -> 심화 과제: application.yml 변경 - -## 과제 -### 사진 -![image](https://github.com/GDSC-Ewha-5th/GDSC-Server-5th/assets/32611398/305cc543-d0df-46bc-8c28-d615a45a70fa) - -### 참고 자료 -* [Spring] 설정 파일 환경변수를 통해 숨기기 — Shin._.Mallang https://ttl-blog.tistory.com/1125