Skip to content

woonhasu/woonhasu_shop

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

97 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

woonhasu_shop

home (1)

πŸ› μš΄ν•˜μˆ˜ μ‡Όν•‘

μš΄ν•˜μˆ˜ 쇼핑은 νšŒμ›,μ œν’ˆ,μž₯λ°”κ΅¬λ‹ˆ,μ£Όλ¬Έλ‚΄μ—­ CRUDλ₯Ό κ΅¬ν˜„ν•œ 온라인 μ‡Όν•‘ μ„œλΉ„μŠ€ μž…λ‹ˆλ‹€.

  • νšŒμ›κ°€μž…
  • νšŒμ›μ •λ³΄μˆ˜μ •
  • νšŒμ›νƒˆν‡΄
  • 둜그인(μœ μ €/κ΄€λ¦¬μž)
  • λ‘œκ·Έμ•„μ›ƒ
  • μƒν’ˆμΉ΄νŠΈμ €μž₯/μ‚­μ œ
  • μƒν’ˆμ •λ³΄μΆ”κ°€/μˆ˜μ •/μ‚­μ œ
  • λ‹¨μΌμƒν’ˆμ£Όλ¬Έ/μ‚­μ œ
  • μ „μ²΄μƒν’ˆμ£Όλ¬Έ
  • νšŒμ›μ •λ³΄ν™•μΈ

πŸ‘¨β€πŸ‘§β€πŸ‘§ Team

woonhasu

βš™ 개발 ν™˜κ²½

  • Java : 1.8 version
  • Eclipse : photon
  • OracleDB
  • Maven
  • Tomcat
  • JPA / Lombok
  • Servlet / JSP
  • HTML / CSS / JavaScript

2. SQL

  • DDL

    DROP TABLE orders;
    DROP TABLE cart;
    DROP TABLE product;
    DROP TABLE users;
    
    DROP SEQUENCE orders_SEQ;
    DROP SEQUENCE cart_SEQ;
    DROP SEQUENCE product_SEQ;
    DROP SEQUENCE users_SEQ;
    
    CREATE SEQUENCE orders_SEQ
    START WITH 1
    INCREMENT BY 1;
    
    CREATE SEQUENCE users_SEQ
    START WITH 1
    INCREMENT BY 1;
    
    CREATE SEQUENCE cart_SEQ
    START WITH 1
    INCREMENT BY 1;
    
    CREATE SEQUENCE product_SEQ
    START WITH 1
    INCREMENT BY 1;
    
    CREATE TABLE product
    (
        product_idx     NUMBER           PRIMARY KEY,
        category		VARCHAR2(20)	 NOT NULL,
        product_name    VARCHAR2(50)     NOT NULL, 
        price           NUMBER           NOT NULL, 
        color           VARCHAR2(20)     NULL, 
        psize           VARCHAR2(20)     NULL
    );
    
    CREATE TABLE cart
    (
        cart_idx       NUMBER          PRIMARY KEY, 
        user_id        VARCHAR2(20)    NOT NULL, 
        product_idx    NUMBER          NULL
    );
    
    CREATE TABLE orders
    (
        order_idx      NUMBER          PRIMARY KEY,
        user_id        VARCHAR2(20)    NOT NULL, 
        product_idx    NUMBER          NOT NULL, 
        order_date     DATE            NOT NULL
    );
    
    CREATE TABLE users
    (
        id         VARCHAR2(20)     PRIMARY KEY,
        pw         VARCHAR2(20)     NOT NULL, 
        admin	     NUMBER(1)		NOT NULL,
        name       VARCHAR2(20)     NOT NULL, 
        address    VARCHAR2(300)    NOT NULL, 
        phone      VARCHAR2(20)     NOT NULL 
    );
    
    ALTER TABLE orders  ADD FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE;
    ALTER TABLE orders  ADD FOREIGN KEY (product_idx) REFERENCES product(product_idx) ON DELETE CASCADE;
    ALTER TABLE cart  ADD FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE;
    ALTER TABLE cart  ADD FOREIGN KEY (product_idx) REFERENCES product(product_idx) ON DELETE CASCADE;
  • DML

    INSERT INTO product VALUES(product_SEQ.NEXTVAL, 'bottom', 'μ½”νŠΌνŒ¬μΈ ', 40000, 'beige', 'free');
    INSERT INTO product VALUES(product_SEQ.NEXTVAL, 'setup', 'μ˜¬λΈ”λž™ μ…‹μ—…', 68000, 'black', 'free');
    INSERT INTO product VALUES(product_SEQ.NEXTVAL, 'top', 'μŠ€νŠΈλΌμ΄ν”„ μ…”μΈ ', 34000, 'blue', 'free');
    INSERT INTO product VALUES(product_SEQ.NEXTVAL, 'outer', '숏카라 μ½”νŠΈ', 48000, 'blue', 'free');
    INSERT INTO product VALUES(product_SEQ.NEXTVAL, 'top', 'ν›„λ“œ 아노락', 36000, 'khaki', 'free');
    INSERT INTO product VALUES(product_SEQ.NEXTVAL, 'top', '그레이 ν›„λ“œν‹°', 30000, 'grey', 'free');
    INSERT INTO product VALUES(product_SEQ.NEXTVAL, 'bottom', '베이지 μ½”νŠΌ 슀컀트', 32000, 'beige', 'free');
    
    INSERT INTO users VALUES('admin', 'adminpw', '1', 'κ΄€λ¦¬μž', 'κ΄€λ¦¬μžμ§‘', '01012345678');
    INSERT INTO users VALUES('geesuee', 'jisu', '0', 'λ°°μ§€μˆ˜', '인천 쀑ꡬ ν•˜λŠ˜λ³„λΉ›λ‘œ 121', '01030576577');
    INSERT INTO users VALUES('noowah', 'noowah', '0', 'μ‘°ν•˜μš΄', 'μ„œμšΈ 은평ꡬ λΆˆκ΄‘λ‘œ 16κΈΈ 25-7 2μΈ΅', '01044460410');
    INSERT INTO users VALUES('paparo2', 'papa', '0', 'κΉ€ν•œλ‚˜', '경기도 삼평동 λ™νŒκ΅λ‘œ 212', '01066000028');
    
    INSERT INTO cart VALUES(cart_SEQ.NEXTVAL, 'noowah', 1);
    INSERT INTO orders VALUES(orders_SEQ.NEXTVAL, 'noowah', 1, '2021-09-06');
    
    commit;

