본 포스팅은 Slipp - Spring-Boot, JPA로 질문/답변 게시판 구현 과정을 참조하여 작성한 내용입니다. 개인적 학습 내용을 복습하기 위한 내용이기 때문에 내용상 오류가 있을 수 있습니다. 소스코드의 자세한 내용은 https://github.com/walbatrossw/boot-qna 를 참조해주세요.
3. slipp 반복주기 3
데이터베이스에 사용자 데이터 추가
개인정보 수정 기능 구현
질문하기, 질문목록 기능 구현
3-1) QnA HTML 템플릿, H2 데이터베이스 설치, 설정, 관리툴 확인
QnA 템플릿 추가
H2 데이터베이스 설치
pom.xml
에 h2 database engine 의존성 추가<scope>test</scope>
를runtime
으로 변경application.properties
에 H2 데이터베이스 설정 추가
3-2) 자바 객체와 테이블 매핑, 회원가입 기능 구현
spring-starter-data-jpa 의존성 추가
domain 패키지 추가
web 패키지에 있던 User 클래스를 domain 패키지로 이동
User 클래스에 annotation 추가
@Entity
: Entity 클래스라는 것을 나타내는 애너테이션 (반드시 필요)@Table(name="테이블명")
: Entity 클래스에 할당되는 테이블을 지정 (생략가능)@Id
: primary key 설정 (반드시 필요)@GenerateValue
: primary key 자동생성@Column
: 해당 필드에 할당할 칼럼을 지정 (생략가능)name
- 칼럼명 지정length
- 최대 길이를 지정nullable
- null 의 허용여부 지정(true, false)
repository 인터페이스 작성
아래와 같이 작성한다.
Controller 변경
@Autowired
애너테이션을 통해 UserRepository 인스턴스를 필드와 연동@Autowired
: 애플리케이션에 있는 Bean 객체와 연동하기 위한 애너테이션
create() 메서드 : 회원가입
list() 메서드 : 회원목록
3-3) HTML 정리, URL 정리
HTML 템플릿 정리
html 중복코드를 정리하기 위해 include 폴더에 navigation, header, footer html파일 작성
mustache 템플릿의 include 방법
URL 정리
UserController
회원관련 모든 URL 에
/users
가 추가될 수 있도록@Controller
애너테이션 하단에@RequestMapping("/users")
추가회원가입 처리 후 리스트로 redirect 하기 위해서
redierct:/users/list
로 변경
3-4) 개인정보 수정 기능 구현
UserController 에 회원정보 수정화면, 수정처리 메서드 추가
회원정보 수정화면
회원정보 수정처리
User 클래스에 update() 메서드 추가 : email, name, password 만 변경
updateForm.html 작성 : 회원정보 수정 화면
html 에서는 get, post 만 사용할 수 있는데 put 을 사용하기 위한 방법
<input type="hidden" name="_method" value="put">
3-5) 원격 서버에 소스코드 배포
원격 서버에 배포한 뒤 include 한 파일을 찾지 못하는 문제가 발생
원인 : mustache 템플릿 엔진 문제로 추정
해결 방법
jar 파일이 아닌 maven 에서 spring-boot 프로젝트 실행하기