프로그래밍

[Web] day38 : 세션(+세션 활용 예제 쇼핑몰) 본문

Web/Web

[Web] day38 : 세션(+세션 활용 예제 쇼핑몰)

시케 2023. 7. 31. 08:55
728x90
반응형

2023.06.28.수

세션

세션은 JSP 내장객체이다

세션은 브라우저 단위로 유지된다

서버가 변경되어도 '브라우저가 유지되고있었다면 설정이 유지되어야하는 상태'에 있는 데이터들을
"세션(session)"으로 관리한다
세션은 일정 시간이 흐르면 연결이 해제된다

 

활용 예제로는 장바구니, 로그인 유지 여부, 광고 띄우지 않기 등이 있다

 

 

세션 저장 및 활용

session.setAttribute("cart", cart);
session.getAttribute("cart");

 

세션 활용 쇼핑몰 예제

a.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="java.util.ArrayList,model.ProductVO" %>
<jsp:useBean id="pDAO" class="model.ProductDAO" />
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title> a </title>
</head>
<body>

<div id="header">
	<%
	if( session.getAttribute("name") == null ){
	%>
		<form action="d.jsp" method = "post">
			아이디 <input type="text" name="mid">
			비밀번호 <input type="password" name="mpw">
			<input type="submit" value="로그인">
		</form>
	<%
	}
	else{
	%>
		<%=session.getAttribute("name")%>님, 안녕하세요! :D | <a href="e.jsp">로그아웃</a>
	<%
	}
	%>
</div>

<hr>

<div id="content">
	<form action="b.jsp">
		상품선택 <select name="num">
			<%
				ArrayList<ProductVO> datas=pDAO.selectAll(null);
				for(ProductVO v:datas){
					out.println("<option value='"+v.getNum()+"'>"+v+"</option>");
				}
			%>
		</select>
		<input type="submit" value="장바구니에 추가하기">
	</form>
</div>

<hr>

<a href="c.jsp">결제하기</a>

</body>
</html>

 

b.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="model.ProductVO,java.util.ArrayList" %>
<jsp:useBean id="pDAO" class="model.ProductDAO" />
<jsp:useBean id="pVO" class="model.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='a.jsp';
</script>

 

c.jsp

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

	<%=session.getAttribute("mid")%>님이 구매한 상품들입니다.
	<hr>
	<ol>
		<%
		int total = 0;
		ArrayList<ProductVO> cart = (ArrayList<ProductVO>) session.getAttribute("cart");

		if (cart == null) {
			return;
		} else {
			for (ProductVO v : cart) {
				out.println("<li>" + v + "</li>");
				total += v.getPrice();
			}
		}
		%>
	</ol>

	<hr>
	<h2>
		총 금액은
		<%=total%>입니다
	</h2>


	<hr>
	<a href="a.jsp">메인으로 돌아가기</a>

</body>
</html>

 

d.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="model.MemberVO" %>
    
<jsp:useBean id="mDAO" class="model.MemberDAO" />
<jsp:useBean id="mVO" class="model.MemberVO" />
<jsp:setProperty property="*" name="mVO" />

<%
	mVO = mDAO.selectOne(mVO);
	
	if(mVO == null) {
		out.println("<script>alert('로그인 실패...');location.href = 'a.jsp'</script>");
	}
	else{
		session.setAttribute("name", mVO.getName());
	}

	response.sendRedirect("a.jsp");
%>

 

e.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	session.removeAttribute("mid");
	session.removeAttribute("cart");
	response.sendRedirect("a.jsp");
%>

 

 

728x90
반응형
Comments