SlideShare une entreprise Scribd logo
1  sur  25
Télécharger pour lire hors ligne
https://github.com/wnsmlk9494/KCJcinema
INDEX
개발되는 Java 코드의 경로
Spring 설정 파일의 경로
JSP 파일의 경로, 공통부분 <include>사용
Maven의 설정 파일
Spring MVC 컨트롤러 설정
XML 네임 스페이스. MyBatis-Spring에서 XML Mapper 인식
디자인 및 자바스크립트 파일의 경로
Web 환경 설정 파일
Log 파일
MyBatis 설정 파일
XML Mapper 파일의 경로
*
• CSS3
• HTML5, JSP
• JavaScript
• jQuery 3.4.0
*
• Spring Framework 4.2.4
• Java JDK 1.8_201
• Tomcat 8.0
• MyBatis 3.2.8
• MySQL 5.7.21
• Maven 3.3.9
• Log4j 1.16
BOX_OFFICE / SHOWING_MOVIE / SOON_MOVIE
회원가입 나의 예매내역 영화 상세보기 영화 예매하기
예매하기_상영정보 선택회원가입_동의
회원가입_입력
KCJ CINEMA
로그인 / 로그아웃
아이디 / 패스워드 찾기
패스워드 변경 예매하기_좌석 선택
예매하기_예매 완료회원가입_완료
* BOX_OFFICE
• 영화 평점 순 조회 (현재 상영작, 상영 예정작)
• 현재 상영작 : 평점 및 별점 표시
• 상영 예정작 : 현재 날짜를 기준, D-day 표시
* SHOWING_MOVIE
• 영화 이름 순 조회 (현재 상영작)
• 현재 상영작 : 평점 및 별점 표시
* SOON_MOVIE
• 영화 이름 순 조회 (상영 예정작)
• 상영 예정작 : 상영날짜 및 D-day 표시
* 회원 정보 중복 검사, 아이디 중복 검사
• 입력된 이름과 휴대전화가 이미 가입되어 있는가?
• SQL문 : EXIST 사용
* 비밀번호를 암호화 하여 서버에 전송 및 저장
• RSA, SHA256 암호화
* 회원가입 유효성 검사
• 이름 : 2~20자 이하로 한글, 영문만 가능
• 아이디 : 5~10자로 영문, 숫자만 가능
• 패스워드 : 10~20자로 영문, 숫자, 특수문자 무조건 포함
• 생년월일 : 숫자만 가능, 8자리 중 년, 월, 일을 구분하여 각각 유효성 검사
• 휴대전화 : 10자리 이상으로 숫자만 가능
• 이메일 : 이메일 형식에 따른 유효성 검사
*
- RSA –
① 서버 : <공개키, 비밀키> 생성 및 JSP에 <공개키>전송
② 클라이언트 : JS에서 패스워드를 공개키로 암호화, 서버에 전송
③ 서버 : <비밀키>로 패스워드 복호화
- SHA-256 –
① 서버 : SHA-256을 위한 salt 생성 및 salt로 패스워드 암호화
② 서버 : Salt와 암호화된 패스워드를 저장
1
- 필요 라이브러리 –
• RSA (RSAutil.java, jsbn.js, prng4.js, rng.js, rsa.js)
• SHA-256 (SHA256util.java)
*키쌍 생성
*키 전송
*키 수신
2
3
4
5
*공개키 암호화
*비밀키 복호화
*sha-256 암호화
* 회원 정보 중복 검사, 아이디 중복 검사
* EXIST 조건에 해당하는 값이 있다면 1, 없다면 0을 반환
* 1이라면 가입 불가, 0이면 가입 가능
* 입력 유효성 검사
1. 로그인 팝업 Show
(loginFormPop.jsp)
2. 로그인
✓ RSA+SHA256 암호화
✓ Salt 조회 및 암호화 비교
✓ 세션 정보 set()
3. 로그아웃
✓ 세션정보 invalidate()
*
*
*
* 비밀번호를 암호화하여 서버에 전송 및 저장
• RSA, SHA256 암호화
*
*
* Ajax를 이용한 페이징 처리
- 클라이언트 Ajax –
① Page : 기본값을 1페이지로 ‘더보기+’클릭 시 페이지 수 1씩 증가
② listCount : 페이지 당 게시글 6개로 고정
③ page, listCount 서버에 전송
- 서버 –
① totalCount = SQL_COUNT(*)
② pageCount = 더보기+’ 형식의 특성상 1로 고정
③ totalPage = totalCount / listCount
나머지가 0이 아니라면 totalPage+1
page가 totalPage보다 커진다면, page=totalPage
④ startPage = ((page-1)/pageCount) * pageCount + 1;
⑤ endPage = stargPage + pageCount – 1;
⑥ startCount = (page-1) * listCount
⑦ endCount = page * listCount
⑧ SQL_LIMIT #{startCount} #{totalCount} 게시물 조회
⑨ totalPage, endPage, 조회된 게시물 클라이언트에 전송
1
1. 서버에 보일 페이지 번호 및 페이지 당 게시물 수 전송
2
3
2. 페이징 처리에 필요한 정보를 ‘return_MyMovieList_Json.jsp’를 통해 Ajax 응답
3. 응답받은 정보로 리스트 구현
* 영화 상세보기
*
* Ajax를 이용한 페이징 처리
- 클라이언트 Ajax –
① Page : 기본값을 1페이지로 ‘더보기+’클릭 시 페이지 수 1씩 증가
② listCount : 페이지 당 댓글 6개로 고정
③ page, listCount 서버에 전송
- 서버 –
① totalCount = SQL_COUNT(*)
② pageCount = 10
③ totalPage = totalCount / listCount
- 나머지가 0이 아니라면, totalPage+1
- page가 totalPage보다 커진다면, page=totalPage
④ startPage = ((page-1)/pageCount) * pageCount + 1;
⑤ endPage = stargPage + pageCount – 1;
⑥ startCount = (page-1) * listCount
⑦ endCount = page * listCount
⑧ SQL_LIMIT #{startCount} #{totalCount} 게시물 조회
⑨ 페이징 정보 및 조회된 게시물 클라이언트에 전송
2
3
1
4
1.
2.
3.
4.
* 영화 예매하기
* Step1. 극장 상영 위치 및 시간 선택
* Step2. 극장 좌석 선택
* Step3. 예매 정보 확인 및 결제 완료
티켓 오늘 날짜 영화관 (마지막 예매번호 + 1)
*
*
https://github.com/wnsmlk9494/KCJcinema

