![article thumbnail image](https://blog.kakaocdn.net/dn/bRWltP/btrVh56QxdX/Pv1JaPgKuTu0MJbVW3dVv1/img.png)
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 |