Jsp Session


1. Session 생성 및 활용


  • loginForm.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<!DOCTYPE html>
<html>
<head>
<title> 로그인창 </title>
</head>
<body>

<h3>로그인 확인하기 </h3>
<form action="LoginService.jsp" method="get">
사용자: <input name='User' type='text'><br/>
비밀번호: <input name='Pass' type='password'><br/>
<input type='submit' value='login'>
</form>

</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<!DOCTYPE html>
<html>
<head>
<title> 로그인창 </title>
</head>
<body>

<h3>로그인 확인하기 </h3>
<form action="LoginService.jsp" method="get">
사용자: <input name='User' type='text'><br/>
비밀번호: <input name='Pass' type='password'><br/>
<input type='submit' value='login'>
</form>

</body>
</html>


  • LoginService.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<!DOCTYPE html>
<html>
<head>
<title> 로그인확인 </title>
</head>
<body>
<%

	// 실제로는 DB에서 가져와야하는 값
	String saveUser = "bill7845";
	String savePass = "3927";

	// 이전화면 폼에서 넘겨받는 값
	String user = request.getParameter("User");
	String pass = request.getParameter("Pass");

	// user, password가 같을 때 로그인 성공, 그렇지 않으면 로그인 실패
	if( ( user.equals(saveUser) ) && ( pass.equals(savePass) ) ){
		// #2. 세션에 "id"라는 이름에 변수 user 값을 저장
		session.setAttribute("id", user);  	/*user변수의 값 가져오기 */		/*session은 obj형태로 값을 가져옴  */
                                        // session 생성 메서드 setAttribute(key,value)
		// #1. 로그인 성공하면 바로 MainPage.jsp를 요청
		response.sendRedirect("MainPage.jsp");
	} else {

		// #1. 로그인에 실패하면 바로 LoginForm.jsp을 요청
		response.sendRedirect("LoginForm.jsp");
	}			
%>

</body>
</html>


  • MainPage.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<%


  //# 1."id"로 저장된 세션값을 얻어온다.
	Object obj = session.getAttribute("id");	/*session은 obj형태로 가져옴  */

  //# 2. 값이 null이라면 LoginForm.jsp로 페이지 이동
	if(obj==null){
		response.sendRedirect("LoginForm.jsp");
		return;
	}

  //# 3. null이 아니라면 String 형변환하여 변수에 지정
	String user = (String)obj;	/* 캐스팅 필요  */

%>

<!DOCTYPE html>
<html>
<head>
<title> 우리 페이지 </title>
</head>
<body>
	<h2>  페이지는 로그인을 하셔야만   있는 페이지 입니다 </h2><br/><br/><br/>
	<%=user %>, 로그인 중입니다.

</body>
</html>


2. 세션 활용 장바구니


  • wshop.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<html><head><title>우리 쇼핑 </title></head>
<body>
<h2>쇼핑 </h2>

<h3>가전 제품</h3>
<ul>
<li><a href='tv-samsung-1020.jsp'>삼성 R14 텔레비젼</a> </li>
<li><a href='ref-lg-2072.jsp'>LG 냉장고</a> </li>
</ul>
</body>
</html>


  • ref-lg-2072.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<html>
<head><title>우리 쇼핑몰 </title></head>
<body>

<table><tr><td><img src='imgs/2072.gif' width='180'>

</td><td>


문을 자주 열어도, 음식을 많이 채워도,
역시 LG 싱싱특급~
- 용량 : 500L (냉장 : 360L, 냉동 : 140L)
- 신감각 가죽 무늬
- 더욱 효율적인 내부 공간
- 얼듯 말듯 싱싱고
- 유러피안 아치 디자인
- 레일 부착 분리형 생생 야채실
- CFC-FREE 환경 친화 설계
- 안전 강화 유리 선반
- 광촉매 파워 탈취
- 인체 공학적 설계
- 방음 보강으로 저소음 설계
- 초절전 설계
- 360 이동용 회전 바퀴
- 색상 : 진미색
- 에너지 소비 효율 : 1등급
- 소비 전력 : 55 kwh/
- 크기 : 831 x 1,785 x 699mm

</table>

