본문 바로가기

프로젝트/미니 프로젝트

크롤링을 활용한 Spring 영화 예매 사이트 구현하기(CGV CLONE)

GITHUB 주소(주요 commit은 다른 프로젝트에서 하다 옮겨서 commit 누적이 없다..)

https://github.com/loy124/CGV_Clone

 

loy124/CGV_Clone

Spring + mybatis + html + javascript + css CGV 사이트 크롤링을 활용한 영화예매(가상) 사이트 만들기 - loy124/CGV_Clone

github.com

제작기간 : 8일 정도 (주말 포함)

 

사용한 주요 기술: Spring, MyBatis, HTML, CSS, JAVASCRIPT

 

사용한 주요 라이브러리 :

Jsoup(크롤링), Gson(json변환), jQuery, toastr(notification), 아임포트(카카오페이), cookie 관련 라이브러리

 

사용한 프로그램: Aquery(DB제작 프로그램), 트렐로(구상), Vscode, Sts(eclipse)

 

주요 목적: 크롤링을 활용해 현재 상영중인 영화 정보가져오기, 예약기능및 카카오페이 모듈을 활용한 결제 시스템 구현하기(개발자용 테스트 모듈), 마이페이지에서 예약한 정보 가져오기

 

개발시 중점을 둔점:

제이쿼리를 최대한 활용하지 않으려고 애를 썼다. 쿠키와 ajax 부분을 제외하고는 

전부 순수 자바스크립트(바닐라 자바스크립트)를 사용해서 하였다. 덕분에 자바스크립트랑 조금더 친해진 계기가 되었다.

 

트렐로를 사용한 초반 필요한 기술 작성하기

 

 

 

AQuery를 활용한 DB 설계
프로젝트 구조

 

 

스프링 기초 셋팅을 한 후에 가장 먼저 한 일은 크롤링이였다.

 

해당 홈페이지의 현재 상영 목록을 Jsoup을 활용해 크롤링으로 가져왔고

 

해당 내용을 담을 dto를 생성해서 담아 준후 list에 넣어줬다.

 

 

또한 해당 list들을 

GSON 라이브러리를 통해 해당 크롤링 한 값들을 json 으로 변화 시켰고 해당 값들을 ajax로 값을 받아왔다

 

http://www.cgv.co.kr/movies/

 

무비차트 < 무비차트 | 영화 그 이상의 감동. CGV

1917 예매율16.3% 96% 2020.02.19 개봉 영화 찜하기 7,234명이 선택 예매

www.cgv.co.kr

 

 

 

해당 현재 상영중인 영화 사이트의 정보들을 크롤링 하였다

 

 

 

 

크롤링 부분 코드 

 

 

 

json 받아온 부분 

 

 

알림 부분은 전체적으로 alert 와 toastr을 활용하였다

https://codeseven.github.io/toastr/

 

Toastr by CodeSeven

toastr toastr is a Javascript library for Gnome / Growl type non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended. Demo Demo can be found at http://codeseven.github.io/toastr/demo.h

codeseven.github.io

 

 

회원가입 메인 (id check는 ajax를 활용하였다)

 

 

 

로그인 부분 

특히 회원가입 및 로그인 부분에는 img 부분을 Math.random() 을 활용해서

새로고침시 포스터가 변화할수 있도록 하였다.

 

 

 

 

 

이미지 부분을 랜덤함수로 받아오는 부분 
메인 페이지(크롤링한 영화 정보들)

메인페이지는 크롤링 된 값들을 forEach를 활용해서 한번에 뿌려줬다.

 

뿌려주기 위한 함수 생성 

 

 

예매버튼을 클릭하면 예매 창이 나오게된다

예매 화면 

예매부분 영화 고르는곳은 ajax를 통해 크롤링된 영화 값들을 가져왔으며 

 

날짜 고르는 부분은 

 

https://loy124.tistory.com/192

 

자바스크립트를 활용해 현재 날짜부터 마지막 날짜 구하기

자바스크립트를 활용해서 해당 필요한 날짜들을 추가해주는 로직을 만들었다. 날짜 클릭시 class를 추가하고 다른 날짜를 클릭하면 나머지 active 클래스가 제거되는 방식으로 만들었다. ..

loy124.tistory.com

해당 부분을 활용해서 자바스크립트로 만들었다

 

예약하기를 누르면 좌석 선택창으로 이동된다

 

좌석 선택 화면 

 

해당 좌석 부분은 javascript 2중 for문을 활용하여 만들었다

 

해당 코드를 짜면서 자바스크립트랑 조금더 친해진 계기가 된거같다(꽤나 힘들었다)

 

https://loy124.tistory.com/191

 

자바스크립트 2중 for문을 활용한 좌석 만들기

미니 프로젝트를 위해 영화 좌석을 선택하는 란을 만들기 위해 만들어보았다. 버튼 클릭시 clicked를 toggle로 전환하고 클릭시에 추가된 clicked 들을 가져오는 로직이다 clicked class가 추가된 경우엔 clicked..

loy124.tistory.com

 

 

좌석 선택시 가격및 남은 좌석, 좌석수가 변화한다
선택한 좌석보다 많이 좌석을 누르면         오류메세지가 나온다

 

kakao pay 버튼을 누르면 

카카오페이 결제창으로 이동한다.

(카카오페이는 해당 아임포트를 활용했다) https://loy124.tistory.com/183?category=758081

 

카카오 페이 라이브러리 (아임포트)사용하기

form 파트 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

 

 

 

웹 페이지내 화면

 

어플 화면

 

 

결제가 완료되면 

마이페이지로 이동한다

 

마이페이지

 

마이페이지에서는 예약한 내용을 조회 가능하다(pay table과 reserve table을 join 하여 나타내었다)

join 부분 

해당 마이페이지를 마지막으로 프로젝트를 마무리하였다.

 

느낀점

해당 프로젝트를 만드는 동안 정신없이 코딩을 한거 같다.. 뭔가 열정을 쏟을수 있는 좋은 계기가 되었다.

+ 순수 자바스크립트를 최대한 사용하면서 제이쿼리가 아닌 자바스크립트만으로도

어느정도 코드를 짤 수 있겠다는 생각이 들었다. 버튼 선택시 중복 선택을 못하게 하는등 여러가지 처리를 하면서 좋은 공부가 되었다.