
🤍REST API) 카카오 로그인 API 서비스 환경설정 1. 카카오 개발자센터에 접속 후 로그인한다. 2. 애플리케이션을 추가하기 3. 아래와 같이 이름을 설정해서 추가해준다. 4. WEB 플랫폼 등록 5. 도메인 등록 6. 카카오 로그인 활성화 7. Redirect URI 설정 8. 동의 항목 설정 9. 이곳에서 카카오로그인 버튼 소스를 가져온다. (축약형, Middle) 10. 로그인 화면에 카카오 로그인 버튼을 추가한다. 11. 카카오 로그인 요청을 보내는 Request URI는 아래와 같이 만들면 된다. GET /oauth/authorize?client_id=${REST_API_KEY}&redirect_uri=${REDIRECT_URI}&response_type=code HTTP/1.1 Host..

🤍영화 목록 처리 구현하기 1. 이번에도 역시 전에 만들어둔 PageRequestDTO, PageResultDTO를 그대로 가져와서 사용한다. 2. MovieService 코드 작성 JPA를 통해 나오는 엔티티 객체들과 Double, Long 등의 값을 MovieDTO로 변환하는 entitiesToDto 추가 3. MovieServiceImpl 코드 작성 4. 목록 화면 list.html 작성 페이징 코드는 기존과 동일하므로 생략한다. Movie List Page REGISTER # Title & Picture Review Count AVG Rating Regdate [[${dto.mno}]] [[${dto.title}]] [[${dto.reviewCnt}]] [[${dto.avg}]] [[${#temp..

💡구현 목표 영화 등록과 수정에는 파일 업로드 기능을 활용해서 영화 포스터 등을 등록하도록 함. 회원은 특정 영화 조회 페이지에서 평점과 자신의 감상을 리뷰로 기록할 수 있음. 조회 화면에서 회원은 자신이 기록한 리뷰의 내용을 수정, 삭제할 수 있음. 🤍영화 등록 처리 1. MovieController 코드 작성 2. register.html 작성 3. 실행 화면 4. MovieDTO / MovieImageDTO 클래스 작성 이미 영화(Movie) 엔티티 클래스가 작성되었으므로 DTO, 서비스 계층만 추가 작업해주면 된다. 5. 서비스 계층 추가 Movie를 JPA로 처리하기 위해서는 MovieDTO를 Movie 객체로 변환 필요. 여기에서는 이전 프로젝트와 달리 Movie, MovieImage 객체도 ..

🤍파일 업로드 처리 구현하기 1. application.properties에 파일 업로드를 위한 코드 추가 spring.servlet.multipart.enabled=true//파일 업로드 가능 여부 선택 spring.servlet.multipart.location=C:\\upload//업로드된 파일 임시 저장 경로 spring.servlet.multipart.max-request-size=30MB//한 번에 최대 업로드 가능 용량 spring.servlet.multipart.max-file-size=10MB//파일 하나의 최대 크기 2. UploadController 클래스 작성 실제 업로드된 파일 처리는 컨트롤러로 처리함. (스프링에서는 MultipartFile 타입을 제공하므로 별도 추가적인 처리가..

💡구현 목표 영화(Movie)와 회원(Member)이 있고 회원이 영화에 대한 리뷰(Review)를 기록하는 시나리오를 기반으로 프로젝트를 구성함. 한 편의 영화는 여러 회원의 평가가 행해질 수 있다. 한 명의 회원은 여러 영화에 대해 평점을 줄 수 있다. 💡다대다 관계의 특징 다대다 관계(M:N)는 논리적 설계와 실제 테이블 설계가 다르게 됨. 영화 엔티티와 회원 엔티티는 양쪽 모두 독립적인 엔티티로 설계가 가능함.(대부분 명사인 경우) 사람에 해당하는 회원 입장에서는 여러 편의 영화를 평가한다는 구조가 됨. 영화 입장에서는 한 편의 영화는 여러 회원이 존재한다는 관계가 성립하게 됨. 다대다(M:N)를 해결하기 위해서는 실제 테이블 설계에 매핑(mapping) 테이블을 사용함. (=연결 테이블) 여기에..

🤍글 상세보기 구현하기 1. Index.jsp 글 상세보기 버튼에 태그 추가 2. BoardController 작성 //글 상세보기 @GetMapping("/board/{id}") public String findById(@PathVariable int id, Model model) { model.addAttribute("board", boardService.글상세보기(id)); return "board/detail"; } 3. BoardService 작성 public Board 글상세보기(int id) { return boardRepository.findById(id) .orElseThrow(()->{ return new IllegalArgumentException("글 상세보기 실패: 아이디를 찾을 ..

🤍글쓰기 구현하기 1.BoardController 작성 //글쓰기 @GetMapping("/board/saveForm") public String saveForm() { return "board/saveForm"; } 2. saveForm.jsp 작성 글쓰기 완료 3. content 부분은 summernote를 적용했다. (For Bootstrap4) 적용한 모습 4. 글쓰기 버튼 클릭시 글이 등록되도록 board.js 작성 let index = { init: function() { $("#btn-save").on("click", () => { this.save(); }); }, save: function() { //alert('user의 save함수 호출됨'); let data = { title: $(..

🤍스프링 시큐리티 구현하기 스프링 시큐리티는 스프링 기반의 애플리케이션(인증, 권한, 인가 등)을 담당하는 스프링 하위 프레임워크임. 1. 인증이 안 된 사용자들이 출입할 수 있는 /auth/ 경로를 UserController에 추가해 준다. 2. 요청이 들어왔을 때 인증이 필요한지, 필요하지 않은지 구분하는 시큐리티 필터를 등록하는 SecurityConfig 클래스 생성 3. 설정 후 localhost:8080 주소로 접근하면 아래와 같은 화면이 뜨지만 4. 인증없이 접근할 수 있도록 설정해놓은 /auth/ 주소로 접속하면 페이지가 잘 뜨는 것을 확인할 수 있다. 5. 기존에 작성한 loginForm.jsp에서 form태그를 수정한다. 6.SecurityConfig 코드를 아래와 같이 수정하면 위의 f..