663,600 
<form action='Cart.jsp' method='post'>
<input type='hidden' name='id' value="2072">
<input type='hidden' name='name' value="LG 냉장고 R-B50CF">
<input type='hidden' name='price' value="663600">
<input type='submit' value="장바구니">
</form>
</body>


  • tv-samsung-1020.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<html>
<head><title> 우리 쇼핑몰 </title></head>
<body>

<table><tr><td><img src='imgs/1020.jpg' width='180'>

147,000 
<form method='post' action='Cart.jsp'>
<input type='hidden' name='id' value="1020">
<input type='hidden' name='name' value="삼성 TV CT 14R1">
<input type='hidden' name='price' value="147000">
<input type='submit' value="장바구니">
</form>

</body>
</html>


  • Cart.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<%@ page import="java.util.*" %>
<%@ page import="shop.cart.Goods" %>  // java 클래스 import
<%
	String id="";
	String name ="";
	int price=0;

	ArrayList<Goods> glist = null;

	request.setCharacterEncoding("utf-8");

	// 1. Form의 값(hidden값) 넘겨받기 ( id, name, price )
	id = request.getParameter("id");
	name = request.getParameter("name");
	price = Integer.parseInt(request.getParameter("price"));
	// 2. 세션의 cart 속성을 얻어온다.
	Object obj = session.getAttribute("cart");
	// 3. 만일 null이면 ArrayList 객체 새로 생성하고 그렇지 않으면 ArrayList 변수(glist)에 지정
	if(obj == null){ // 아직 구매하기를 누른항목이 없으므로 새로운 리스트 만들어줌
		glist = new ArrayList<Goods>();
	}else{
		glist = (ArrayList<Goods>)obj;  // glist를 ArrayList로 만들어준것????
	}
	// 4. 1번의 값들을 Goods 객체로 생성후 ArrayList 에 추가
	Goods good = new Goods(id,name,price);
	glist.add(good);   // arraylist에 객체가 들어간것.
	// 5. 세션에 cart 라는 이름에 Arrist를 저장
	session.setAttribute("cart",glist);


%>		 

<html>
<body bgcolor=white>
<%= name %>  구입하셨습니다.

<br><br><br>

<table>
<tr bgcolor="#e7a068"><th>상품명</th>
<th>가격</th></tr>

<%
		int n = glist.size();
		int sum = 0;
		for(int i=0; i < n; i++) {
			Goods goods = (Goods) glist.get(i);
			int gp = goods.getPrice();
			sum += gp;
%>
			<tr><td align="center"> <%= goods.getName() %> </td>
				<td align="right"> <%= gp %> </td></tr>
<%
		} 		 
%>

<tr bgcolor="#e7a068"><td colspan="2" align="right"> 총액 : <%= sum  %></td></tr>
</table>

<br/><br/>
[<a href="wshop.jsp">쇼핑하러 가기</a>]
[<a href="Buy.jsp">구입하기</a>]

</body>
</html>


  • Buy.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<%@ page import="shop.cart.Goods" %>
<%@ page import="java.util.*" %>

<%
	ArrayList<Goods> glist = null;

	request.setCharacterEncoding("utf-8");

	// 1. 세션에서 지정한 cart 속성값을 얻어와서 ArrayList 변수에 지정
	Object obj = session.getAttribute("cart");
	if(obj==null){
		return;
	}else{
    // 2. null 이면 리턴 그렇지 않으면 세션값 얻어오기
		glist=(ArrayList<Goods>)obj;
    // 3. 세션에서 속성을 제거한다
		session.removeAttribute("cart");
	}


%>		 

<html>		
<body bgcolor="white">
<table>
<tr bgcolor="#e7a068"><th>상품명</th>
<th>가격</th></tr>

<%
		int sum = 0;
		int n = glist.size();

		for(int i=0; i < n; i++) {
			Goods goods = (Goods) glist.get(i);
			int gp = goods.getPrice();
			sum += gp;

%>
			<tr><td align="center"> <%= goods.getName() %></td>
				<td align="right"><%= gp %></td>
			</tr>
<%
		} 	
%>
<tr bgcolor="#e7a068"><td colspan="2" align="right"> 총액 :  <%= sum %> </td></tr>
</table>

<br><br><a href="wshop.jsp">다시 쇼핑하기</a>
</body></html>