[TIL]멋쟁이사자처럼 백엔드스쿨 3기 28일차

Enter·2023년 3월 31일
0

TIL

목록 보기
8/9

📖오늘 공부한 내용

점프 투 스프링부트(QnA서비스)

2-12. ~ 2-16.까지 흐름

  1. 디자인 적용을 위한 css파일 생성. → 더 나은 디자인을 위해 부트스트랩 이용. → 템플릿의 중복된 코드를 없애기 위해 상속기능 이용.
  2. 질문 등록 버튼 만들기(질문 등록 버튼 question_list.html에 만들고 버튼 누르면 /question/create으로 가도록 함. → url매핑(/question/create) → 질문 등록을 위한 question_form템플릿 생성. → 질문 등록 폼의 등록 버튼을 누르면 post방식으로 전송되기 때문에 url매핑을 post방식으로 하나 더 해줘야 함.→ 질문 저장을 위해 QuestionService수정. → 질문 저장O)
  3. 질문과 답변 빈칸으로 저장되지 않도록 수정해야함. → 폼을 사용하여 입력값을 체크(화면에서 전달받은 입력값을 검증하려면 Spring Boot Validation 라이브러리가 필요. → QuestionForm클래스 생성 후 검증하는 코드 작성. → QuestionController에서 subject,content대신 QuestionForm객체 사용. @Valid 애너테이션을 적용하면 검증 기능 동작함. BindingResult 매개변수는 검증이 수행된 결과를 의미하는 객체. → 오류메시지 보이도록 question_form.html수정. → question_form.html 수정에 따른 GetMapping(”/create”)에 매개변수 추가.) → 오류 발생시 입력한 내용 유지.(th:field
    속성을 사용하기 위해 question_form.html수정. → 해당 태그의 id, name, value 속성이 모두 자동으로 생성O.)
    - 타임리프 subject,content에 오류 발생 시 사진처럼 체크표시 해제.
  4. 답변 등록에 폼 적용(폼을 사용하여 입력값을 체크)(AnswerForm클래스 생성 후 검증하는 코드 작성. → AnswerController에서 content대신 AnswerForm객체 사용@Valid 애너테이션을 적용하면 검증 기능 동작함. BindingResult 매개변수는 검증이 수행된 결과를 의미하는 객체. → 오류메시지 보이도록 question_detail.html수정. → question_detail.html 수정에 따른 GetMapping(”/detail/{id}")에 매개변수 추가.) → 오류 발생시 입력한 내용 유지.(th:field
    속성을 사용하기 위해 question_detail.html수정. → 해당 태그의 id, name, value 속성이 모두 자동으로 생성O.)
  5. 오류메시지 공통 템플릿(form_errors.html생성 후 question_detail.html과 question_form.html의 중복코드인 공통된 오류메시지를 옮김.)

3-01. ~ 3-07.까지 흐름

  1. 내비게이션 바 생성.(navbar.html 생성.)
  2. 페이징 기능 만들기(페이징 기능 확인을 위한 대량 데이터 만들기 → QuestionController의 llist메서드 수정 → QuestionService의 gitList메서드에 매개변수 page 추가. → QuestionRepository에 page자료형으로 findAll메서드 추가 → 페이징기준으로 question_list.html수정. → 템플릿에 페이징 이동 기능 구현하기 위해 question_list.html수정.)
  3. 작성일시 역순으로 조회(QuestionService의 getList메서드 수정.)
  4. 게시물 일련번호 추가하기 위해 question_list 수정.
  5. 해당 질문에 달린 답변 개수 표시하기 위해 question_list 수정.
  6. 회원가입/로그인 기능을 위해 스프링 시큐리티 설치. → 로그인을 하지않고도 페이지 접근이 가능하도록 스프링 시큐리티 설정 객체(SecurityConfig) 생성.
  7. 회원가입(SiteUser엔티티 생성. → UserRepository, UserService 생성. → 비밀번호는 그냥 저장하면 안되기 때문에 PasswordEncoder메서드를 SecurityConfig객체에 만들어 @Bean으로 지정하여 사용함. → 회원가입 폼UserCreateForm생성. → UserController생성. → 회원가입 템플릿signup_form.html생성. → 내비게이션바에 회원가입추가 → 중복 회원가입 오류를 try-catch문을 통해 처리)
  8. 로그인 구현.(스프링 시큐리티에 로그인 URL을 등록(SecurityConfig, /user/login) → UserController에 url매핑(/user/login) → login_form.html생성. → 스프링 시큐리티에게 무엇을 기준으로 로그인을 해야 하는지 알려줘야함.(UserRepository수정 및 UserRole생성. → UserSecurityService생성. → 스프링 시큐리티에 UserSecurityService를 등록.) → 내비게이션바에 로그인추가)
  9. 타임리프의 sec:authorize
    속성을 통해 로그인을 안한 상태라면 sec:authorize="isAnonymous()"
    가 참이되어 "로그인" 링크가 표시되고 로그인을 한 상태라면 sec:authorize="isAuthenticated()"
    가 참이되어 "로그아웃" 링크가 표시.(navbar.html)
  10. 로그아웃 구현. 스프링 시큐리티에 로그아웃 URL을 등록(SecurityConfig, /user/logout)



profile
Cherish the moment :)

0개의 댓글