Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

EnjoyTime18/htamart

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

177 Commits

Repository files navigation

Spring Project : HTA_mall

스프링을 이용한 쇼핑몰 사이트 입니다.

⌛ 개발 기간

23.02.01 ~ 23.02.16



🛠️ 사용 기술

MySQL Spring jQuery JavaScript CSS3 HTML5 Apache Tomcat Apache Maven

🏃 참여 인원

  • Joo young Kim
  • Han byeol Kim
  • Won woo Seo
  • Jun soo Lee
  • Sung hwan Cho
  • Seong min Cho
  • Won jun Jung

🧭 ERD

RubberDuck



📖 프로젝트 요약

  • 회원가입시 중복된 아이디는 사용할수 없습니다. 회원가입 전 '중복체크' 기능을 사용하여 미리 중복 여부를 확인할수 있습니다.
  • 로그인이 성공적으로 진행되면 로그인 정보를 세션에 저장/유지 시키고, 로그아웃으로 세션을 해제합니다.
  • 전체 카테고리와 검색, 슬라이드쇼를 통해 상품목록으로 이동합니다.
  • 추천상품, 상품목록의 이름으로 상품 상세 페이지로 이동합니다.
  • 상세 페이지에서 수량, 바로 구매와 장바구니로 결제 방식을 선택 할 수 있습니다.
  • 장바구니에서 담은 상품을 선택적으로 구매 가능합니다.
  • 주문/결제 시 자동으로 로그인된 고객의 정보가 들어가며 수정 가능합니다.

⚙️ 주요 기능

🙂 회원가입/로그인


우측 상단의 재생버튼을 클릭하세요.

RubberDuck


  • 회원가입과 로그인은 하나의 창에서 토글로 구분하고 있습니다.
  • 회원가입시 중복된 아이디를 미리 확인할 수 있습니다. 중복 확인을 하기 전까지는 '회원가입' 버튼은 비활성화 상태로 유지됩니다.
  • 로그인시 틀린 아이디/ 틀린 비밀번호/ 정상 로그인 의 경우의 수를 잡고 있습니다.




🔍 검색 기능


우측 상단의 재생버튼을 클릭하세요.

RubberDuck


  • 사용자가 '검색창' 을 사용해 검색을 할 시 검색한 키워드를 SQL에서 like 연산자를 사용해 검색된 단어가 일치한 관련된 상품이 나오게끔 로직을 구현했습니다.
  • 존재하지 않는 상품이나 잘못된 입력을 통해서 검색을 할 시 사용자에게 "검색하신 상품이 없습니다"라고 응답을 보냅니다.
  • 상품 분류를 클릭하여 원하는 카테고리의 상품을 조회할 수 있습니다.




🛒 장바구니


우측 상단의 재생버튼을 클릭하세요.


  • 사용자가 장바구니에 추가한 품목의 이미지, 수량, 이름, 총 가격을 출력합니다.
  • 장바구니에 있는 항목을 삭제할 경우 비동기로 처리되어 즉시 최신화 된 목록을 보여줍니다.
  • 장바구니에 추가된 상품이 없거나, 장바구니에서 체크박스로 선택한 상품이 없을 경우, '결제하기' 버튼은 비활성화 됩니다.




🛒 상품 구매


우측 상단의 재생버튼을 클릭하세요.


  • 사용자가 선택한 상품, 수량 정보를 받아 결제 페이지를 출력합니다.
  • '약관동의' 체크박스를 체크하지 않으면 '결제하기' 버튼이 작동하지 않습니다.



🤕 Trouble Shooting

✔️ 회원가입시 데이터가 추가된 시간을 입력하려고 했으나 원하는 Date 형식으로 저장되지 않음.

  • @Temporal 어노테이션을 사용하여 db 에 맞는 Date 형식을 저장. -> 혹은 LocalDateTime 타입으로 저장하는 방법도 있었음.

✔️ 깃허브를 사용하여 조원간 파일을 공유할때 필요없는 파일까지 같이 공유가 됨.

  • gitignore 파일을 사용하여 공유될 필요가 없는 파일은 제외시킴.

✔️ 로그인 성공시 그 정보를 서버 어디에 저장시켜 로그인 상태를 유지시킬지 고민.

  • Model api 를 사용하여 로그인 정보를 저장하여 session 관리.

✔️ form 태그 내에 있는 정보를 바로 controller 로 보내지 않고 jsp 내에서 가공을 한 후 보낼 필요가 있었음.

  • onClick 함수를 사용하거나 EventHandler 를 사용.



💡 느낀점

✔️ 회원 가입시 회원 정보를 저장하는 알고리즘이 보안에 매우 취약하다고 생각. 모종의 방법으로 암호화를 시켜 보안성을 늘려야 한다는 생각.

✔️ 로그인 상태 유지를 단순하게 하나의 세션에 저장하여 관리 하였는데, 동일하게 보안성에 문제가 있다고 생각.

✔️ 데이터 베이스 설계시 '정규화' 라는 개념을 사용하여 일관성/무결성을 올려야 겠다고 생각.

About

쇼핑몰(마트) 서비스를 구현한 웹 사이트

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 6

AltStyle によって変換されたページ (->オリジナル) /