본문 바로가기

springboot8

[TIL]20230807 - Jsoup을 활용하여 크롤링하기 프로젝트를 시작하면서 주식 정보를 얻어와야 할 필요가 있어서 크롤링을 통해 주식 정보 데이터를 얻어와야했다. 스프링에서의 크롤링에 대해 구글링 해본 결과 Jsoup라이브러리를 많이 사용하고 내가 원하는 데이터를 가지고 있는 웹사이트에서도 사용이 가능할것 같아 Jsoup라이브러리를 사용하여 크롤링을 시도해 보았다. Jsoup이란 HTML문서에 저장된 데이터를 구문 분석, 추출 밑 조작하도록 설계된 오픈 소스 Java 라이브러리이다. build.gradle 의존성 추가 implementation 'org.jsoup:jsoup:1.15.3' 내가 크롤링한 웹사이트 https://finance.naver.com/sise/sise_market_sum.nhn?&page=1 우리가 필요한 데이터는 테이블의 바디에 있.. 2023. 8. 7.
[TIL]20230719 - 트러블 슈팅 배포환경에서 S3 이미지 업로드 불가능 현상 문제 발생 https://tjsdn9803.tistory.com/71 [TIL]20230718 - Spring Boot 이미지 업로드 구현 1. 이미지 업로드 방식 이미지파일을 업로드하여 저장하는 방법은 크게 두가지로 나뉜다. 첫 번째는 이미지 자체의 데이터를 BLOB형식 그대로 DB에 저장하는 방식이다. BLOB(Binary Large Object) : 이미 tjsdn9803.tistory.com 지난 포스팅에서 이미지 업로드 기능을 구현하여서 로컬환경에서 이미지가 정상적으로 업로드 되는것을 확인하였다. 그래서 깃허브에 push함 으로써 Github Actions를 통해 CI/CD로 Ec2인스턴스에 배포하였다. 하지만 배포환경에서 이미지와 함께 게시글 업로드시 DB에 imagePath가 null로 저장.. 2023. 7. 19.
[WIL]20230710~20230716 CORS CORS(Cross-Origin Resource Sharing) CORS는 Cross-Origin Resource sharing의 줄임말로 직역하면 교차 출처 리소스 공유이다. URL은 다음과 같은 구성 요소로 이루어져있는데 출처(Origin)란 Protocol과 Host 그리고 포트까지를 포함한것을 의미한다. 포트번호는 생략이 가능한데 이는 HTTP, HTTPS프로토콜의 기본 포트 번호가 정해져 있기 때문이다. 하지만 출처에 포트번호가 생략되지 않고 명시되어있다면 포트 번호까지 같아야 같은 출처라고 인정된다. 웹 생태계에는 다른 출처로의 리소스 요청을 제한하는 것과 관련된 두가지 정책이 존재한다. 한 가지는 CORS이고 또 한가지는 SOP(Same-Origin Policy)이다. SOP정책은 말그대로 .. 2023. 7. 16.
[TIL]20230710 - 게시글 및 댓글에 좋아요 기능 구현 오늘 진행한 과제 Lv5의 요구조건으로는 기존의 진행했던 게시판 프로젝트에서 댓글과 게시글에 좋아요 기능을 구현하는 것이었다. 그래서 좋아요와 회원, 게시글, 댓글간 연관관계에 대해 생각해보았다. 우선 게시글의 좋아요에 대해서만 생각해보면 회원은 게시글에 좋아요를 누를 수 있다. 여러 회원이 여러 게시글에 좋아요를 누를 수 있다. 이는 M:N관계이므로 이를 풀어서 새로운 Like엔티티를 만들어 회원엔티티, 게시글엔티티와 각각 N:1관계를 맺어주었다. 그 후 컨트롤러, 서비스, 리포지토리 클래스를 각각 만들어주었다. LikeService클래스에서는 각각 좋아요 저장, 삭제에 해당하는 로직이 담긴 메소드를 작성하였다. 좋아요를 저장하는 메소드에서는 좋아요를 누를 postId와 JWT인증을 통해 유저 객체를 .. 2023. 7. 10.
SpringBoot를 활용하여 웹페이지 만들기(4)-회원가입 기능 개발 1. 회원가입 기능 비즈니스 요구사항에서 회원객체는 다음과 같다. 이메일(로그인) 패스워드 이름 닉넴(중복 불가) id(랜덤)고유값 idx(0123...) 언제 회원가입 언제 업데이트 상태 활성 비활성 회원가입은 클라이언트가 이메일, 패스워드, 이름, 닉네임 을 통해 가입하고 id, index, 회원가입 날짜, 업데이트 날짜, 상태는 가입시 자동으로 저장된다. 2. 홈 컨트롤러와 home.html생성 HomeController package hello.hellospring.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @Controlle.. 2023. 6. 1.
SpringBoot를 활용하여 웹페이지 만들기(3)-회원관리 서비스 개발-비즈니스 요구사항 정리, 컨트롤러-서비스-리포지토리-도메인 구현 1. 비즈니스 요구사항 정리 다음과 같은 요구사항을 받았다 가정하고 회원로그인 서비스를 개발해보겠다. 1-1. 회원 객체의 속성 이메일(로그인) 패스워드 이름 닉넴(중복 불가) id(랜덤)고유값 idx(0123...) 언제 회원가입 언제 업데이트 상태 활성 비활성 1-2. 로그인 이메일과 패스워드로 로그인 1-3. 로그인 했을 때 JWT토큰 발행 2. 회원 도메인, 컨트롤러, 서비스, 레포지토리 생성 2-1 Member엔티티 @Entity public class Member { @Id private Long id; @Column private String appendDate; @Column(unique = true) private String email; @Column private Long index;.. 2023. 6. 1.