jsp파일에 주문 페이지 작성 

 * 오늘의 날짜 -> Date객체 생성

  Date today = new Date();
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy년  MM월 dd일");

 sdf.format(today); 

 

* form 의 action 값은 Servlet 매핑값 작성 (매핑값은 반드시 contextRoot뒤에 와야함)


 주문 버튼 클릭시  Servlet으로 정보 전달

1) 요청 시 전달값 뽑기  및 데이터 가공처리(파싱) ==> 변수 및 객체에 기록
    만일 post방식으로 요청할 경우 전달값 뽑기 전 인코딩 처리 == request.setCharacterEncoding("UTF-8");) 

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		String name = request.getParameter("userName"); //"홍길동" 
		String phone = request.getParameter("phone"); //"01022140321"
		String address = request.getParameter("address"); //"서울시 관악구"
		String message = request.getParameter("message"); //"빨리보내주세요" | ""
		
		String pizza = request.getParameter("pizza"); // "콤비네이션피자"
		String[] toppings = request.getParameterValues("topping");// ["",""] | null
		String[] sides = request.getParameterValues("side"); // ["",""] | null
		String payment = request.getParameter("payment"); //"card" | "cash"

 

2) 요청처리 ( Service-> Dao -> sql문 실행)
   -> 아직 DB구축 전이므로 생략 

// 총 결제 금액 구하기 

int price = 0; 
		
		switch(pizza) {
		case "콤비네이션피자" : price += 5000; break;
		case "치즈피자" : price += 6000; break;
		case "포테이토피자":
		case "고구마피자" : price += 7000; break;
		case "불고기피자" : price += 8000; break;
		
		}
		
		if(toppings != null) {
			for(int i=0; i<toppings.length; i++) {
				switch(toppings[i]) {
				case "고구마무스" :
				case "콘크림무스" : price += 1500; break;
				case "파인애플토핑" : 
				case "치즈토핑" : price += 2000; break;	
				case "치즈바이트":
				case "치즈크러스트" : price += 3000; break;
				
				}
			}
		}
		
		
		if(sides != null) {
			for(int i=0;i<sides.length;i++) {
				switch(sides[i]) {
				case "콜라": case "사이다": price += 2000; break;
				case "갈릭소스": case "핫소스": 
				case "피클": case "파마산치즈가루": price += 500; break;
				
					
				}
			}
		}

 

3) 반환받은 결과를 가지고 사용자가 보게될 응답페이지 만들기 혹은 jsp에 위임
   응답데이터가 있을 경우 => request의 attribute에 담기

	    request.setAttribute("userName", name);
		request.setAttribute("phone", phone);
		request.setAttribute("address",address);
		request.setAttribute("message", message);
		
		request.setAttribute("pizza", pizza);
		request.setAttribute("toppings", toppings);
		request.setAttribute("sides",sides);
		request.setAttribute("price", price);
		request.setAttribute("payment", payment);
		
		
		RequestDispatcher view = request.getRequestDispatcher("views/pizzaPayment.jsp");
		view.forward(request, response);
	}

>> RequestDispatcher 객체를 이용해서 jsp에 위임 => 포워딩 


jsp로 위임한 전달값 뽑기 ( getAtrribute)

페이지 지시어 바로 밑에 작성 

<% // getAttribute의 반환형 object이므로 다운캐스트
	String userName = (String)request.getAttribute("userName");
	String phone = (String)request.getAttribute("phone");
	String address = (String)request.getAttribute("address");
	String message = (String)request.getAttribute("message");
	
	String pizza = (String)request.getAttribute("pizza");
	String[] toppings = (String[])request.getAttribute("toppings");
	String[] sides =(String[])request.getAttribute("sides");
	int price = (int)request.getAttribute("price");
	String payment = (String)request.getAttribute("payment");
	
%>

>> getAttribute의 반환형은 object이므로 다운캐스트해야함

body영역에  출력할 내용 작성 

<body>
	<h1>주문 내역</h1>
	
	<h4>[ 주문자 정보 ]</h4>
	<ul>
		<li>성함 : <%=userName %></li>
		<li>전화번호 : <%=phone %></li>
		<li>주소 : <%=address %></li>
		
		<%if(message.equals("")){%>
		 	<li>요청사항 : 작성안함 </li>
		
		<% }else {%>
			<li>요청사항 : <%=message %> </li>
			<%} %>
	
	</ul>	
	
	<br>
	<h4>[ 주문 정보 ]</h4>
	<ul>
		<li>피자 : <%=pizza %></li>
		<% if(toppings == null){ %>
			<li>토핑 : 선택안함 </li>
		<%} else{ %>
			<li>토핑 : <%=String.join(", ",toppings) %> </li>
		<%} %>
		
		<li>사이드 : <%=sides==null ? "선택안함" : String.join(", ", sides) %></li>
		
	
	</ul>
	<br>
	<h3>위와 같이 주문하셨습니다. </h3>
	<h2>총 결제 금액 : <%=price %>원</h2>
	<h2>결제 방식 : <%=payment.equals("card")? "카드":"현금" %></h2>
	
	
</body>
</html>

 >>결과 페이지

'Web' 카테고리의 다른 글

Web 01. 로그인 페이지 만들기 (DB와 연동해서 mvc패턴 이용하기)  (1) 2023.01.04
Server 02 . JSP  (0) 2023.01.02
Server 01 . Servlet  (1) 2023.01.02
복사했습니다!