본문 바로가기

JSP

[JSP] session을 이용한 장바구니 예제

728x90
반응형

1. index.jsp (표지 페이지) 
로그인 <form>을 제공 
이름(uname)을 입력하고 main.jsp로 이동 
method="post"
2. main.jsp 
uname님, 반갑습니다! :D 
물건을 구매하는 <form>을 제공 
5가지의 물건 <select> - 갯수나 재고 신경x 
<a>구매하기</a>
3. add.jsp
구매한 물건을 장바구니에 추가하는 로직 
장바구니 : 브라우저를 종료하면 사라지는 객체 ( session에 저장) 
로직을 수행완료하면 다시 main.jsp로 이동
4. result.jsp 
지금까지 장바구니에 담긴 모든 물건을 화면에 출력 
+) 단, 유효성 검사를 수행해주세요! 

 

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>표지 페이지</title>
</head>
<body>

	<form action="main.jsp" method="post">

		<input type="text" name="uname">
		 <input type="submit" value="로그인">
	</form>

</body>
</html>

main.jsp 

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%request.setCharacterEncoding("UTF-8");
String uname=request.getParameter("uname");
session.setAttribute("uname", uname);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>메인 페이지</title>
</head>
<body>

	<%= session.getAttribute("uname") %>님, 반갑습니다! :D
	<form action="add.jsp" method="post">

		<select name="product">
			<option>사과</option>
			<option>빠삐코</option>
			<option>수박</option>
			<option>새우깡</option>
			<option>감자칩</option>
		</select> <input type="submit" value="장바구니에 추가하기">
	</form>
	<hr>
	<a href="result.jsp">구매하기</a> 

</body>
</html>

 

add.jsp

<%@page import="java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>장바구니에 물건을 추가하는 로직(화면출력x)</title>
</head>
<body>

<%
request.setCharacterEncoding("UTF-8");
String Product=request.getParameter("product");

ArrayList <String> arr=(ArrayList)session.getAttribute("productList");  
//session에 저장된 장바구니를 불러오는 코드
 
//productlist를 세션이 가져온다
//리스트가 없을때 새로운 리스트를 생성해라
if(arr==null){     
    arr= new ArrayList <String>();    
    session.setAttribute("productList", arr);   
}
    arr.add(Product);    
%>
//"이름 " ,객체 or 내용

<script type="text/javascript">
	alert("<%=request.getAttribute("product")%>이(가) 장바구니에 추가되었습니다!");
	history.go(-1);
</script>

</body>
</html>

result.jsp

<%@page import="java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("UTF-8");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>결제 페이지</title>
</head>
<body>

	<h1><%=session.getAttribute("uname")%>님이 구매한 상품 목록
	</h1>
	<hr>
	<ol>
		<%
		ArrayList<String> arr = (ArrayList) (session.getAttribute("productList"));
		if (arr == null) {
			System.out.println("구매한 상품이 없습니다!");
		} else {
			for (String i : arr) {
				out.println("<li>" + i + "<li>");
			}
		}
		arr.removeAll(arr); //목록 출력 후 removeAll 메서드 사용해서 장바구니를 비운다.
		%>
	</ol>
</body>
</html>

 

728x90
반응형