Contenu connexe

Tendances

ASP.NET과 C#으로 개발하는 대규모 소셜 게임
ASP.NET과 C#으로 개발하는 대규모 소셜 게임ASP.NET과 C#으로 개발하는 대규모 소셜 게임
ASP.NET과 C#으로 개발하는 대규모 소셜 게임
흥배 최
 
04 자바 네트워크
04 자바 네트워크04 자바 네트워크
04 자바 네트워크
arahansa yong
 
킴스큐Rb 설치
킴스큐Rb 설치킴스큐Rb 설치
킴스큐Rb 설치
Gitaek kwon
 
파이어베이스 네이버 밋업발표
파이어베이스 네이버 밋업발표파이어베이스 네이버 밋업발표
파이어베이스 네이버 밋업발표
NAVER D2
 

Tendances (20)

Fiddler 피들러에 대해 알아보자
Fiddler 피들러에 대해 알아보자Fiddler 피들러에 대해 알아보자
Fiddler 피들러에 대해 알아보자
 
가용성을 고려한 웹 서비스 인프라 설계
가용성을 고려한 웹 서비스 인프라 설계가용성을 고려한 웹 서비스 인프라 설계
가용성을 고려한 웹 서비스 인프라 설계
 
Web Socket
Web SocketWeb Socket
Web Socket
 
웹소켓 (WebSocket)
웹소켓 (WebSocket)웹소켓 (WebSocket)
웹소켓 (WebSocket)
 
피들러 신명대
피들러 신명대피들러 신명대
피들러 신명대
 
Mongo db 2.x to 3.x
Mongo db 2.x to 3.xMongo db 2.x to 3.x
Mongo db 2.x to 3.x
 
Node.js 와 Mongo DB로 만든 앱 Azure에 배포하기
Node.js 와 Mongo DB로 만든 앱 Azure에 배포하기Node.js 와 Mongo DB로 만든 앱 Azure에 배포하기
Node.js 와 Mongo DB로 만든 앱 Azure에 배포하기
 
Spring mvc
Spring mvcSpring mvc
Spring mvc
 
Fiddler: 웹 디버깅 프록시
Fiddler: 웹 디버깅 프록시Fiddler: 웹 디버깅 프록시
Fiddler: 웹 디버깅 프록시
 
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
 
ASP.NET과 C#으로 개발하는 대규모 소셜 게임
ASP.NET과 C#으로 개발하는 대규모 소셜 게임ASP.NET과 C#으로 개발하는 대규모 소셜 게임
ASP.NET과 C#으로 개발하는 대규모 소셜 게임
 
20170609 tech day_4th-nginx(lb)-이재훈
20170609 tech day_4th-nginx(lb)-이재훈20170609 tech day_4th-nginx(lb)-이재훈
20170609 tech day_4th-nginx(lb)-이재훈
 
04 자바 네트워크
04 자바 네트워크04 자바 네트워크
04 자바 네트워크
 
킴스큐Rb 설치
킴스큐Rb 설치킴스큐Rb 설치
킴스큐Rb 설치
 
