Session 을 활용하여 장바구니 기능 구현하기

C/S Telecom

Session

Session 이란 Cookie와 다르게 서버쪽 메모리에 저장되는 데이터이다.

클라이언트와 서버가 통신을 할 때 “연결상태”를 유지하면서 통신을 하는것이 아니다. 쉽게 말해 클라이언트가 서버에게 Request 한번, 서버가 클라이언트에게 Response 한번, 이런식으로 통신을 한다.

하지만 사용자는 한번 로그인을 하면 계속 로그인 상태가 지속되어 작업을 계속할 수 있다. 이게 바로 세션 때문에 가능한 일이다.

 

JSP 내장객체

JSP
JSP

JSP 내장객체란 따로 선언을 하지 않고 사용하는 객체이다. 보통 스크립트릿에서 사용하며 내장객체를 통하면 사용자 요청을 컨트롤하거나 페이지 간의 데이터를 공유할 수 있다.

일반적으로 자주 사용되는 JSP 내장객체는 다음과 같다.

  1. request : HTML 폼 요소의선택 값 등 사용자의 입력정보를 읽으려고 사용한다.
    • getParameter(name) : 문자열 name과 이름이 같은 매개변수의 값을 가져온다.
    • setCharacterEncoding() : 현재 JSP로 전달되는 내용을 지정한 캐릭터셋으로 변환해준다.
  2. response : 사용자 요청에 대한 응답을 처리하려고 사용한다.
    • setContentType(type) : 문자열 형태의 type에 지정된 MIME Type으로 contentType을 설정한다.
    • sendRedirect(url) : 클라이언트 요청을 다른 페이지로 보낸다.
  3. session : 클라이언트의 세션 정보를 처리하려고 사용한다.
    • setAttribute(name, attr) : 문자열 name으로 java.lang.Object attr을 설정한다.
    • getAttribute(attr) : 문자열 attr로 설정된 세션 값을 java.lang.Object 형태로 반환한다.
  4. out : 사용자에게 전달하기 위한 output 스트림을 처리하려고 사용한다.
    • println(content) : content의 내용을 newline과 함께 출력한다.
  5. application : 웹 서버의 애플리케이션 처리와 관련된 정보를 참조하려고 사용한다.
    • getServerInfo() : JSP/서블릿 컨테이너의 이름과 버전을 반환한다.

 

장바구니 기능 간단하게 구현하기

장바구니 기능의 흐름은 다음과 같다.

  1. 사용자가 로그인을 한다.
  2. 원하는 만틈 상품을 선택한다.
  3. <주문> 버튼을 클릭하면 지금까지 선택했던 상품이 모두 나타난다.

프로그램 소스 목록은 다음과 같다.

  1. login.jsp
    • <%@ page language="java" contentType="text/html; charset=EUC-KR"
          pageEncoding="EUC-KR"%>
      <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
      <html>
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
      <title>Insert title here</title>
      </head>
      <body>
          <center>
              <h1>로그인</h1>
              <form action="selProduct.jsp" method="post">
                  <input type="text" placeholder="ID입력" name="userId" /> 
                  <input type="submit">
              </form>
          </center>
      </body>
      </html>

       
  2. selProduct.jsp
    • <%@ page language="java" contentType="text/html; charset=EUC-KR"
          pageEncoding="EUC-KR"%>
      <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
      <html>
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
      <title>Insert title here</title>
      </head>
      <body>
      <%
          request.setCharacterEncoding("EUC-KR");
          String userId = request.getParameter("userId");
          session.setAttribute("userId", userId);
      %>
      
          <center>
              <h1>상품선택</h1><br>
              <hr><%= session.getAttribute("userId") %>님 환영합니다 !!!! <hr> <br>
              <form action="add.jsp" method="post">
                  <select name="product">
                      <option>사과</option>
                      <option>귤</option>
                      <option>자몽</option>
                      <option>배</option>
                      <option>포도</option>
                      <input type="submit" value="추가" /> <br>
                      <a href="checkOut.jsp">계산</a>
                  </select>
              </form>
          </center>
      
      </body>
      </html>

       
  3. add.jsp
    • <%@page import="java.util.ArrayList"%>
      <%@ page language="java" contentType="text/html; charset=EUC-KR"
          pageEncoding="EUC-KR"%>
      <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
      <html>
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
      <title>Insert title here</title>
      </head>
      <body>
      <%
          request.setCharacterEncoding("EUC-KR");
      
          String productName = request.getParameter("product");
          ArrayList list = (ArrayList)session.getAttribute("productlist");
          if( list == null ) {
              list = new ArrayList();
              session.setAttribute("productlist", list);
          }
          list.add(productName);
      %>
      <script> history.go(-1); </script>
      </body>
      </html>

       
  4. checkOut.jsp
    • <%@ page language="java" contentType="text/html; charset=EUC-KR"
          pageEncoding="EUC-KR"%>
      <%@ page import="java.util.*" %>
      <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
      <html>
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
      <title>Insert title here</title>
      </head>
      <body>
      <%
          ArrayList list = (ArrayList)session.getAttribute("productlist");
      %>
          <center>
              <h1>계산</h1>
              <br>선택한 상품 목록<hr>
              <br>
              <%
                  if ( list == null ) {
                      out.println("리스트가 비었습니다.");
                  } else {
                      for( Object productname:list ) out.println(productname + "<br>"); 
                  }
              %>
          </center>
      </body>
      </html>

       

참고자료

프로젝트로 배우는 자바 웹 프로그래밍 – 한빛미디어

 


게시됨

카테고리

작성자

%d 블로거가 이것을 좋아합니다: