Coder Social home page Coder Social logo

spring_web's Introduction

Spring Web PORTFOLIO

스프링으로 만든 웹 어플리케이션 포트폴리오입니다.

웹 주소 : []

CINEPHILE / OTT·VOD 웹 사이트

자바와 스프링 프레임워크를 이용한 MVC Model2 패턴의 웹 서비스 페이지 CINEPHILE 시네필 입니다.
넷플릭스, 왓챠같은 OTT-VOD 서비스에 착안하여 원하는 스트리밍 서비스를 구매할 수 있는 웹 애플리케이션을 설계하였습니다.

[주요 OTT/VOD 컨텐츠 예] OTT서비스 [출처:https://brunch.co.kr/@businessinsight/42]

개발 환경

  • IDE : Spring Tool Suite (STS) Version 4.2.4
  • JDK, JRE : 1.8
  • Language : Java Version 8, Java Script, JSTL, EL, HTML, CSS
  • DATABASE : MySQL 5.7
  • Web Server : AWS EC2 (ubuntu, Apache Tomcat 8.0(WAS))
  • Library Management : MAVEN
  • SQL Mapper : MyBatis
  • Open Source Library : JQuery, Ajax, Handlebars.js, DataTables, BootStrap, Materialize.css

DATABASE

  • MySQL Table ER Diagram

CREATE DATABASE cine_db;
USE cine_db;

20200129_175141

Function

  1. 회원가입

    • Form의 Input 태그로 전달된 파라미터 값을 데이터베이스에 Insert한다.
  2. 로그인

    • OAuth2.0 인증 표준의 네이버 로그인 API를 이용하여 Access 토큰을 발급 받아 로그인 한다.
    • Interceptor로 로그인 폼에서 전달된 사용자 파라미터가 데이터베이스에 존재하는지 확인한다.
    • 로그인 정보는 Session에 저장하여 관리한다.
  3. 게시판

    • 로그인한 회원만 서비스를 이용할 수 있다.
      • 게시판과 댓글 이용
        • 글 작성·조회·수정·삭제 (CRUD)
      • DISCUSS 소셜 댓글 서비스
      • Rest API - Ajax 댓글
        • 댓글 등록하면 jQuery-Ajax에서 JSON.stringify로 댓글 문자열 데이터가 JSON 데이터로 파싱된다. controller의 ResponseBody 어노테이션이 붙은 메소드로 요청이 전송되어 HTTP 요청 Body로 응답하는 REST 방식으로 처리된다.
        • 댓글 조회, 수정, 삭제도 마찬가지로 Ajax를 통해 REST 방식-비동기로 처리된다.
  4. 관리자 권한

    • 별도의 관리자 테이블에 로그인 정보를 저장하여 관리자 로그인을 한다.
    • 상품 등록
      • 국내/해외/기타영상 각 목록에 맞는 상품을 추가하면 해당 테이블로 Insert된다.
      • 파일첨부는 Drag & Drop 방식으로 Form에 이미지를 끌어놓으면 배열에 담겨, Ajax로 파일을 전송할 수 있는 FormData 객체를 이용해 form 내부에 파일의 이름을 포함시켜 전송한다. 해당 게시판 테이블과 트랜잭션으로 첨부 파일용 테이블에도 파일 데이터가 전송된다.
    • 파일 업로드와 동시에 날짜 폴더가 생성되며 UUID로 파일이름이 랜덤 지정된다.
    • 썸네일 이미지와 원본 파일이 서버의 지정한 경로에 저장되며 등록된 상품의 수정, 삭제도 같은 REST-Ajax 방식으로 처리된다.
    • 회원관리
      • jQuery의 Datatables 라이브러리로 관리자 권한으로 회원 목록을 조회, 수정, 삭제한다.
  5. 장바구니/결제

    • 각 카테고리 마다 해당 DB 테이블에 저장된 상품 목록들을 확인 할 수 있으며, 원하는 상품을 클릭하면 정보가 보여진다. 디테일 이미지는 파일 이름으로 식별하여 handlebars.js 템플릿을 통해 보여진다.
    • 대여일 선택 → 장바구니에 담기 → 결제 → 내 정보에서 결제 확인
    • 결제하면 tbl_order 테이블로 Insert되고 장바구니 목록에서 Delete 된다.

ref ) 코드로 배우는 스프링 웹 프로젝트(구멍가게 코딩단 지음)

spring_web's People

Contributors

alsoscope avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

Forkers

seco

spring_web's Issues

SQL COUNT

search_list 게시판에서 총 게시글을 구하는 SQL 함수 외에, 검색 결과 후 게시글을 COUNT 해주는 SQL을 작성하여 수정해야 한다.
게시글 전체 COUNT : select count(*) from tbl_board
이후에 문자열 검색을 처리하는 동적 SQL에서 COUNT해야한다

Reply Modal Update

댓글 기능의 Modal Window의 댓글 수정 / 삭제 제한
세션으로 로그인한 사용자=댓글 작성자임을 구분하여 jstl로 버튼을 띄우거나
비밀번호 입력 후 사용자가 맞으면 작동하기 구현 중..

Referential Integrity Constraint

Foreign Key와 참조 무결성 제약조건 에러

java.sql.SQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails (spring_ex.tbl_attach, CONSTRAINT fk_product_attach FOREIGN KEY (product_id) REFERENCES tbl_product (product_id) ON DELETE CASCADE ON UPDATE CASCADE)

ProductDTO [product_id=0, product_name=33, product_price=33, product_desc=33, files=[undefined]]
ProductServiceImpl files : [Ljava.lang.String;@6b74241b
ProductServiceImpl - files null ?? : [Ljava.lang.String;@6b74241b
ERROR: jdbc.audit - 3. PreparedStatement.execute() INSERT INTO tbl_attach (fullName, product_id) VALUES ('undefined', LAST_INSERT_ID())

Error updating database.
The error may involve defaultParameterMap
The error occurred while setting parameters

테이블 컬럼, 자료형, Primary Key, 데이터, FK 제약조건 모두 문제없음.

네이버 로그인 콜백

네이버 로그인 창을 팝업으로 띄움 (크롬은 새탭..)
로그인 성공하면 그 팝업창에서 콜백 함수로 넘어가서 confirm 페이지를 여는데
원래는 팝업창 페이지 로그인 성공 - 팝업창 닫힘 - 본 페이지가 confrim 페이지로 리다이렉트여야 한다...

IntegrityConstraintViolationException: Duplicate entry

Error updating database. Cause: java.sql.SQLIntegrityConstraintViolationException: Duplicate entry '/2019/09/01/s_3423bea6-961f-4125-84e6-dc3a1111a721_movie_image (' for key 'PRIMARY' ### The error may exist in file [C:_java\05_sts_work.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\00_Portfolio\WEB-INF\classes\mappers\productMapper.xml] ### The error may involve defaultParameterMap ### The error occurred while setting parameters ### SQL: insert into tbl_attach(fullName, product_id) values(?, ?) ###

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.