[JSP] 14. 도서구매 정보입력창 문제

도서구매정보입력창

bookform.html과 book.jsp와  amounterror.jsp와  bookcommon.jsp이다.

 

★ 도서구매정보입력

- 도서선택: 체크박스 (오라클, 자바, jquery, 서블릿, 스프링)

- 수량: text(5개)

- 주소: text(1개)

- 연락처1: select (010, 011,016)

    text (1개, placeholder='나머지번호입력')

- 입력완료버튼


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<body>
    <form action="book.jsp">
        <h1> 도서구매 정보 입력</h1>
        도서선택: <br>
        <input type=checkbox name= book value=오라클>오라클
        <input type=checkbox name= book value=자바>자바
        <input type=checkbox name= book value=jquery>jquery
        <input type=checkbox name= book value=서블릿>서블릿
        <input type=checkbox name= book value=스프링>스프링<br>
            
        수량: <br>
        <input type=text name=qty>
        <input type=text name=qty>
        <input type=text name=qty>
        <input type=text name=qty>
        <input type=text name=qty><br>
        
        주소: <br>
        <input type=text name=addr><br>
        
        연락처: <br>
        <select name=phone1>
            <option> 010 </option>
            <option> 011 </option>
            <option> 016 </option>
        </select><br>
        <input type=text name=phone2 placeholder=나머지번호입력><br>
        <input type=submit value=입력버튼>        
    </form>
</body>
 



★ 선택되지 않은 도서의 수량은 0으로 처리한다.

- 수량에 음수가 입력되면 amounterror.jsp 파일로 예외를 전달합니다. :

   "수량은 음수가 불가합니다" 예외메시지로 전달

if(수량 < 0){

throw new Exception("수량은 음수가 불가합니다 ");

<%=exception%>


1
2
3
4
5
6
7
8
9
10
11
12
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" isErrorPage="true"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%=exception.getMessage() %>
</body>
</html>



★ 모든 jsp 파일 공통 가정: bookcommon.jsp

온라인 서점은 24시간 운영됩니다.

문의는 book@online.com 으로 주시면 됩니다.


1
2
3
4
5
6
7
8
9
 
<body>
<p style=
"border:solid 2px red;text-align:center">
온라인 서점은 24시간 운영됩니다.<br>
문의는 book@online.com 으로 주시면 됩니다.
</p>
</body>
 



★ 배열또는 hashMap이용할 것

  오라클 1권 15000원

  자바 1권 20000원

  jquery 1권 15000원

  서블릿 1권 17000원

  스프링 1권 25000원


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" errorPage="amounterror.jsp"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<% 
String booklist [] = 
{"오라클""자바""jquery","서블릿","스프링" };
int pricelist[]= 
{1500020000150001700025000};
 
//HashMap<String, Integer> map
//= new HashMap<String, Integer>();
//map.push("오라클", 15000);
//4번 
//map.get("오라클")
 
 
//book 이름 , checkbox 선택된 것만 jsp 전송
String[] books = 
request.getParameterValues("book");
 
//balance 이름 가진 것 모두 : 5
String[] balances = 
request.getParameterValues("balance");
 
//수량 입력x : 0
//수량 음수 : amounterror.jsp 예외처리전담
for(int i = 0; i < balances.length; i++){
    if(balances[i].equals("")) balances[i] = "0";
    if(Integer.parseInt(balances[i]) < 0
        throw new Exception
    ("수량은 음수가 불가합니다");
}
 
//books 사용자선택 도서가 
//booklist 전체책 목록 존재하는지 판단
//pricelist index : 가격
int pricePerBook = 0;
int priceTotalBooks = 0;
for(int i= 0; i< books.length; i++ ){
    for(int j = 0; j <booklist.length; j++){
        if(booklist[j].equals(books[i])){
            pricePerBook = pricelist[j] * 
            Integer.parseInt(balances[j]);
            out.println
            (books[i] + ":" + balances[j] 
                    + "권 선택:"
            + pricePerBook +"원<br>"    );
            priceTotalBooks += pricePerBook;
            break;
        }
    }
}
out.println
("<h1>총가격:"+ priceTotalBooks + "</h1>");
String address = 
request.getParameter("address");
String phone1 = request.getParameter("phone1");
String phone2 = request.getParameter("phone2");
String phone = phone1 + "-" + phone2;
%>
배송지:<%=address %><br>
연락처:<%=phone %><br>
<%@ include file="bookcommon.jsp" %>
</body>
</html>



★★★ 다음과 같이 출력 ★★★

<출력>

자바 : 3권 : 60000원

jquery : 2권 : 30000원

총 지불 금액 : xxxx원

배송지 : 주소

연락처 : 010-xxx-xxxx

확인하세요.

온라인 서점은 24시간 운영됩니다. 

문의는 book@online.com 으로 주시면 됩니다.