
🤍스프링 시큐리티 소셜 로그인(구글) 구현하기 1. 구글 OAuth 2.0 클라이언트 ID 생성 승인된 리디렉션 URI 지정 생성된 OAuth 클라이언트 ID 및 비밀번호는 꼭 기억해야 함. 2. build.gradle에 라이브러리 추가 //소셜 로그인 적용 implementation 'org.springframework.boot:spring-boot-starter-oauth2-client' 3. application.oauth.properties 작성 spring.security.oauth2.client.registration.google.client-id =클라이언트 ID spring.security.oauth2.client.registration.google.client-secret = 클라이언트 ..

🤍스프링 시큐리티 프로젝트 생성 1. application.properties에 시큐리티 설정 추가 logging.level.org.springframework.security.web=trace logging.level.org.zerock=debug 2. 시큐리티 설정 클래스 SecurityConfig 작성 @Configuration @Log4j2 public class SecurityConfig extends WebSecurityConfigurerAdapter { } 💡인증(Authentication) & 인가(Authorization) 은행에 금고가 있고 사용자가 금고 내용을 열어 본다고 가정했을 때 사용자가 신분증으로 자신을 증명 => 인증 은행에서 사용자가 금고를 열어볼 수 있는지 판단 => 인가..

🤍영화 목록 처리 구현하기 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: $(..