728x90
사용자의 로그인 상태를 세션으로 확인하며, 상품 목록을 드롭 다운 메뉴로 제공하고, 장바구니에 상품을 추가할 수 있도록 하는 기본 실습
코드 구현
test17.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.util.ArrayList,test.ProductVO"%>
<jsp:useBean id="pDAO" class="test.ProductDAO"></jsp:useBean>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>메인 페이지</title>
</head>
<body>
<div id="header">
<%
if (session.getAttribute("name") == null) {
%>
<form action="test18.jsp" method="post">
아이디 <input type="text" name="mid"><br>
비밀번호 <input type="password" name="mpw"><br>
<input type="submit" value="로그인">
</form>
<%
}
else {
%>
<%= session.getAttribute("name") %>님 안녕하세요 :D <a href="test19.jsp">로그아웃</a>
<%
}
%>
</div>
<hr>
<div id="content">
<form action="test20.jsp">
상품선택 <select name="pk">
<%
ArrayList<ProductVO> datas = pDAO.selectAll(null);
for(ProductVO v : datas) {
out.println("<option value='" + v.getPk() + "'>" + v + "</option>");
}
%>
</select>
<input type="submit" value="장바구니 추가하기">
</form>
</div>
<hr>
<a href="test21.jsp">결제하기</a>
</body>
</html>
test18.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<jsp:useBean id="mDAO" class="test.MemberDAO"/>
<jsp:useBean id="mVO" class="test.MemberVO"/>
<jsp:setProperty property="*" name="mVO"/>
<%
String mid = request.getParameter("mid"); // mid 요청
String mpw = request.getParameter("mpw"); // mpw 요청
mVO = mDAO.selectOne(mVO); // mVO에 데이터가 있는지 확인
if (mVO == null) { // 데이터가 없으면 test17.jsp로 가지만, 알럿으로 '로그인 실패..' 출력
out.print("<script>alert('로그인 실패...'); location.href = history.go(-1)</script>");
}
else { // 데이터가 있다면
session.setAttribute("name", mVO.getName()); // 세션에 사용자의 이름 저장
response.sendRedirect("test17.jsp");
}
%>
로그인 결과 처리를 해주는 페이지로 성공 시엔 세션에 사용자의 이름을 저장하여 test17.jsp로 이동
test19.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
//session.setAttribute("mid", null); // 해당 세션을 비워줘
session.removeAttribute("name"); // 해당 세선을 지워줘
session.removeAttribute("cart");
//session.invalidate(); // 모든 세션을 지워줘
response.sendRedirect("test17.jsp");
%>
로그아웃 시 해당되는 액션으로 사용자의 모든 세션을 비운 후 test17.jsp로 이동
test20.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="test.ProductVO,java.util.ArrayList"%>
<jsp:useBean id="pDAO" class="test.ProductDAO"/>
<jsp:useBean id="pVO" class="test.ProductVO"/>
<jsp:setProperty property="*" name="pVO"/>
<%
ProductVO data = pDAO.selectOne(pVO); // 받아온 상품을 저장
ArrayList<ProductVO> cart = (ArrayList<ProductVO>)session.getAttribute("cart");
// 세션에 상품을 저장하기 위해 리스트로 선언
if (cart == null) { // 카트가 없다면 새로운 리스트를 생성하여 세션에 저장
cart = new ArrayList<ProductVO>();
session.setAttribute("cart", cart);
}
cart.add(data); // 받아온 상품을 리스트에 추가
%>
<script>
alert('<%= data.getName() %> 이(가) 장바구니에 추가되었습니다! :D');
location.href = 'test17.jsp';
</script>
세션에 장바구니를 생성하여 상품을 담은 후 test17.jsp로 이동
test21.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.util.ArrayList,test.ProductVO"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>결제 페이지</title>
</head>
<body>
<%
int total = 0;
%>
<h1><%= session.getAttribute("mid") %>님이 구매한 상품들입니다.</h1>
<hr>
<ol>
<%
ArrayList<ProductVO> cart = (ArrayList<ProductVO>)session.getAttribute("cart");
for (ProductVO v : cart) {
out.println("<li>" + v + "</li>");
total += v.getPrice();
}
%>
</ol>
<hr>
<h2>총 금액은 <%= total %>원 입니다.</h2>
<a href="test17.jsp">메인으로 돌아가기</a>
</body>
</html>
세션에 저장된 상품들의 가격을 추출하여 총합을 구한 뒤 결제 금액을 출력, 원하지 않는다면 메인으로 이동하기 버튼을 통해 test17.jsp로 이동
728x90
'Web > JSP' 카테고리의 다른 글
[JSP] Session, Application, Out을 활용하여 웹 페이지 만들기(실습) (0) | 2023.07.02 |
---|---|
[JSP] Application과 Out (0) | 2023.07.02 |
[JSP] 웹 개발에서 Session (0) | 2023.07.01 |
[JSP] 데이터 전송 방법 (forward, redirect) (0) | 2023.07.01 |
[JSP] 에러페이지 (0) | 2023.07.01 |