3. Directory Tree

  • project 디렉토리 트리

    C:.
    β”‚  .classpath
    β”‚  .gitignore
    β”‚  .project
    β”‚  pom.xml
    β”‚
    β”œβ”€.settings
    β”‚      .jsdtscope
    β”‚      org.eclipse.jdt.core.prefs
    β”‚      org.eclipse.jpt.core.prefs
    β”‚      org.eclipse.m2e.core.prefs
    β”‚      org.eclipse.wst.common.component
    β”‚      org.eclipse.wst.common.project.facet.core.prefs.xml
    β”‚      org.eclipse.wst.common.project.facet.core.xml
    β”‚      org.eclipse.wst.jsdt.ui.superType.container
    β”‚      org.eclipse.wst.jsdt.ui.superType.name
    β”‚      org.eclipse.wst.validation.prefs
    β”‚
    β”œβ”€build
    β”‚  └─classes
    β”‚      └─META-INF
    β”‚              persistence.xml
    β”‚
    β”œβ”€sql
    β”‚      ddl.sql
    β”‚      dml.sql
    β”‚
    β”œβ”€src
    β”‚  β”œβ”€controller
    β”‚  β”‚      Controller.java
    β”‚  β”‚
    β”‚  β”œβ”€exception
    β”‚  β”‚      MessageException.java
    β”‚  β”‚      NotExistException.java
    β”‚  β”‚
    β”‚  β”œβ”€META-INF
    β”‚  β”‚      persistence.xml
    β”‚  β”‚
    β”‚  β”œβ”€model
    β”‚  β”‚  β”œβ”€DAO
    β”‚  β”‚  β”‚      CartDAO.java
    β”‚  β”‚  β”‚      OrdersDAO.java
    β”‚  β”‚  β”‚      ProductDAO.java
    β”‚  β”‚  β”‚      Service.java
    β”‚  β”‚  β”‚      UsersDAO.java
    β”‚  β”‚  β”‚
    β”‚  β”‚  β”œβ”€domain
    β”‚  β”‚  β”‚      Cart.java
    β”‚  β”‚  β”‚      Orders.java
    β”‚  β”‚  β”‚      Product.java
    β”‚  β”‚  β”‚      Users.java
    β”‚  β”‚  β”‚
    β”‚  β”‚  └─DTO
    β”‚  β”‚          CartDTO.java
    β”‚  β”‚          OrdersDTO.java
    β”‚  β”‚          ProductDTO.java
    β”‚  β”‚          UsersDTO.java
    β”‚  β”‚
    β”‚  └─util
    β”‚          DBUtil.java
    β”‚
    β”œβ”€target
    β”‚  β”œβ”€classes
    β”‚  β”‚  β”œβ”€controller
    β”‚  β”‚  β”‚      Controller.class
    β”‚  β”‚  β”‚
    β”‚  β”‚  β”œβ”€exception
    β”‚  β”‚  β”‚      MessageException.class
    β”‚  β”‚  β”‚      NotExistException.class
    β”‚  β”‚  β”‚
    β”‚  β”‚  β”œβ”€META-INF
    β”‚  β”‚  β”‚      persistence.xml
    β”‚  β”‚  β”‚
    β”‚  β”‚  β”œβ”€model
    β”‚  β”‚  β”‚  β”œβ”€DAO
    β”‚  β”‚  β”‚  β”‚      CartDAO.class
    β”‚  β”‚  β”‚  β”‚      OrdersDAO.class
    β”‚  β”‚  β”‚  β”‚      ProductDAO.class
    β”‚  β”‚  β”‚  β”‚      Service.class
    β”‚  β”‚  β”‚  β”‚      UsersDAO.class
    β”‚  β”‚  β”‚  β”‚
    β”‚  β”‚  β”‚  β”œβ”€domain
    β”‚  β”‚  β”‚  β”‚      Cart.class
    β”‚  β”‚  β”‚  β”‚      Orders.class
    β”‚  β”‚  β”‚  β”‚      Product$ProductBuilder.class
    β”‚  β”‚  β”‚  β”‚      Product.class
    β”‚  β”‚  β”‚  β”‚      Users$UsersBuilder.class
    β”‚  β”‚  β”‚  β”‚      Users.class
    β”‚  β”‚  β”‚  β”‚
    β”‚  β”‚  β”‚  └─DTO
    β”‚  β”‚  β”‚          CartDTO$Get.class
    β”‚  β”‚  β”‚          CartDTO.class
    β”‚  β”‚  β”‚          OrdersDTO$Create.class
    β”‚  β”‚  β”‚          OrdersDTO$Get.class
    β”‚  β”‚  β”‚          OrdersDTO.class
    β”‚  β”‚  β”‚          ProductDTO$Create.class
    β”‚  β”‚  β”‚          ProductDTO$Get.class
    β”‚  β”‚  β”‚          ProductDTO$Update.class
    β”‚  β”‚  β”‚          ProductDTO.class
    β”‚  β”‚  β”‚          UsersDTO$Cart.class
    β”‚  β”‚  β”‚          UsersDTO$Create.class
    β”‚  β”‚  β”‚          UsersDTO$Delete.class
    β”‚  β”‚  β”‚          UsersDTO$Get.class
    β”‚  β”‚  β”‚          UsersDTO$LogIn.class
    β”‚  β”‚  β”‚          UsersDTO$Order.class
    β”‚  β”‚  β”‚          UsersDTO$Update.class
    β”‚  β”‚  β”‚          UsersDTO.class
    β”‚  β”‚  β”‚
    β”‚  β”‚  └─util
    β”‚  β”‚          DBUtil.class
    β”‚  β”‚
    β”‚  β”œβ”€m2e-wtp
    β”‚  β”‚  └─web-resources
    β”‚  β”‚      └─META-INF
    β”‚  β”‚          β”‚  MANIFEST.MF
    β”‚  β”‚          β”‚
    β”‚  β”‚          └─maven
    β”‚  β”‚              └─playdata
    β”‚  β”‚                  └─step12_webProject
    β”‚  β”‚                          pom.properties
    β”‚  β”‚                          pom.xml
    β”‚  β”‚
    β”‚  └─test-classes
    └─WebContent
        β”‚  addProduct.jsp
        β”‚  cart.jsp
        β”‚  index.html
        β”‚  login.jsp
        β”‚  manageOrders.jsp
        β”‚  manageProduct.jsp
        β”‚  manageUsers.jsp
        β”‚  myPage.jsp
        β”‚  orders.jsp
        β”‚  productCategory.jsp
        β”‚  productName.jsp
        β”‚  register.jsp
        β”‚  shop.jsp
        β”‚  showError.jsp
        β”‚  updateUser.jsp
        β”‚
        β”œβ”€common
        β”‚      headerNav.jsp
        β”‚      searchBar.jsp
        β”‚
        β”œβ”€css
        β”‚      style.css
        β”‚
        β”œβ”€images
        β”‚      1.jpg
        β”‚      2.jpg
        β”‚      3.jpg
        β”‚      4.jpg
        β”‚      5.jpg
        β”‚      6.jpg
        β”‚      7.jpg
        β”‚
        β”œβ”€js
        β”‚      canvas.js
        β”‚
        β”œβ”€META-INF
        β”‚      MANIFEST.MF
        β”‚
        └─WEB-INF
            β”‚
            └─lib
                    taglibs-standard-impl-1.2.5.jar
                    taglibs-standard-spec-1.2.5.jar
  • java src 디렉토리 트리

    C:.
    β”œβ”€controller
    β”‚      Controller.java
    β”‚
    β”œβ”€exception
    β”‚      MessageException.java
    β”‚      NotExistException.java
    β”‚
    β”œβ”€META-INF
    β”‚      persistence.xml
    β”‚
    β”œβ”€model
    β”‚  β”œβ”€DAO
    β”‚  β”‚      CartDAO.java
    β”‚  β”‚      OrdersDAO.java
    β”‚  β”‚      ProductDAO.java
    β”‚  β”‚      Service.java
    β”‚  β”‚      UsersDAO.java
    β”‚  β”‚
    β”‚  β”œβ”€domain
    β”‚  β”‚      Cart.java
    β”‚  β”‚      Orders.java
    β”‚  β”‚      Product.java
    β”‚  β”‚      Users.java
    β”‚  β”‚
    β”‚  └─DTO
    β”‚          CartDTO.java
    β”‚          OrdersDTO.java
    β”‚          ProductDTO.java
    β”‚          UsersDTO.java
    β”‚
    └─util
            DBUtil.java
  • WebContent 디렉토리 트리

    C:.
    β”‚  addProduct.jsp
    β”‚  cart.jsp
    β”‚  index.html
    β”‚  login.jsp
    β”‚  manageOrders.jsp
    β”‚  manageProduct.jsp
    β”‚  manageUsers.jsp
    β”‚  myPage.jsp
    β”‚  orders.jsp
    β”‚  productCategory.jsp
    β”‚  productName.jsp
    β”‚  register.jsp
    β”‚  shop.jsp
    β”‚  showError.jsp
    β”‚  updateUser.jsp
    β”‚
    β”œβ”€common
    β”‚      headerNav.jsp
    β”‚      searchBar.jsp
    β”‚
    β”œβ”€css
    β”‚      style.css
    β”‚
    β”œβ”€images
    β”‚      1.jpg
    β”‚      2.jpg
    β”‚      3.jpg
    β”‚      4.jpg
    β”‚      5.jpg
    β”‚      6.jpg
    β”‚      7.jpg
    β”‚
    β”œβ”€js
    β”‚      canvas.js
    β”‚
    β”œβ”€META-INF
    β”‚      MANIFEST.MF
    β”‚
    └─WEB-INF
        └─lib
                taglibs-standard-impl-1.2.5.jar
                taglibs-standard-spec-1.2.5.jar