댓글 플러그인 아포가토
댓글 플러그인 아포가토댓글 플러그인 아포가토
댓글 플러그인 아포가토
 
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)
 
파이어베이스 네이버 밋업발표
파이어베이스 네이버 밋업발표파이어베이스 네이버 밋업발표
파이어베이스 네이버 밋업발표
 
시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015
시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015
시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015
 
React를 이용하여 멀티플랫폼에서 개발하기
React를 이용하여 멀티플랫폼에서 개발하기React를 이용하여 멀티플랫폼에서 개발하기
React를 이용하여 멀티플랫폼에서 개발하기
 
파이썬을 활용한 웹 크롤링
파이썬을 활용한 웹 크롤링파이썬을 활용한 웹 크롤링
파이썬을 활용한 웹 크롤링
 

Similaire à Kcjcinema

모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
Dae Kim
 
WebSocket 기반 쌍방향 메시징
WebSocket 기반 쌍방향 메시징WebSocket 기반 쌍방향 메시징
WebSocket 기반 쌍방향 메시징
trustinlee
 

Similaire à Kcjcinema (20)

4-3. jquery
4-3. jquery4-3. jquery
4-3. jquery
 
Servlet3
Servlet3Servlet3
Servlet3
 
Spring 4.x Web Application 살펴보기
Spring 4.x Web Application  살펴보기Spring 4.x Web Application  살펴보기
Spring 4.x Web Application 살펴보기
 
4-2. ajax
4-2. ajax4-2. ajax
4-2. ajax
 
Html5 performance
Html5 performanceHtml5 performance
Html5 performance
 
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
 
Node.js 첫걸음
Node.js 첫걸음Node.js 첫걸음
Node.js 첫걸음
 
Nodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjsNodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjs
 
Node.js의 도입과 활용
Node.js의 도입과 활용Node.js의 도입과 활용
Node.js의 도입과 활용
 
WebSocket 기반 쌍방향 메시징
WebSocket 기반 쌍방향 메시징WebSocket 기반 쌍방향 메시징
WebSocket 기반 쌍방향 메시징
 
Portfolio
PortfolioPortfolio
Portfolio
 
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
 
OpenStack Swift Debugging
OpenStack Swift DebuggingOpenStack Swift Debugging
OpenStack Swift Debugging
 
Dropbox와 같은 시스템은 파일을 어떻게 저장할까?
Dropbox와 같은 시스템은 파일을 어떻게 저장할까?Dropbox와 같은 시스템은 파일을 어떻게 저장할까?
Dropbox와 같은 시스템은 파일을 어떻게 저장할까?
 
Datasnap web client
Datasnap web clientDatasnap web client
Datasnap web client
 
Restful web service
Restful web serviceRestful web service
Restful web service
 
Web App Security 2015.10
Web App Security 2015.10Web App Security 2015.10
Web App Security 2015.10
 
Node.js
Node.jsNode.js
Node.js
 
REST with Spring
REST with SpringREST with Spring
REST with Spring
 
Clova extension에서 OAuth 계정 연동 구현
Clova extension에서 OAuth 계정 연동 구현Clova extension에서 OAuth 계정 연동 구현
Clova extension에서 OAuth 계정 연동 구현
 

