본문 바로가기

Java/구현하기(Implementation)9

23.07.05) 나만의 Blog 구현하기 ResponseDto를 리스트로 래핑 후 반환하기 더보기 responsedto를 하나씩 리스트로 감싸서 반환하면 데이터의 구조를 명확히 표현하고 추후에 메타데이터를 추가하거나 다른 종류의 데이터를 함께 반환하는 것이 쉬워진다. 만약 응답 형태를 변경할 가능성이 낮고, API구조가 단순하다면 원래처럼 그냥 바로 responsedto로 반환하는것이 낫다. @Getter public class PostListResponseDto { private List postList; public PostListResponseDto(List postList) { this.postList = postList; } } 위 처럼 ListDto 하나 생성 후에 아래 처럼 원래의 responsedto를 랩핑하여 반환하면 된다. p.. 2023. 7. 5.
23.07.04) 나만의 Blog 구현하기 Post 엔터티에서 User에 있는 id, password를 받아와서 데이터베이스에 저장 해야 하는데, User의 id와 password를 가져오지 못함. 더보기 로그인 할 때 발급 받았던 토큰에는 사용자 정보가 담겨져 있음. jwtUtil에 사용자 조회하는 메서드가 있으니 이것을 활용하여 가져올 수 있음 public Claims getUserInfoFromToken(String token) { return Jwts.parserBuilder().setSigningKey(key).build().parseClaimsJws(token).getBody(); } 토큰에 있는 claims 을 가져와서 get 메서드를 사용하여 값을 추출할 수 있음 Claims claims = jwtUtil.getUserInfoFro.. 2023. 7. 4.
23.07.03) 나만의 Blog 구현하기 진행 상황: 회원 가입 API, 로그인 API 구현 완료. 앞으로 구현해야 할 것: 게시글 작성, 수정, 삭제 API를 토큰을 검사하여 유효한 토큰일 경우에만 동작하도록 수정. 복습필요: Servlet, 엔터티가 두 개 이상일 때 어떻게 조작해야 하는지 2023. 7. 3.
23.06.28) Spring 나만의 Blog 구현하기 데이터 베이스에 현재 시각이 저장 되지 않음 더보기 JPA Timestamped null 이란 키워드로 구글링 후 정보를 찾았다. application에 @EnableJpaAuditing 를 설정함으로써 JPA Auditing 을 사용한다고 알려줘야 했다. 참고: https://thalals.tistory.com/220 수정할 때 ID가 아닌 비밀번호로 일치여부를 확인한 후 수정해야 하는데 방법을 모름 더보기 private Blog findBlog(String password) { return blogRepository.findById(password).orElseThrow(() -> new IllegalArgumentException("선택한 메모는 존재하지 않습니다.") ); } findById는 L.. 2023. 6. 28.
23.06.27) Spring 나만의 Blog 구현하기 API 구현 더보기 전체 게시글 목록 조회 API 제목, 작성자명, 작성 내용, 작성 날짜를 조회하기 작성 날짜 기준 내림차순으로 정렬하기 게시글 작성 API 제목, 작성자명, 비밀번호, 작성 내용을 저장하고 저장된 게시글을 Client 로 반환하기 선택한 게시글 조회 API 선택한 게시글의 제목, 작성자명, 작성 날짜, 작성 내용을 조회하기 (검색 기능이 아닙니다. 간단한 게시글 조회만 구현해주세요.) 선택한 게시글 수정 API 수정을 요청할 때 수정할 데이터와 비밀번호를 같이 보내서 서버에서 비밀번호 일치 여부를 확인 한 후 제목, 작성자명, 작성 내용을 수정하고 수정된 게시글을 Client 로 반환하기 선택한 게시글 삭제 API 삭제를 요청할 때 비밀번호를 같이 보내서 서버에서 비밀번호 일치 여부를.. 2023. 6. 27.
23.06.22) Java 채팅 프로그램 구현하기 ●간단한 채팅 프로그램 구현하기 여러 사용자가 메시지를 보내고 받을 수 있는 채팅 프로그램입니다. ●기능 사용자 추가: 새로운 사용자를 채팅방에 추가할 수 있는 기능. 각 사용자는 고유한 사용자 이름을 가져야함. 메시지 보내기: 전송자의 이름과 메시지 내용을 포함한 메시지 보내기 기능. 메시지 확인: 최근에 보낸 메시지를 확인하는 기능. 채팅방의 대화 기록을 출력해야 함. 소스 코드: https://github.com/NHclub/Implementation/tree/main/src/chatProgram ●첫 번째 문제점: 멤버 설정과 클래스 구성 클래스와 멤버 변수들의 네이밍과 클래스에 맞게 분류를 혼자 힘으로 하지 못하고 있음.. 이것에 대해 더 많은 프로그램들의 동작 방식을 익혀야 함 ●두 번째 문제.. 2023. 6. 22.
23.06.21) Java 계좌 관리 프로그램 구현하기 ●계좌 관리 프로그램 구현하기 은행에서 고객들의 계좌를 관리하는 프로그램입니다. ●구현 멤버 Account 클래스 customerName: 고객 이름 balance: 현재 잔액 accountNumber: 계좌 번호 deposit(long amount, ): 입금 기능 withdraw(long amount): 출금 기능, 출금하려는 금액이 현재 잔액보다 많을 경우 출금이 되지 않아야 함. getBalance(): 현재 잔액 출력 소스 코드: https://github.com/NHclub/Implementation/tree/main/src/account ●의문점: 입금과 출금을 왜 Bank 클래스가 아니라 Account 클래스에서 진행해야 되는가? 캡슐화의 원칙에 따라서 객체에 대한 연산은 객체 내부에서 일.. 2023. 6. 21.
23.06.20) Java 계좌 관리 프로그램 구현하기(Bank class 구현) ●계좌 관리 프로그램 구현하기 은행에서 고객들의 계좌를 관리하는 프로그램입니다. ●구현 멤버 Bank 클래스 addAccount(String customerName, long initialBalance): 계좌 생성 printAllAccounts(String customerName): 모든 계좌 정보 출력 소스 코드: https://github.com/NHclub/Implementation/tree/main/src/account ●첫 번째 문제점: 계좌 번호 생성 로직 로직을 구현할 아이디어가 떠오르지 않음. 난수를 13개 생성하고 그 난수가 accounstList에 없는 계좌일 때 까지 반복하도록 구현함. public void addAccount(String customerName, long initi.. 2023. 6. 20.
23-06-19) Java 캡슐 판매 기계 구현하기 ●캡슐 판매 기계 구현하기 캡슐 판매 기계는 다양한 상품을 무작위로 판매합니다. 이 클래스는 ArrayList 형식의 상품 목록을 가지고 있어야 합니다. 아래의 기능을 구현해야 합니다. 상품 추가 addProduct(String product): 상품 이름을 입력하여 새로운 상품을 추가합니다. 같은 이름의 상품이 이미 존재한다면 추가하지 않습니다. 상품 판매 sellProduct(): 무작위로 한 가지 상품을 판매(출력)합니다. 만약 판매할 상품이 없다면, "상품이 없습니다."를 출력합니다. 상품 목록 출력 printProducts(): 기계에 남아있는 모든 상품의 목록을 출력합니다. 소스코드: https://github.com/NHclub/Implementation/blob/main/src/Capsul.. 2023. 6. 19.