게시글 상세보기 기능 게시글 상세보기 버튼 클릭 시 /board/{id} URI로 GET요청을 보냅니다. /board/{id} 요청에 응답하기 위해 BoardController에 메서드를 생성합니다. 상세보기를 위한 view는 board/detail.html에서 생성합니다. 해당 순서에 따라 코드를 추가해보겠습니다. board/layout.html 게시글 레이아웃에서 상세보기 버튼 클릭 시 /board/{id} 로 GET요청을 보낼 수 있도록 코드를 추가 해줍니다. URI에 게시글의 ID정보를 포함하여 GET 요청을 전송합니다. 상세 보기 다음으로 해당 요청에 응답할 메서드를 컨트롤러에 추가해줍니다. BoardController.java URI에 포함된 id 값을 @PathVariable 어노테이션을 사..
분류 전체보기
게시글 페이징 처리 게시글 리스트 요청에 따른 Controller 생성 / 혹은 /board/myPost 요청이 오면 요청에 따른 게시글 조회 페이지를 응답할 수 있도록 컨트롤러에 메서드를 생성하고 매핑합니다. 게시글 리스트 view 생성 게시글은 4개씩 id에 의해 정렬되어 페이징될 것입니다. 비즈니스 로직을 담당하는 Service 파일 생성 전체 게시글을 조회하는 기능 나의 게시글을 조회하는 기능 페이징 처리 기능 구현 전 Pageable 인터페이스에 대해 먼저 알아보려 합니다. Pageable Pageable은 Spring Data 프로젝트에서 제공하는 인터페이스 중 하나로, 데이터베이스에서 검색 결과를 페이징 처리할 수 있도록 돕는 인터페이스입니다. Pageable을 사용하면 검색 결과의 일부분만..
게시글 작성 기능 글 작성 form 요청에 대한 컨트롤러 생성 /board/saveForm 요청이 오면 template/board/saveForm.html 을 응답할 수 있도록 컨트롤러에 메서드를 생성하고 매핑합니다. 글 작성 html Form 생성 글 작성 Form에서는 제목과 내용을 입력받고 버튼 클릭 시 api 요청을 보낼 것입니다. 내용 작성은 BootStrap5 환경에서 summernote 라이브러리를 사용하여 입력 받습니다. ajax 통신을 위한 javascript 파일 생성 btn-save 버튼 클릭 시 제목, 내용을 json 형식으로 /api/board 에 POST 요청을 전송합니다. api 요청에 대한 Controller 생성 Board 객체와 PrincipalDetail 객체를 파라미터..
스프링 시큐리티 로그인 기능 구현 스프링 시큐리티는 스프링 기반의 애플리케이션 보안을 담당하는 프레임워크입니다. 이를 이용하여 로그인 기능을 구현할 수 있습니다. 로그인 기능을 구현하기 위해서는 스프링 시큐리티에서 제공하는 AuthenticationManager와 UserDetailsService를 구현해야 합니다. AuthenticationManager는 인증(Authentication)을 담당하고, UserDetailsService는 사용자 정보를 가져오는 역할을 합니다. 또한, 로그인 페이지와 로그인 성공/실패 시의 처리를 위한 컨트롤러와 뷰를 구현해야 합니다. 로그인 폼에서 입력한 아이디와 비밀번호를 AuthenticationManager에 전달하여 인증을 수행하고, 인증 결과에 따라 로그인 성공..
sec:authorize는 스프링 시큐리티에서 제공하는 기능이므로, 스프링 시큐리티 의존성을 추가하셔야 합니다. 또한 isAuthenticated() 메서드를 사용하기 위해서는 스프링 시큐리티 설정 파일에서 로그인 인증을 구현해야 합니다. 설정 파일에 인증 구현을 추가하신 후 sec:authorize 기능을 사용하시면 됩니다. 스프링 시큐리티로 구현한 로그인 이후 권한에 따른 메뉴바의 아이템을 다르게 설정 해주었습니다. ✅ `isAuthenticated()` 메서드는 스프링 시큐리티에서 제공하는 메서드 중 하나로, 현재 사용자가 인증된 사용자인지를 확인해주는 역할을 합니다. 만약 현재 사용자가 인증된 사용자이면 true를 반환하고, 그렇지 않으면 false를 반환합니다. 이 메서드를 사용하여 로그인한 사..
트랜잭션(Transaction): 일이 처리되는 가장 작은 단위 DB 격리 수준 Read commit A의 트랜잭션 시작 이후 Update 문(임꺽정 → 장보고)을 수행했을 때 기존 데이터(임꺽정)를 Undo 영역에 저장하고 관리한다. B가 Select 문을 수행했을 때 Undo 영역의 데이터(임꺽정)를 읽는다. A가 Commit(트랜잭션 종료) 했을 때, Undo 영역의 데이터가 변경된 데이터(장보고)로 변경된다. 문제점 위와 같은 경우에는 B가 트랜잭션을 시작하지않고 Select문만 실행하기 때문에 문제가 없다. 하지만 A와 정산이라는 프로그램이 트랜잭션을 시작하고 A가 데이터를 Update 한 이후 커밋을 진행한다. 이러한 문제는 주로 입금, 출금 처리가 진행되는 금전적인 처리에서 주로 발생하며, ..
회원 가입 기능은 Ajax 통신을 기반으로 구현합니다. ✅ ajax 를 사용하는 이유 1. 요청에 대한 응답을 html이 아닌 Data(Json)으로 받기 위해 2. 통신의 효율성을 높이기 위한 비동기 통신을 하기 위해 joinForm 에서 클라이언트가 입력한 데이터를 담아 javaScript를 통한 ajax통신으로 서버에 요청하고 컨트롤러에서 회원가입 비즈니스 로직을 실행하고, 결과 값(data)을 반환합니다. 컨트롤러는 데이터를 반환하기 때문에 @RestController어노테이션을 사용합니다. joinForm.html UserName: Password: Email: 회원가입 회원 가입 버튼 시 form 태그의 데이터를 ajax 통신으로 서버에 전송하는 방식을 구현합니다. 해당 기능을 user.js에..
스프링부트는 웹 애플리케이션 개발에 매우 적합한 프레임워크입니다. 다양한 기능과 유연한 설정으로 인해 많은 개발자들이 사용하고 있습니다. 이에 따라 스프링부트를 활용한 다양한 프로젝트 아이디어가 등장하고 있습니다. 쇼핑몰 웹 애플리케이션 스프링부트를 이용하여 쇼핑몰 웹 애플리케이션을 개발해보는 것은 어떨까요? 상품 등록, 주문 처리, 결제 처리 등 쇼핑몰에서 필요한 기능을 구현하여 사용자들에게 편리한 쇼핑 경험을 제공할 수 있습니다. SNS 웹 애플리케이션 스프링부트와 스프링 시큐리티를 사용하여 SNS 웹 애플리케이션을 개발해보는 것은 어떨까요? 사용자 인증, 게시글 작성, 댓글 작성, 좋아요 기능 등의 기능을 구현하여 사용자간의 소통과 교류를 도모할 수 있습니다. 블로그 웹 애플리케이션 스프링부트와 마..
Lombok은 자바 언어의 특정한 기능을 자동으로 생성해주는 라이브러리입니다. 이 문서는 Lombok 라이브러리의 사용 방법과 주요 기능들을 설명합니다. 설치 방법 Lombok은 일반적인 자바 라이브러리처럼, 빌드 도구에서 의존성을 추가하여 사용할 수 있습니다. Maven Maven을 사용하는 경우, pom.xml에 다음 코드를 추가해 주세요. org.projectlombok lombok {버전} provided {버전} 부분에는 사용하고자 하는 Lombok 라이브러리의 버전을 입력해 주세요. Gradle Gradle을 사용하는 경우, build.gradle에 다음 코드를 추가해 주세요. compileOnly 'org.projectlombok:lombok:{버전}' annotationProcessor '..