화면은 html, css, jquery, bootstrap을 활용하여 제작하였습니다.(소요 기간: 23.11.13 ~ 23.12.01)
아이디 중복검사를 위해 ajax를 통해 서버로 data를 전송 했는데 서버에 data가 전달되지 않았다.Spring Security에서 권한을 모두 permit 해줬음에도 불구하고 계속해서 403 에러가 발생했다.알고보니 csrf token 누락으로 인해 발생한 문제였
DTO - String userId / Entity - Long id , String userId두 객체를 ModelMapper를 통해 변환 할 때 DTO userId가 Entity id에 매핑되어 변환을 시도해서 NumberFormatException이 발생한다.구글
AccountService에서 AuthenticationManager를 의존성 주입 후 아래와 같은 순환 참조(circular reference)가 발생했다. 확인해 보니 AccountService도 AuthenticationManager를 참조하고 있고, Authen
DB에서 category list를 가져와 json 객체로 변환 후, controller에서 model을 통해 상품 등록 링크(/admin/item/new)로 전달했다. list가 잘 전달되었는지 확인하기 위해 console.log를 통해 list를 출력해봤는데 아래와
상품 등록 화면으로부터 사용자가 입력한 상품 정보와, 상품 이미지 파일을 전달 받는다.상품 정보들은 ItemFormDto 객체에 매핑하고, 상품 이미지 파일은 List<MultipartFile> itemImgFileList 형태로 전달 받는다.별도로 서버단에서 item
해당 포스팅에서는 상품 수정 기능의 흐름에 대해서 정리해 보고자 한다.상품 수정 기능의 흐름은 다음과 같다.ControllerItemServiceItemImgServiceFileService상품 수정 화면으로부터 사용자가 입력한 아이템 정보와 이미지 파일 정보를 전달받
해당 포스팅에서는 상품 주문 기능의 흐름에 대해서 정리해 보고자 한다.ControllerOrderService상품 화면으로부터 사용자가 입력한 주문 정보와 사용자의 계정 정보를 전달받는다.상품을 주문하고 주문 정보를 DB에 저장한다. (Order Service에 위임)
해당 포스팅에서는 장바구니 추가 기능의 흐름에 대해서 정리해 보고자 한다.ControllerCartService화면으로부터 사용자가 입력한 장바구니 정보를 전달받는다. (장바구니에 담은 상품 id와 상품 개수)장바구니를 생성하고 DB에 저장한다. (CartService
해당 포스팅에서는 장바구니 수정 기능의 흐름에 대해서 정리해 보고자 한다.ControllerCartService장바구니 수정 기능의 흐름은 다음과 같다.
해당 포스팅에서는 장바구니 수정 기능의 흐름에 대해서 정리해 보고자 한다.장바구니 삭제 기능의 흐름은 다음과 같다.ControllerCartService사용자로부터 cartItemId(상품의 id), account(계정 정보) 값을 전달받는다.전달 받은 cartItem
해당 포스팅에서는 장바구니 주문 기능의 흐름에 대해서 정리해 보고자 한다.장바구니 주문 기능의 흐름은 다음과 같다.ControllerCartService비동기 통신을 이용하여 사용자가 주문하고자 하는 장바구니 상품들의 id 값을 CartOrderDto 객체에 매핑한다.
ShopProject는 AWS RDS 서비스를 이용하여 데이터베이스를 관리하였다.그런데 분명 AWS 프리티어를 사용중이고 과금이 되지 않도록 설정했는데 과금이 되고 있었다.청구서를 보면 0.005 per in-use public IPv4 address per hour,
해당 포스팅에서는 서버를 배포한 후 웹 페이지에 최초 접속할 때 발생한 문제와 그 해결 과정에 대해 다루고자 한다.배포된 서버에서 최초 접속 시 인증이 필요하지 않은 매핑 주소임에도 불구하고 무조건 로그인 페이지로 리다이렉트되는 문제가 발생했다. 이후 다시 해당 매핑
프로젝트를 시작한 이유와 목표, 프로젝트의 주요 기능에 대한 간략한 소개를 기술합니다.프로젝트에서 사용한 기술 스택과 도구들을 나열하고, 각각의 역할과 선택한 이유를 설명합니다.프로젝트를 진행하는 동안 겪은 주요 단계와 어려움을 기술합니다. 개발 과정에서 마주한 문제들
해당 포스팅에서는 상품 옵션 기능을 구현하고 기존의 상품 수정 메소드에 상품 옵션을 저장하는 과정에서 발생한 orphanRemoval 관련 문제를 해결한 과정에 대해서 정리해 보고자 한다.상품 옵션 기능을 구현하고 상품 수정 시 Product의 productOption
해당 포스팅에서는 공지사항, 리뷰, Q&A 테이블들을 하나의 Board 테이블로 통합한 과정에 대해서 간략하게 정리해 보고자 한다.프로젝트 초기에는 각각의 게시판이 서로 다른 특성을 가지고 있어서 개별 테이블을 만들어 관리하는 것이 좋겠다고 생각했다. 하지만 프로젝트를
사용자가 상품을 주문할 때 색상과 사이즈를 선택하여 구매할 수 있도록 기능을 구현했다. 기능은 원하는 대로 구현됐으나, 테이블 간의 관계가 너무 복잡해졌다는 것을 깨달았다.따라서 테이블 설계를 재검토하기로 결정하여 기존의 테이블을 모두 제거하고, 옵션, 옵션 값, 재고
여태 민감한 정보가 담긴 application.yml 설정 파일을 포함시킨채로 git에 commit을 했다.문제의 파일을 .gitignore에 추가하고 cash를 날려주니 최신 커밋에서는 더 이상 문제의 파일이 보이지 않는다.그러나 문제는 과거 커밋들에는 여전히 해당
해당 포스팅에서는 아임포트 결제 기능 구현 과정에 대해 간략하게 정리해 보고자 한다.아임포트는 국내 PG 결제 연동을 쉽게해주는 결제 API이다.PG(Payment Gateway)란?전자지급결제대행으로 온라인에서 상품이나 서비스를 결제할 때 다양한 결제수단으로 안전하게
개요 해당 포스팅에서는 배송지 관리 기능을 구현한 과정에 대해 간략하게 정리해 보고자 한다. Entity 추가 이전에는 회원 테이블에 배송지가 하나만 등록되어 있었다. 하지만 주문할 때 배송지가 자주 변경될 수 있기 때문에, 여러 배송지를 저장할 수 있도록 별도의 Ad
해당 포스팅에서는 상품을 구매 시 옵션(사이즈, 색상)을 선택하여 주문할 수 있도록 기능을 구현한 과정에 대해 간략하게 정리해 보고자 한다.상품의 옵션 기능을 개발하기 위해 가장 먼저 고려해야 할 것은 테이블 설계이다.간단하게 생각해 보면 필요한 테이블은 상품, 사이즈
해당 포스팅은 OrderService에 있는 주문 취소 메소드를 AdminService로 이동하는 과정에서 발생한 오류와 그 해결과정에 대해 다룬다.주문 취소 메소드를 OrderService에서 AdminService로 이동시키는 과정에서 오류가 발생했다. 기존에 Or
게시글에 댓글을 작성할 때 비밀글 설정을 한 경우 작성자와 관리자만 해당 댓글을 확인할 수 있도록 하기 위해 thymeleaf의 SpEL을 이용하여 작성자 본인이거나 관리자 권한을 갖고 있으면 해당 댓글이 보여지도록 구현하고자 했다.하지만 해당 코드를 실행하면 오류가
Qa 테이블과 Comment 테이블은 N:1 관계 (한 게시글에 여러 댓글을 작성할 수 있음)Account 테이블과 Comment 테이블은 1:N 관계 (한 명의 유저는 여러 댓글을 작성할 수 있음)댓글 작성은 로그인 한 유저만 작성할 수 있음.댓글 작성 시 비밀글 설
해당 포스팅에서는 게시판 답글 기능을 구현해 보고자 한다.계층형 게시판을 구현하기 위해 테이블의 구조를 변경하고 쿼리를 수정했다.답글의 계층이 계속 추가될 때 최신 답글이 위로 올라오도록 구현했다.Qa에 다음과 같은 필드들을 추가해 주었다.originNo: 원글(부모글
게시글 상세 화면에서 이전글 또는 다음글로 바로 이동할 수 있도록 구현했다.게시글을 클릭했을 때 이전글과 다음글의 정보까지 같이 조회하기 위해서 union all을 이용하여 쿼리를 작성하였다.JPQL이 union을 지원하지 않기 때문에 NativeQuery를 사용했다.
상품 리뷰 CRUD 테스트 코드를 작성하던 도중, 리뷰 게시판의 리뷰 list를 조회하는 쿼리에서 알 수 없는 오류가 발생했다.오류 메시지를 읽어봐도 원인이 무엇인지 도무지 감이 잡히지 않았다.아래는 오류가 발생한 쿼리문이다.디버깅을 해보니 count 쿼리를 날릴 때
리뷰 등록 기능을 기존의 form 전송 방식에서 ajax를 이용한 비동기 방식으로 변경하는 도중에 문제가 발생했다.리뷰는 정상적으로 등록이 되지만, ajax의 success 함수가 호출이 되지 않았다.이 문제 때문에 하루 종일 고민했는데 드디어 문제의 원인을 찾았다.a
로그인 후 마이 페이지에 접속 시 해당 회원의 총 주문 금액과 포인트를 사용자에게 보여주기 위해 JPQL을 이용하여 회원의 총 주문 금액과 포인트를 조회하는 쿼리를 작성하는 도중 발생한 문제들을 해결한 과정을 정리하고자 한다.총 2가지의 문제가 발생하였다.먼저 첫 번째
메인 화면에 정렬 버튼을 클릭할 시 상품들을 등록일, 낮은 가격, 높은 가격, 상품명 별로 정렬하고자 한다.현재 메인 화면에 상품들을 출력하는 쿼리는 Querydsl을 이용하여 작성하였다.동적 정렬을 구현하기 위해 단순히 API를 여러개 만들어 호출해도 문제는 없지만,
ckeditor5 readonly를 적용하기 위한 javascript 코드는 다음과 같다.