Kcjcinema

  • 3.
  • 4. 개발되는 Java 코드의 경로 Spring 설정 파일의 경로 JSP 파일의 경로, 공통부분 <include>사용 Maven의 설정 파일 Spring MVC 컨트롤러 설정 XML 네임 스페이스. MyBatis-Spring에서 XML Mapper 인식 디자인 및 자바스크립트 파일의 경로 Web 환경 설정 파일 Log 파일 MyBatis 설정 파일 XML Mapper 파일의 경로 * • CSS3 • HTML5, JSP • JavaScript • jQuery 3.4.0 * • Spring Framework 4.2.4 • Java JDK 1.8_201 • Tomcat 8.0 • MyBatis 3.2.8 • MySQL 5.7.21 • Maven 3.3.9 • Log4j 1.16
  • 5. BOX_OFFICE / SHOWING_MOVIE / SOON_MOVIE 회원가입 나의 예매내역 영화 상세보기 영화 예매하기 예매하기_상영정보 선택회원가입_동의 회원가입_입력 KCJ CINEMA 로그인 / 로그아웃 아이디 / 패스워드 찾기 패스워드 변경 예매하기_좌석 선택 예매하기_예매 완료회원가입_완료
  • 6. * BOX_OFFICE • 영화 평점 순 조회 (현재 상영작, 상영 예정작) • 현재 상영작 : 평점 및 별점 표시 • 상영 예정작 : 현재 날짜를 기준, D-day 표시 * SHOWING_MOVIE • 영화 이름 순 조회 (현재 상영작) • 현재 상영작 : 평점 및 별점 표시 * SOON_MOVIE • 영화 이름 순 조회 (상영 예정작) • 상영 예정작 : 상영날짜 및 D-day 표시
  • 7. * 회원 정보 중복 검사, 아이디 중복 검사 • 입력된 이름과 휴대전화가 이미 가입되어 있는가? • SQL문 : EXIST 사용 * 비밀번호를 암호화 하여 서버에 전송 및 저장 • RSA, SHA256 암호화 * 회원가입 유효성 검사 • 이름 : 2~20자 이하로 한글, 영문만 가능 • 아이디 : 5~10자로 영문, 숫자만 가능 • 패스워드 : 10~20자로 영문, 숫자, 특수문자 무조건 포함 • 생년월일 : 숫자만 가능, 8자리 중 년, 월, 일을 구분하여 각각 유효성 검사 • 휴대전화 : 10자리 이상으로 숫자만 가능 • 이메일 : 이메일 형식에 따른 유효성 검사
  • 8. * - RSA – ① 서버 : <공개키, 비밀키> 생성 및 JSP에 <공개키>전송 ② 클라이언트 : JS에서 패스워드를 공개키로 암호화, 서버에 전송 ③ 서버 : <비밀키>로 패스워드 복호화 - SHA-256 – ① 서버 : SHA-256을 위한 salt 생성 및 salt로 패스워드 암호화 ② 서버 : Salt와 암호화된 패스워드를 저장 1 - 필요 라이브러리 – • RSA (RSAutil.java, jsbn.js, prng4.js, rng.js, rsa.js) • SHA-256 (SHA256util.java) *키쌍 생성 *키 전송 *키 수신
  • 10. * 회원 정보 중복 검사, 아이디 중복 검사 * EXIST 조건에 해당하는 값이 있다면 1, 없다면 0을 반환 * 1이라면 가입 불가, 0이면 가입 가능
  • 12. 1. 로그인 팝업 Show (loginFormPop.jsp) 2. 로그인 ✓ RSA+SHA256 암호화 ✓ Salt 조회 및 암호화 비교 ✓ 세션 정보 set() 3. 로그아웃 ✓ 세션정보 invalidate()
  • 13. * * *
  • 14. * 비밀번호를 암호화하여 서버에 전송 및 저장 • RSA, SHA256 암호화
  • 15. * *
  • 16. * Ajax를 이용한 페이징 처리 - 클라이언트 Ajax – ① Page : 기본값을 1페이지로 ‘더보기+’클릭 시 페이지 수 1씩 증가 ② listCount : 페이지 당 게시글 6개로 고정 ③ page, listCount 서버에 전송 - 서버 – ① totalCount = SQL_COUNT(*) ② pageCount = 더보기+’ 형식의 특성상 1로 고정 ③ totalPage = totalCount / listCount 나머지가 0이 아니라면 totalPage+1 page가 totalPage보다 커진다면, page=totalPage ④ startPage = ((page-1)/pageCount) * pageCount + 1; ⑤ endPage = stargPage + pageCount – 1; ⑥ startCount = (page-1) * listCount ⑦ endCount = page * listCount ⑧ SQL_LIMIT #{startCount} #{totalCount} 게시물 조회 ⑨ totalPage, endPage, 조회된 게시물 클라이언트에 전송 1 1. 서버에 보일 페이지 번호 및 페이지 당 게시물 수 전송
  • 17. 2 3 2. 페이징 처리에 필요한 정보를 ‘return_MyMovieList_Json.jsp’를 통해 Ajax 응답 3. 응답받은 정보로 리스트 구현
  • 19. * Ajax를 이용한 페이징 처리 - 클라이언트 Ajax – ① Page : 기본값을 1페이지로 ‘더보기+’클릭 시 페이지 수 1씩 증가 ② listCount : 페이지 당 댓글 6개로 고정 ③ page, listCount 서버에 전송 - 서버 – ① totalCount = SQL_COUNT(*) ② pageCount = 10 ③ totalPage = totalCount / listCount - 나머지가 0이 아니라면, totalPage+1 - page가 totalPage보다 커진다면, page=totalPage ④ startPage = ((page-1)/pageCount) * pageCount + 1; ⑤ endPage = stargPage + pageCount – 1; ⑥ startCount = (page-1) * listCount ⑦ endCount = page * listCount ⑧ SQL_LIMIT #{startCount} #{totalCount} 게시물 조회 ⑨ 페이징 정보 및 조회된 게시물 클라이언트에 전송
  • 21. * 영화 예매하기 * Step1. 극장 상영 위치 및 시간 선택
  • 22. * Step2. 극장 좌석 선택
  • 23. * Step3. 예매 정보 확인 및 결제 완료 티켓 오늘 날짜 영화관 (마지막 예매번호 + 1)
  • 24. * *