πŸš€ νŠΈλŸ¬λΈ” μŠˆνŒ… / 이슈

  • JSTL 쑰건문

    • JSP λ‚΄λΆ€ <c:if> νƒœκ·Έ μ‚¬μš©μ‹œ 쑰건은 λͺ¨λ‘ EL Tag "${}" λ‚΄λΆ€μ—μ„œλ§Œ μž‘μ„±
    μ˜ˆμ‹œ
    <c:if test="${product.idx == 1}">    O
    <c:if test="${product.idx} == 1">    X
    
    <c:if test="${not empty sessionScope.user && sessionScope.user.admin==0}">   O
    <c:if test="${not empty sessionScope.user} && ${sessionScope.user.admin==0}">   X
  • DELETE ON CASCADE

    • νšŒμ› 정보 μ‚­μ œ μ‹œ λΆ€λͺ¨μžμ‹ κ΄€κ³„λ‘œ mapping 된 ν…Œμ΄λΈ”(orders, cart) 도 같이 μ‚­μ œλ  수 있게 on delete cascade μ„€μ • ν•„μˆ˜
    • cascade 섀정은 Entity, SQL쀑 ν•˜λ‚˜λ§Œ μ μš©ν•΄λ„ μ‚¬μš© κ°€λŠ₯
  • 1:倚 맀핑 관계 λ‚΄ 객체 μˆ˜μ •

    • μˆ˜μ •ν•  객체가 κΈ°λ³Έ νƒ€μž… 속성인지, μ°Έμ‘° νƒ€μž… 속성인지 확인 ν•„μš”
    • λ§€ν•‘λœ ν…Œμ΄λΈ”μ€ DB상 참쑰객체의 PK만 가지고 μžˆλŠ”κ²ƒμ²˜λŸΌ λ³΄μ΄μ§€λ§Œ 사싀은 μ—°κ²°λœ 참쑰객체의 λͺ¨λ“  속성을 보유
    • λ§€ν•‘λœ ν…Œμ΄λΈ”μ€ μ°Έμ‘°ν•˜λŠ” μ—”ν‹°ν‹°μ˜ PKν™œμš© β†’ μˆ˜μ • μ‹œ PK둜 DB둜 μ ‘κ·Όν•˜μ—¬ 맀핑 관계λ₯Ό μž¬μ •μ˜
  • CSS, JS λ“± λΈŒλΌμš°μ € μ–Έμ–΄ 미적용

    • λΈŒλΌμš°μ € μ–Έμ–΄κ°€ μ—…λ°μ΄νŠΈ μ•ˆλ  μ‹œ λΈŒλΌμš°μ € "μΊμ‹œ λΉ„μš°κΈ° 및 κ°•λ ₯μƒˆλ‘œκ³ μΉ¨" μ‹€ν–‰
  • GitHub Auto-merge - 항상 μ˜μ‹¬!

    • μˆ˜μ • μ „ μ½”λ“œλΌμΈμœΌλ‘œ Auto-merge 주의
    • 파일λͺ… μˆ˜μ • μ‹œ merge 브랜치의 base 확인
    • Git Bash κ΄€λ ¨ 문제 λ°œμƒ

🚩 μ•„μ‰¬μš΄ 점 / μΆ”κ°€ν•˜κ³  싢은 점

  • μž₯λ°”κ΅¬λ‹ˆ(cart) λ‚΄ 쀑볡 사항에 λŒ€ν•΄μ„œ μˆ˜λŸ‰μœΌλ‘œ ν‘œν˜„ / μˆ˜λŸ‰ μˆ˜μ • κΈ°λŠ₯ κ΅¬ν˜„
  • μ£Όλ¬Έλ‚΄μ—­ 수λ₯Ό κΈ°μ€€μœΌλ‘œ 판맀 best 물건 리슀트 좜λ ₯ κ΅¬ν˜„
  • νŽ˜μ΄μ§€ 이동 방식에 따라 νŠΈλžœμ μ…˜ 성곡 메세지λ₯Ό 좜λ ₯ν•˜μ§€ λͺ»ν•œ 것 아쉬움 β†’ νŒμ—… μ°½ κ΅¬ν˜„
  • μ‹œκ°„μ΄ μ΄‰λ°•ν•΄μ„œ WebContent λΆ€λΆ„ 파일 경둜λ₯Ό μ •λ¦¬ν•˜μ§€ λͺ»ν•œ 것이 아쉬움

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •