Springboot + JPA + jsp를 사용하여 인스타그램 클론 코딩 프로젝트를 10일동안 만들었다. 배우면서 메모해뒀던 내용을 간단히 정리해보려고 한다.
AWS EC2, RDS를 사용하여 배포를 하면 추후 해당 내용도 정리할 예정...☆
Dependencies(pom.xml)
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<!-- qlrm -->
<dependency>
<groupId>org.qlrm</groupId>
<artifactId>qlrm</artifactId>
<version>2.1.1</version>
</dependency>
<!-- 시큐리티 태그 라이브러리 -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-taglibs</artifactId>
</dependency>
<!-- JSP 템플릿 엔진 -->
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jasper</artifactId>
<version>9.0.43</version>
</dependency>
<!-- JSTL -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-oauth2-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
프로젝트 구조
이번 프로젝트는 템플릿 엔진을 Thymeleaf대신 JSP를 사용하여
webapp/WEB-INF/views 폴더를 생성했다.
기능은 크게 아래와 같이 4가지로 나뉘며, 상세한 내용은 개별 게시글에 정리해두려고 한다.
1. 로그인, 회원가입
2. 프로필 페이지
3. 인기 게시물 페이지
4. 스토리 페이지
도메인 모델은 댓글, 사진, 좋아요, 구독, 사용자 5가지이다.
상세 코드는 Github 참고
로그인
회원가입
프로필 페이지
사용자 정보 및 사용자가 업로드한 게시물을 보여주는 페이지이다.
구독리스트
사용자가 구독하고 있는 사람들을 보여준다.
사진 업로드
회원정보 변경
인기 게시물 페이지
전체 사용자들의 게시물 중에서 인기 게시물(좋아요를 많이 받은 순서)을 보여준다.
스토리 페이지
사용자가 구독한 사람들이 올린 게시물을 시간순으로 보여준다. 스크롤을 내려 계속해서 게시글을 볼 수 있다.