포트폴리오/SPRINGBOOT 옛날 72

3-11 : 추천

단 하나의 맥락 : @ManyToMany 로 추천 기능 작성 Semiflow Bundle : Question에 Voter 속성 추가 : Answer에 Voter 속성 추가 : 질문 추천 버튼 question_detail에 추가 : 추천 확인 창 Javascript 코드 question_detail에 추가 : QuestionService에 추천인 저장 vote 메서드 추가 : QuestionController에 questionVote 메서드 @GetMapping : 답변 추천 버튼 question_detail에 추가 : AnswerService에 추천인 저장 vote 메서드 추가 : AnswerController에 answerVote 메서드 추가 질문 추천 기능 > Question Entity와 Answe..

03 : GetMapping과 PostMapping

- 질문 수정 버튼을 만들었다면 그 버튼을 누를 때, @GetMapping으로 화면수정(재작성) URL을 가져오게 된다 이 때 return되는 것은, 질문 수정(재작성) 페이지인 "question_form"이다 - 질문 수정 페이지인 question_form으로 이동되고 나서, 수정 버튼(저장)을 누르면 @PostMapping이 작동하며 이떄 return되는 것은, bindingResult가 에러일 때 question_form으로 재작성 요구 정상 작성 시, question/detail/%s, id 로 리디렉션 된다 - 주의해야 할 점은, @GetMapping("/modify/{id}")의 URL은 다른 URL에서 이동되는 URL이고 @PostMapping("/modify/{id}")은 Post 처리되는..

3-10 수정과 삭제

단 하나의 맥락 - Update / Delete 기능 구현 Semiflow Bundle (Question Update) - modifyDate - 수정 버튼 - 수정 버튼 > @GetMapping - CSRF 토큰 수동발행 - Service에서 modify method 추가 - Controller에서 서비스의 modify 메서드 연동 (Question Delete) - 삭제 버튼 - 삭제 버튼 확인창 자바스크립트 연동 - 자바스크립트 블록 layout.html에 삽입 - QuestionService에 pubic void delete 추가 - QuestionController에 public String questiondelete 기능 구현 (Answer Update) - 답변 수정 버튼 추가 - Answe..

3 - 09 : 글쓴이 표시

단 하나의 맥락 : 전 수업에 추가한 author를 받아와, 질문과 답변에 글쓴이를 추가한다 - Semiflow Bundle : question_list에 글쓴이 항목 추가 : (부가 기능) - 중간 정렬과 공간 차지 비율 : question_detail의 질문에 글쓴이 항목 추가 : question_detail의 답변에 글쓴이 항목 추가 - 자각 Question_list에서 글쓴이를 추가하기 위해 > question_list.html 에서 제목 틀인 내부에 번호 제목 글쓴이 작성일시 내용 row인 내부에 번호는 건드리지 않고 제목 element는 로 좌측정렬 사이 으로 글쓴이 정보를 공급받는다 작성일시는 건드리지 않음 - 질문 상세에 글쓴이를 추가하기 위해 > question_detail.html 에서..

3-08 : entity에 author 추가하기

단 하나의 맥락 : author를 추가하여 작성자 표시 준비 Semiflow Bundle : Question Entity에 author 추가 : Answer Entity에 author 추가 : AnswerController에 Principal principal S 추가 : UserService에서 getUser 메소드 생성 : AnswerService에서 답변 생성 메서드에 author 추가 : Question에 author 속성 추가하기 위해 > Question 에 @ManyToOne private SiteUser author; // import javax.persistence.ManyToOne; // import com.mysite.sbb.user.SiteUser; - Answer에 author 속성..

3-07 : 로그인과 로그아웃

단 하나의 맥락 : 회원가입 form으로 가입 후, 로그인 로그아웃 authorize 구현 Semiflow Bundle : 로그인 URL 등록 : 컨트롤러에 매핑 : 로그인 템플릿 작성 : 리포지터리에 사용자 조회 메서드 선언 : 권한 부여 : 로그인 처리를 위한 UserSecurityService 작성 : SecurityConfig에 UserSecurityService 등록 : 로그인 링크를 네비게이션 바에 등록 : 로그인으로 Authenticated되었으면 로그인 버튼을 로그아웃 버튼으로 변경 : SecurityConfig에 로그아웃 URL 처리 로그인 URL 등록 > SecurityConfig에서 XFrameOptionsHeaderWriter 하단 .and() .formLogin() .loginPa..

3-06 : 회원가입

단 하나의 맥락 : 회원 가입 기능 추가 및 적용 Semiflow Bundle - 회원 가입을 위한 Entity 생성 - UserRepository 작성 - BcryptPasswordEncoder를 사용한 Service 작성 - UserCreateForm으로 속성 제한 - UserController 작성 - 회원가입 template 작성 - 네비게이션 바에 회원가입 링크 추가하기 - 중복 회원가입 status=500 처리 Entity 생성 > com.mysite.sbb.user 패키지에 SiteUser.java 신규 작성 @Entity @Getter @Setter public class SiteUser {} @Id @GeneratedValue(strategy = GenerationType.IDENTITY..

3-05 : spring security

단 하나의 맥락 : 스프링의 하위 프레임워크인 SpringSecurity를 이용하여 Authenticate(인증-로그인) 및 Authorize(권한 분배)를 추가한다 Semiflow Bundle : gradle에 시큐리티 설치 : 로그인 없이 게시물 조회 가능 하도록 SecurityConfig(신규 작성) 에서 설정 : H2-console 예외 처리 build.gradle에 설치 > build.gradle의 dependencies에서 implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5' refresh 및 로..

3-03 : 일련번호 추가 수정

단 하나의 맥락 : 최신글의 번호를 마지막 번호로 잡아서, 다른 페이지에도 번호 리셋 없이 이어가게 하기 Semiflow Bundle : 게시물 번호 공식 만들기 : question_list.html에 적용하기 자각 (일련번호) = (전체 게시물 갯수) - (현재 페이지) * (페이지당 게시물 갯수) - (나열 인덱스) > question_list.html에서 적용 for 문 안의 게시물 순서 (나열 인덱스는 현재 페이지에서 표시할 수 있는 게시물의 인덱스이므로 10개를 표시하는 페이지에서는 0~9, 2개를 표시하는 페이지에서는 0~1로 반복된다.)