Spring

Spring Toy Project-1

gogi masidda 2024. 1. 31. 13:25

Mat & Mut이라는 이름으로 커뮤니티 형태를 만들어보고 있다.

 

토이프로젝트를 하면서 기억해둘 것

th:text -> 요소의 텍스트 내용을 설정하는데 사용한다. ex) th:text="${item.itemName}"

th:value -> input이나 select의 값을 설정하는데 사용한다. ex) th:value="${user.name}"

th:object -> form이나 반복에서 전달받을 객체나 입력을 담을 객체를 설정하는데 사용한다. 

<form action = "" th:action th:object="${member}" method="post">

th:field -> th:object에서 객체를 설정한 것을 바탕으로 member가 가진 변수 name이나 age 등을 쉽게 설정할 수 있다.

/*th:object 사용X*/
<input type="text" th:field="*{member.name}" />
/*th:object 사용*/
<input type="text" th:field="*{name}" />

검증에서

BindingResult@ModelAttribute 바로 뒤에 위치해야한다. 그냥 뒤가 아니라 무조건 바로 뒤!

  • @NotNull은 null만 허용하지 않음. “”와 “ “은 허용함.
  • @NotEmpty는 null과 “”을 허용하지 않음. “ “은 허용함.
  • @NotBlank는 null과 “”, “ “을 모두 허용하지 않음.

 

FieldError는 Spring이 제공하는 어노테이션으로, ObjectError는 직접 자바 코드로 짜는게 낫다.

 

수정을 위해 id@NotNull로 두면 등록할 때 문제가 생기는데 이것은 groups로 해결 가능하다.

Groups를 사용하기 위해선 인터페이스를 만들어야함. 인터페이스를 구현할 필요는 없고 표시용으로 생각하면 된다. 하지만 실무에서는 groups를 잘 사용하지 않음. 등록용 폼과 수정용 폼을 다르게 사용하기 때문에. Member를 쓰는게 아니라 MemberSaveForm을 따로 만든다. 그래서 검증이 중복되지 않는다. -> 지금은 등록과 수정이 크게 다르지 않아서 하나로 하는데 나중에 달라지면 바꾸기

 

html에서 th:errorclassth:errors를 이용해 에러가 생겼을 때에만 오류 메시지를 보이도록 할 수 있음.

 


https://github.com/Choidongjun0830/Toyproject

 

 

로그인하기 전과 로그인했을 때 홈 다르게 ✅
게시판✅ + 사진 + 페이지 + 검색 필터링
내 정보✅ + 수정 + 닉네임
비밀번호 변경 -> passwordUpdateForm 만들어서 사용 아니면 그냥 Member에 newPassword만들어서 group으로 사용 아니면 얘도 SpringSecurity. 비밀번호 패턴은 정규식 사용
글 쓰는 페이지✅
글 보는 페이지(textarea 개선 필요)✅  + 수정✅
회원가입 아이디 중복 불가 => SpringSecurity
게시판 여러개 -> 어떻게..?? => jpa 강의
헤더 누르면 게시판으로
글 보는 날짜와 올린 날짜가 같으면 시간만 보이게
댓글
조회수 늘어나게 -> 조회수 중복 방지
게시판 별로 나누기✅
검증✅, 오류 페이지
로그인에 오류 문구 -> Spring security
패션 + 맛 커뮤니티✅
장소 
멤버 최근 로그인, 가입일 ✅
권한을 HomeController에 @SessionAttribute로 -> SpringSecurity
국제화

 

✅가 체크된 것은 구현한 것인데 나머지는 Spring의 다음 강의를 들으면서 개선해야할 것 같다.

아직 데이터베이스 연동을 배우지 않아서 배우고 나면 훨씬 더 나은 커뮤니티를 만들 수 있을 것 같다.

 

728x90

'Spring' 카테고리의 다른 글

커넥션 풀  (0) 2024.02.01
JDBC  (0) 2024.01.31
스프링 타입 컨버터  (1) 2024.01.15
API 예외 처리  (0) 2024.01.13
예외 처리, 오류 페이지  (1) 2024.01.11