The Debugging Chronicles : "코드의 미학"

예제와 함께 알아 보는 파라미터를 옮길 수 있는 내장객체들 - 2 본문

서버프로그래밍 JSP

예제와 함께 알아 보는 파라미터를 옮길 수 있는 내장객체들 - 2

sweetseonah1004 2024. 8. 7. 23:47
[예제]
d.jsp 페이지에서 이름을 입력하여 e.jsp 페이지로 이동합니다.
e.jsp 페이지에는 상품들이 select 박스에 제공되어있습니다.
1상품을 5개정도 제공해주세요.
[장바구니에 추가] 버튼을 눌러서 해당상품을 추가합니다.
[ 계산하기 ] 버튼을 눌러서 지금까지 장바구니에 담았던 상품들을 모두 출력합니다.
f.jsp 페이지에서 장바구니에 select 에서 선택한 상품을 추가해주세요.
g.jsp 페이지에서 장바구니에 저장했던 상품들을 출력해주세요.

 

d.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="e.jsp" method="POST">
	이름 <input type="text" name="name" required> <input type="submit" value="입장">
</form>

</body>
</html>

 

e.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="f.jsp" method="POST">
	<select name="product">
		<option>복숭아</option>
		<option>사과</option>
		<option>샤인머스캣</option>
	</select>   
    <input type="submit" value="장바구니에 추가">
</form>
<hr>
<a href="g.jsp">계산하기</a>

</body>
</html>

 

f.jsp

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

<%
	// product 데이터를 가져와서 product 변수에 대입
	String product = request.getParameter("product");
    // 배열리스트로 만든 cart변수에 cart 세션을 가지고 와서 대입
    ArrayList<String> cart = (ArrayList<String>)session.getAttribute("cart");
    // 페이지가 처음 로딩 될때, cart의 값이 아예 아무것도 없을 때
    if(cart == null){
    	//cart에 새로운 배열리스트를 생성
		cart= new ArrayList<String>();
        // 만들어 놓은 cart 변수에 cart 넣기
        session.setAttribute("cart",cart);
    }
    			// alert창 띄우기 	// 이전 페이지로
    out.println("<script>alert('장바구니에 상품을 추가했습니다!'); history.go(-1);</script>")
    							// 음수를 넣으면 이전페이지 양수면 앞의 페이지로 이동
%>

 

g.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="java.util.ArrayList" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

<%
	// cart 세션 데이터를 가지고 와서 
	ArrayList<String> cart=(ArrayList<String>)session.getAttribute("cart");
	// 장바구니를 새로 들어오게 되면 장바구니를 비워준다
    session.removeAttribute("cart");
		// removeAttribute - 저장되어 있는 세션 중에서 선택한 세션만 지우기
        //invalidate - 모조리다 지우는 것  
    // session.invalidate();
    // 카트에 데이터가 있다면
	if(cart != null){
%>
		<ul>
			<% for(String v:cart){ %>
				<li><%= v %></li>
			<% } %>
		</ul>
<%
	}
	else{
		out.println("장바구니가 비어있습니다!");
	}
%>
<hr>
<a href="d.jsp">처음으로 돌아가기</a>

</body>
</html>