[JSP] ch04-02. 장바구니

2017. 11. 15. 10:06·WEB/JSP
728x90
반응형

4-2. 장바구니

main.html

<!DOCTYPE html>
<html lang="ko">
<head>
<title></title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
</head>
<body>
    <h2>메인</h2>
    <a href="listProd.jsp"><button type="button">상품목록</button></a>
    <a href="cartProc.jsp"><button type="button">장바구니</button></a>
</body>
</html>​

 

listProd.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<h2>상품 목록</h2>
<form action="cartProc.jsp" method="post">
    <ul>
        <li>노트북<input type="checkbox" name="wishProd" value="노트북"></li>
        <li>전기차<input type="checkbox" name="wishProd" value="전기차"></li>
        <li>아파트<input type="checkbox" name="wishProd" value="아파트"></li>
        <li>북한산<input type="checkbox" name="wishProd" value="북한산"></li>
    </ul>
    <a href="main.html"><button type="button">메인으로</button></a>
    <button type="submit">장바구니에 담기</button>
</form>

 

 

cartProc.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.net.URLEncoder, java.net.URLDecoder"%>
<%@ page import="java.util.StringTokenizer"%>
<%@ page import="java.util.HashSet, java.util.Set"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%
    request.setCharacterEncoding("utf-8");

    //찜한 상품들
    String[] wishProds = request.getParameterValues("wishProd");
    //장바구니에서 삭제한 상품들
    String[] delProds = request.getParameterValues("delProd");
    //장바구니
    Set<String> cart = new HashSet<>();
    
    //장바구니에 상품들을 담는다.
    Cookie[] cookies = request.getCookies();
    for(Cookie cookie:cookies){
        if(cookie.getName().equals("cart")){
            String tmp = URLDecoder.decode(cookie.getValue(), "utf-8");
            StringTokenizer st = new StringTokenizer(tmp, ",");
            while(st.hasMoreTokens()) cart.add(st.nextToken());
        }
    }
    
    //상품을 찜하면
    if(wishProds != null)
        for(String prod:wishProds) cart.add(prod);
    //장바구니에서 상품을 삭제하면
    if(delProds != null)
        for(String prod:delProds) cart.remove(prod);
    
    //장바구니를 client에 전달한다.
    String cartStr="";
    for(String prod:cart) cartStr += prod+",";
    cartStr = URLEncoder.encode(cartStr,"utf-8");
    Cookie cookie = new Cookie("cart", cartStr);
    cookie.setMaxAge(60*60*24*365);
    response.addCookie(cookie);
    
    request.setAttribute("cart", cart);
%>
<jsp:forward page="cartOut.jsp"/>

 

cartOut.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.util.HashSet, java.util.Set"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<h2>장바구니</h2>
<form action="cartProc.jsp" method="post">
    <ul>

<%
    Set<String> cart = (Set<String>)request.getAttribute("cart");
    if(cart.size()==0){
%>
    <p>장바구니가 비었습니다</p>
<%
    }else{
        for(String prod:cart){
%>            
    <li><%=prod%>
        <input type="checkbox" name="delProd" value="<%=prod %>">
    </li>
<%
        }
    }
%>
    </ul>
    <a href="listProd.jsp"><button type="button">상폼목록</button></a>
    <button type="submit">삭제</button>
</form>
 

728x90
반응형

'WEB > JSP' 카테고리의 다른 글

[JSP] ch04-01. Cookie  (0) 2017.11.15
[JSP] ch03-07. Include3  (0) 2017.11.14
[JSP] ch03-06. Scope  (0) 2017.11.14
[JSP] ch03-05. Forward Login  (0) 2017.11.13
[JSP] ch03-04. Redirect Login  (0) 2017.11.13
'WEB/JSP' 카테고리의 다른 글
  • [JSP] ch04-01. Cookie
  • [JSP] ch03-07. Include3
  • [JSP] ch03-06. Scope
  • [JSP] ch03-05. Forward Login
밍글링글링
밍글링글링
mingling - 밍글링, 밍글밍글링. 코드와 어우러지다. IT/ 프로그래밍/소스
    반응형
    250x250
  • 밍글링글링
    mingling
    밍글링글링
  • 전체
    오늘
    어제
    • 밍글링글링 (463)
      • Flutter (2)
      • 일상생활 (8)
        • 리뷰 (1)
        • 생활정보 (4)
        • 맛집 (0)
        • 여행 (0)
        • 모든정보 (3)
      • JAVA (126)
        • 개념 (6)
        • 예제 (115)
        • Exception (2)
      • C (1)
        • C (1)
        • C++ (0)
        • C# (0)
      • JS (29)
        • JavaScript (18)
        • JQuery (5)
        • AJax (0)
        • NODE.JS (6)
        • Angular.JS 2.0 (0)
      • WEB (87)
        • HTML (6)
        • CSS (61)
        • JSP (20)
        • JSTL (0)
      • FrameWork (8)
        • Spring (8)
        • BootStrap (0)
        • MyBATIS (0)
        • JUnit (0)
      • 외부 라이브러리 (5)
      • 공유 소스 관리 (5)
        • Git (5)
        • SVN (0)
      • 빅데이터 프로그래밍 (37)
        • Python (37)
        • R Programming (0)
      • DB (7)
        • ORACLE (0)
        • MySql (6)
      • Development Tools (7)
        • StarUML (0)
        • eXERD (0)
        • Eclipse (4)
      • SKILL (6)
        • Migration (0)
        • Security (6)
      • MicroSoft (0)
        • Excel (0)
        • Word (0)
      • Android (0)
      • Server (21)
        • Ubuntu (5)
        • Linux (15)
      • IOS (0)
      • XML (0)
      • 미디어 (0)
      • 공지사항 (3)
      • NETWORK (1)
      • 게임 (4)
        • 피파 (1)
        • 리니지M (0)
        • 배틀그라운드 (1)
        • 듀랑고 (2)
      • 세상 이슈 (6)
      • 일렉트론 (0)
      • 대회 소식 (4)
      • 업무 (2)
      • Express, Vue (6)
      • docker (11)
      • svelte (3)
      • 블록체인 (1)
      • IT (66)
      • Rust (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    VS Code 팁
    React Compiler
    티스토리 자동화
    자바 for문
    자바 객체 지향
    gitlab 설치
    jsp parameter
    mysql db
    Java Array
    에디터 팁
    rust linux
    spring java
    ubuntu
    Node
    자바 exception
    java casting
    리눅스 설치
    css float
    프런트엔드
    자바 배열
    svelte
    jsp include
    SSL 인증서
    AI 반도체
    lang rust
    AI 코딩 에이전트
    자바 생성자
    vscode
    proxy pass
    브라우저 자동화
    Rust lang
    ssl 인증서 발급
    API 설계
    nginx ssl 설정
    servlet class
    오류
    제미나이
    vue 설치
    러스트
    클론코딩
    vue cli
    css table
    css tb
    Extension Bisect
    자바 클래스
    docker
    nginx ssl 적용
    nginx
    css transition
    css perspective
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
밍글링글링
[JSP] ch04-02. 장바구니
상단으로

티스토리툴바