JSP(JavaServer Page)

JSP(JavaServer Page) - 10 : session과 request 객체를 활용한 응용 프로그램 selProduect.jsp

n.han 2016. 7. 27. 22:23

1. selProduct.jsp


1) selProdject.jsp의 구성은 다음과 같다.


- request가 POST인 경우에만 request를 setCharacterEncoding()하는 부분


- form이며 (POST), command.equals("login")인 경우 session에 id 속성 값을 setAttribute()하는 부분


- form이며 (POST), command.equlas("add")인 경우 session에 저장된 productlist 속성 값을 getAttribute()하는 부분


- a tag (GET), command.equlas("logout")인 경우 session에 저장된 username과 productlist 속성을 삭제하는 부분


- a tag (GET), command.equlas("clear")인 경우 session에 저장된 productlist 속성을 삭제하는 부분


- a tag (GET), command.equlas("checkOut")인 경우 list = session.getAttribute("productlist")하고,


  마지막에 request.getMethod().equals("GET")이고 command가 checkOut인 경우 list를 출력하는 부분





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


<%


// 상품 정보와 list 초기화

String productname = null;


  ArrayList<String> list = null;

 

  // GET 방식은 톰캣 서버가 UTF-8로 Encoding하므로, POST인 경우에만 Encoding

  if(request.getMethod().equals("POST")) {


  request.setCharacterEncoding("UTF-8");


  }

 

  String command = request.getParameter("command");

 

  // form1 POST 방식, command의 값이 login인 경우

  if(request.getMethod().equals("POST") && command != null && command.equals("login")) {


  // session의 유저 이름 속성을 username input 태그의 값으로 설정

  session.setAttribute("username", request.getParameter("username"));


  }

  // GET 방식인 a tag의 command 값이 logout인 경우 

  else if(request.getMethod().equals("GET") && command != null && command.equals("logout")) {


  // session의 유저 이름 속성과 상품 정보 속성이 삭제됨

  session.removeAttribute("username");

  session.removeAttribute("productlist");


  }

  // GET 방식인 a tag의 command 값이 clear인 경우

  else if(request.getMethod().equals("GET") && command != null && command.equals("clear")) {


  // session의 상품정보 속성을 삭제함

  session.removeAttribute("productlist");


  }

  // form2 POST 방식, command 값이 add인 경우 

  else if(request.getMethod().equals("POST") && command != null && command.equals("add")) {


  // session의 상품 정보 속성 값을 get하여,

  productname = request.getParameter("product");

  list = (ArrayList<String>)session.getAttribute("productlist");


  // null인 경우 ArrayList<String>을 새로 만들어서 그 list를 setAttribute하고,

  if(list == null) {

    list = new ArrayList<String>();

    session.setAttribute("productlist", list);

  }


  // 상품 정보 이름을 ArrayList에 add

  list.add(productname);

  }

  // GET 방식의 checkout command가 실행된 경우

  else if(request.getMethod().equals("GET") && command != null && command.equals("checkOut")) {


  // session의 상품 정보들을 list 변수에 넣음

  list = (ArrayList<String>)session.getAttribute("productlist");


  }

%>


<!DOCTYPE html>

<HTML>

<head>

<title>ch06 : selProduct.jsp</title>


<!--  form2의 상품정보 추가가 된 경우에만 alert -->

<%

  if(request.getMethod().equals("POST") && command != null && command.equals("add")) {

  String script = "<script>alert('" + productname + "이(가)추가 되었습니다.!!');</script>";  

  out.println(script);

  }

%>


</head>

<body>

<H2>상품선택</H2>

<HR />

<!-- session의 username 속성 값이 null인 경우에만 로그인 관련 코드를 보여줌 -->

<%

  if(session.getAttribute("username") == null) {

%>

  <H3>로그인</H3>

  <!--  form1, form을 구별하기 위해 command=login을 한 것에 주목 -->

  <form name="form1" method="POST" action="selProduct.jsp?command=login">

  <input type="text" name="username"/>

  <input type="submit" value="로그인"/>

  </form>

<%

  }

  else {

  out.println(session.getAttribute("username") + "님 환영합니다!!!!");

  // logout하는 a tag. URL에 command=logout을 추가한 것에 주목

  out.println("<a href='selProduct.jsp?command=logout'>logout</a>");

  }

%>

  <HR />


  <!-- form2, form을 구별하기 위해 command=add를 추가한 것에 주목. -->

  <form name="form2" method="POST" action="selProduct.jsp?command=add">

  <!-- request.getAttribute("product")가 아래 선택된 option 값임에 주목 -->

  <SELECT name="product">

  <option>사과</option>

  <option>귤</option>

  <option>파인애플</option>

  <option>자몽</option>

  <option>레몬</option>

  </SELECT>

  <input type="submit" value="추가"/>

  </form>

 

  <!--  checkOut시 list를 session.getAttribute("productList")로 가져오고 -->

  <a href="selProduct.jsp?command=checkOut">계산</a>

  <a href="selProduct.jsp?command=clear">장바구니 비우기</a>

 

<hr />

<%

  if(request.getMethod().equals("GET") && command != null && command.equals("checkOut")) {

  // produectList 출력

  if(list == null) {

  out.println("선택한 상품이 없습니다.!!!");

  }

  else {

  for(String pname : list) {

    out.println(pname + "<BR>");

  }

  }

  }

%>

</body>

</html>