전체 글71 [JPA로 게시판 만들기] Spring Interceptor를 사용한 인증 체크 스프링 인터셉터서블릿 필터와 같이 웹과 관련된 공통 관심 사항을 효과적으로 해결하는 기술URL만 알면 로그인을 하지 않아도 여러 페이지에 접근이 가능하기 때문에, 이를 방지하기 위해 스프링 인터셉터를 사용자세한 내용은 여기에 게시하였습니다.스프링 인터셉터 흐름과 제한정상 요청HTTP 요청 -> WAS -> 필터 -> 서블릿 -> 스프링 인터셉터 -> 컨트롤러 // 정상 로그인 시비적절한 요청HTTP 요청 -> WAS -> 필터 -> 서블릿 -> 스프링 인터셉터 (이후 컨트롤러 호출X)인터셉터 구현LoginCheckInterceptor.javaimport jakarta.servlet.http.HttpServletRequest;import jakarta.servlet.http.HttpServletRespon.. 2025. 3. 4. [JPA로 게시판 만들기] Session을 사용한 로그인, 로그아웃 로그인, 로그아웃 과정로그인 과정아이디, 비밀번호 일치 여부 확인불일치 시 로그인 화면 페이지로 이동일치 시 세션 생성 및 저장세션 유지 시 메인 페이지(home.html)로 이동로그아웃 과정세션 제거세션 유지 확인서블릿 세션 적용HomeController.java@Controller@RequiredArgsConstructorpublic class HomeController { private final MemberRepository memberRepository; @GetMapping("/") public String homeLogin(HttpServletRequest request, Model model){ HttpSession session = request.getSess.. 2025. 2. 19. [JPA로 게시판 만들기] 지연로딩 적용 지연로딩필요한 시점에 연관된 객체의 데이터를 불러오는 것@xxToxx(fetch = FetchType.LAZY)먼저 프록시를 가져온 후, 실제 사용 시 초기화(DB쿼리가 나감)xToOne 관계의 경우 디폴트는 EAGER(즉시로딩)이므로 변경 필요지연로딩 적용package project.post.domain;import jakarta.persistence.*;import lombok.Getter;import lombok.Setter;import java.time.LocalDateTime;@Entity@Getter@Setterpublic class Post { @Id @GeneratedValue @Column(name = "post_id") private Long id; priva.. 2025. 2. 5. [JPA로 게시판 만들기] API 개발 Member 관련 API회원 등록 API@PostMapping("/api/members")public CreateMemberResponse saveMember(@RequestBody @Valid CreateMemberRequest request){ Member member = new Member(); member.setEmail(request.getEmail()); member.setAddress(new Address(request.getCity(), request.getZip(), request.getStreet())); Long memberId = memberService.join(member); return new CreateMemberResponse(memberId);}.. 2025. 2. 5. Bean property '필드명' is not readable or has an invalid getter method 발생게시판 만들기 프로젝트 진행 도중 컨트롤러에서 View를 호출하는 과정에서 발생하였다.에러로그Bean property 'id' is not readable or has an invalid getter methodid 필드를 읽을 수 없거나, getter 메서드가 잘못되었다고 한다. 필자의 경우는 id 필드를 읽을 수 없는 경우였다.해결PostForm.javaimport jakarta.validation.constraints.NotEmpty;import lombok.Getter;import lombok.Setter;@Getter@Setterpublic class PostForm { private Long id; // 추가 @NotEmpty(message = "제목은 필수입니다.") .. 2025. 1. 28. [JPA로 게시판 만들기] 테스트 코드 작성 시작하기 전에지난 게시글에 TDD와 BDD에 대해서 학습하였다. 이를 적용하기 위해 테스트 코드를 작성하였으며 BDD 방식으로 진행하였다.Member 관련 테스트 코드MemberServiceTest.java...@RunWith(SpringRunner.class)@SpringBootTest@Transactionalclass MemberServiceTest { @Autowired MemberService memberService; @Test void 회원가입() { // given Member member = new Member(); member.setEmail("test@test.com"); member.setAddress(new Ad.. 2025. 1. 23. 이전 1 2 3 4 ··· 12 다음