'Back-End/JSP'에 해당되는 글 71건

  1. 2019.05.21 19.05.21 model 2 방식 이해 (jsp model 2 1강)
  2. 2019.05.21 (JSP 인강) jsp web MVC model2 programming
  3. 2019.05.20 19.05.20 jsp 쇼핑몰 차량 예약 삭제 (동영상 71강) 1
  4. 2019.05.20 19.05.20 jsp 쇼핑몰 차량 구매하기 예약 및 결과 (동영상 69강~70강)
  5. 2019.05.20 19.05.20 jsp 쇼핑몰 차량 구매하기 예약 및 결과 (동영상 68강)
  6. 2019.05.19 19.05.19 jsp 쇼핑몰 차량 날짜 처리 (동영상 67강)
  7. 2019.05.19 19.05.19 jsp 쇼핑몰 로그인 (동영상 66강)
  8. 2019.05.19 19.05.19 jsp 쇼핑몰 차량 구매하기 (동영상 64강~65강)

19.05.21 model 2 방식 이해 (jsp model 2 1강)

Back-End/JSP 2019. 5. 21. 11:04

-model 2 방식-


model 1 방식은 브라우저측에서 웹 서버 쪽으로 접근할때 jsp가 처리했지만,

(간단한 방식은 model1방식을 사용한다. 궂이 복잡한 서블릿 방식을 사용하지 않아도 처리가 가능하기 때문이다.)


model 2 방식은 브라우저측에서 웹 서버 쪽으로 접근할때 Servlet에서 처리하고, 그 결과만 jsp로 넘겨준다.

그 결과 jsp 페이지는 결과만 출력하게 된다. java코드는 jsp페이지에서 만들지 않고, Servlet에서 java코드를 사용해 처리

이런 jsp와 Servlet로 분리하는 개념을 MVC 라고 한다.



-서블릿 만들기-











-예제 및 출력결과-


서블릿에서 로그인을 처리하고 그 결과를 jsp로 다시보내서 id와 비밀번호를 출력하는 페이지.



LoginForm.jsp (로그인 페이지)

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
<%@ 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>
<body>
 
    <center>
        <!-- 로그인 페이지 작성 -->
        <h2>로그인</h2>
        <!-- 모델2방식은 서블릿에서 처리하기때문에 서블릿으로 보내야한다. -->
        <form action="LoginProc.do" method="post">
            <table width="300" border="1">
 
                <tr height="40">
                    <td width="120">아이디</td>
                    <td width="180"><input type="text" name="id"></td>
                </tr>
 
                <tr height="40">
                    <td width="120">패스워드</td>
                    <td width="180"><input type="password" name="password">
                    </td>
                </tr>
 
                <tr height="40">
                    <td align="center" colspan="2"><input type="submit"
                        value="로그인"></td>
                </tr>
 
            </table>
        </form>
    </center>
</body>
</html>
cs



LoginProc.jsp (로그인 처리 페이지)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<%@ 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>
 
    넘어온 데이터는 ${id } 와 ${pass }
 
</body>
</html>
cs



LoginProc.java (로그인 처리 서블릿 페이지)

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
package control;
 
import java.io.IOException;
 
import javax.security.auth.message.callback.PrivateKeyCallback.Request;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
/**
 * Servlet implementation class LoginProc
 */
 
//jsp에서 자료를 받아 처리하는 서블릿 페이지
 
//웹 서블릿에 LoginProc기능이 들어간다. 이런것을 어노테이션 이라고 한다.
//jsp 파일에서 form태그로 이동하는 파일명과 웹 서블릿 안에 적힌 파일의 이름이 같아야된다.
@WebServlet("/LoginProc.do")
public class LoginProc extends HttpServlet {
    // 자바는 get와 Post 방식을 HttpServlet을 상속받지 않고서는 사용할 수 없기 때문에 반드시 HttpServlet을 상속받아야
    // 한다.
 
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
 
        reqPro(request, response); // reqPro로 값을 받을수 있게 한다.
    }
 
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
 
        reqPro(request, response); // reqPro로 값을 받을수 있게 한다.
 
        // jsp에서 form 태그로 보낸 파일형식에 맞춰서 get와 post방식을 구분해서 사용한다.
        // get방식으로 보냈으면 get방식을 사용하고, post 방식으로 보냈으면 post 방식으로 사용한다.
    }
 
    // doGet와 doPost가 가지고있는 값을 reqPro로 보낸다.
    public void reqPro(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
 
    {
        String id = request.getParameter("id");
        String pass = request.getParameter("password");
 
        request.setAttribute("id", id); // request 객체에 데이터를 저장
        request.setAttribute("pass", pass);
 
        // jsp 쪽으로 처리한 자료를 넘겨준다. (LoginProc.jsp)파일로 넘겨준다.
        // 처리한 데이터를 RequestDispatcher클래스의 forward 메소드를 (request, response)를 매개변수로 받아서
        // 자료를 넘겨준다.
        RequestDispatcher dis = request.getRequestDispatcher("LoginProc.jsp");
        dis.forward(request, response);
    }
 
}
 
cs






:

(JSP 인강) jsp web MVC model2 programming

Back-End/JSP 2019. 5. 21. 09:30

https://www.youtube.com/watch?v=TtDtqFaDP5s&list=PLoUGfTxO0cT78DR_2pQZwGbQ2qoDbi1MH&index=21

:

19.05.20 jsp 쇼핑몰 차량 예약 삭제 (동영상 71강)

Back-End/JSP 2019. 5. 20. 22:17

쇼핑몰 예약 삭제 구현


CarReserveDel.jsp (차량 예약 삭제)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<%@page import="db.RentcarDAO"%>
<%@ 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>
<body>
 
<% 
    //차량 예약을 삭제하는 페이지
    //쿼리문을 사용하기위한 pk(기본키 값으로 사용하기 위해) id와 대여일을 파라미터로 받는다.
    String id = request.getParameter("id");
    String rday = request.getParameter("rday");
    System.out.println("첫번째"+id);
    
    RentcarDAO rdao = new RentcarDAO();
    //예약삭제 메소드 호출
    rdao.carRemoveReserve(id,rday);
    System.out.println("두번째"+id);
    response.sendRedirect("RentcarMain.jsp");
%>
 
</body>
</html>
cs



RentcarDAO.java (DB연결)

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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
package db;
 
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Vector;
 
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
 
public class RentcarDAO {
 
    Connection con;
    PreparedStatement pstmt;
    ResultSet rs;
 
    // 커넥션풀을 이용한 데이터베이스 연결
 
    public void getcon() {
 
        // DB에 접속할때는 예외처리를 실시해야됨
        try {
 
            Context initctx = new InitialContext(); // 외부서버로 부터 데이터를 읽어들이는것이기 때문에 드라이버가 없을수 있어
            Context envctx = (Context) initctx.lookup("java:comp/env"); // 자바를 읽어들일수 있는 환경에서 사용 //예외처리를 해준다.
            DataSource ds = (DataSource) envctx.lookup("jdbc/pool");
            con = ds.getConnection();
            // 데이터소스에 username, url, password를 집어넣는다. 그렇게 하면 데이터소스가 커넥션을 얻어 온다.
            // jdbc/pool에 있는 데이터소스를 사용할수 있다.
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
 
        }
    }
 
    // 최신순 3대의 자동차를 리턴하는 메소드
    public Vector<CarListBean> getSelectCar() {
        // 리턴타입을 설정
        Vector<CarListBean> v = new Vector<>();
        getcon(); // 커넥션이 연결되어야 쿼리를 실행 가능
 
        try {
 
            String sql = "select * from rentcar order by no desc ";
            pstmt = con.prepareStatement(sql);
            // 쿼리 실행후 실행결과 Result리턴함
            rs = pstmt.executeQuery();
            int count = 0;
            while (rs.next())// 결과값이 끝날때까지만 실행
            {
                CarListBean bean = new CarListBean();
                bean.setNo(rs.getInt(1));
                bean.setName(rs.getString(2));
                bean.setCategory(rs.getInt(3));
                bean.setPrice(rs.getInt(4));
                bean.setUsepeople(rs.getInt(5));
                bean.setCompany(rs.getString(6));
                bean.setImg(rs.getString(7));
                bean.setInfo(rs.getString(8));
                // 벡터에 빈 클래스를 저장
                v.add(bean);
                count++;
                // 3개만 저장이 되야하기 때문..
                if (count > 3)
                    break// 반복문을 빠져나가시오.
 
            }
            con.close();
        } catch (Exception e) {// 내림차순으로 검색하는 쿼리문 작성
            e.printStackTrace();
        }
        return v;
 
    }
 
    // 카테고리별 자동차 리스트를 저장하는 메소드
    // 벡터로 받았으니 벡터로 리턴함..
    public Vector<CarListBean> getCategoryCar(int cate)
 
    {
        // 리턴타입이 벡터 객체이기 때문에 벡터 객체를 생성한다.
        Vector<CarListBean> v = new Vector<>();
 
        // 데이터를 저장할 빈 클래스 선언
        CarListBean bean = null;
 
        getcon();
 
        try {
            String sql = "select * from rentcar where category=?";
            pstmt = con.prepareStatement(sql);
 
            // ?에 값을 넣는다.
            pstmt.setInt(1, cate);
            // 결과를 리턴
            rs = pstmt.executeQuery();
            // 반복문을 돌려서 데이터를 저장
 
            while (rs.next()) { // 데이터를 저장할 빈 클래스 생성
                bean = new CarListBean();
                bean.setNo(rs.getInt(1));
                bean.setName(rs.getString(2));
                bean.setCategory(rs.getInt(3));
                bean.setPrice(rs.getInt(4));
                bean.setUsepeople(rs.getInt(5));
                bean.setCompany(rs.getString(6));
                bean.setImg(rs.getString(7));
                bean.setInfo(rs.getString(8));
                // 벡터에 빈 클래스를 저장
                v.add(bean);
 
            }
 
            con.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
 
        return v;
 
    }
 
    // 모든 차량을 검색하는 메소드
    public Vector<CarListBean> getAllCar() {
 
        Vector<CarListBean> v = new Vector<>();
        // 데이터를 저장할 빈클래스 선언
        CarListBean bean = null;
 
        getcon();
 
        try {
            String sql = "select * from rentcar";
            pstmt = con.prepareStatement(sql);
            rs = pstmt.executeQuery();
            // 반복문을 돌리면서 데이터를 저장함
 
            while (rs.next()) {// 데이터를 저장할 빈클래스 생성
                bean = new CarListBean();
                bean.setNo(rs.getInt(1));
                bean.setName(rs.getString(2));
                bean.setCategory(rs.getInt(3));
                bean.setPrice(rs.getInt(4));
                bean.setUsepeople(rs.getInt(5));
                bean.setCompany(rs.getString(6));
                bean.setImg(rs.getString(7));
                bean.setInfo(rs.getString(8));
                // 벡터에 빈 클래스를 저장
                v.add(bean);
 
            }
 
            con.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return v;
 
    }
 
    // 하나의 자동차 정보를 리턴하는 메소드
    public CarListBean getOneCar(int no) {
 
        // 리턴타입을 선언한다. 객체를 생성해서 그 객체에 값을 넣은후 리턴해야하기 때문
        CarListBean bean = new CarListBean();
 
        getcon();
 
        try {
            String sql = "select * from rentcar where no=?";
            pstmt = con.prepareStatement(sql);
            // sql문에 ?표가 들어가 있으면 초기 인덱스 값을 할당해주어야 한다.
            pstmt.setInt(1, no);
            rs = pstmt.executeQuery();
 
            if (rs.next()) {
                bean.setNo(rs.getInt(1));
                bean.setName(rs.getString(2));
                bean.setCategory(rs.getInt(3));
                bean.setPrice(rs.getInt(4));
                bean.setUsepeople(rs.getInt(5));
                bean.setCompany(rs.getString(6));
                bean.setImg(rs.getString(7));
                bean.setInfo(rs.getString(8));
 
            }
 
            con.close();
 
        } catch (Exception e) {
            e.printStackTrace();
        }
        return bean;
 
    }
 
    // 회원 정보가 있는지를 비교한다.
    public int getMember(String id, String pass) {
        int result = 0// 0이면 회원이 없다고 가정
        getcon();
 
        try {
            String sql = "select count(*) from member where id=? and pass1=?";
            pstmt = con.prepareStatement(sql);
            // sql문에 ?표가 들어가 있으면 초기 인덱스 값을 할당해주어야 한다.
 
            pstmt.setString(1, id);
            pstmt.setString(2, pass);
 
            rs = pstmt.executeQuery();
 
            if (rs.next()) {
                result = rs.getInt(1); // 0또는 1이 저장된다. 0이면 회원이 없는거고, 1이면 있는것
            }
 
            con.close();
 
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;
 
    }
 
    // 하나의 예약 정보를 저장하는 메소드
    public void setReserveCar(CarReserveBean bean) {
        getcon();
 
        try {
            // 정보를 삽입해야하므로 INSERT를 사용하고 증가하는 값이므로 NO값은 시퀀스를 사용
            String sql = "insert into carreserve values (reserve_seq.NEXTVAL,?,?,?,?,?,?,?,?,?)";
            pstmt = con.prepareStatement(sql);
 
            // ? 에 값을 대입한다.
            pstmt.setInt(1, bean.getNo());
            pstmt.setString(2, bean.getId());
            pstmt.setInt(3, bean.getQty());
            pstmt.setInt(4, bean.getDday());
            pstmt.setString(5, bean.getRday());
            pstmt.setInt(6, bean.getUsein());
            pstmt.setInt(7, bean.getUsewifi());
            pstmt.setInt(8, bean.getUseseat());
            pstmt.setInt(9, bean.getUsenavi());
 
            // 값을 저장만하고 반환하는게 아니기 때문에 result는 사용하지 않는다.
            pstmt.executeUpdate();
 
            con.close();
 
        } catch (Exception e) {
            e.printStackTrace();
        }
 
    }
 
    // 회원의 예약정보를 리턴하는 메소드
    public Vector<CarViewBean> getAllReserve(String id)
 
    {
        // 벡터에 값을 담아서 리턴해야하므로 객체 생성
        Vector<CarViewBean> v = new Vector<>();
        CarViewBean bean = null;
 
        getcon();
 
        try {
 
            // 쿼리문 작성
            // 두테이블을 조인해서 검색하는 조인문이다.
            // 렌트카 테이블과 차량예약 테이블을 조인해서 날짜에 맞는 아이디를 검색하는 sql문
            String sql = "select * from rentcar natural join carreserve "
                    + "where sysdate < to_date(rday, 'YYYY-MM-DD') and id = ?";
            pstmt = con.prepareStatement(sql);
            // ?안에 값을 집어넣는다.
            pstmt.setString(1, id);
            // 결과 리턴, Query는 리턴을 받는다.
            rs = pstmt.executeQuery();
 
            // 한사람이 여러개의 예약을 할수있기 때문에 while문을 돌린다.
            while (rs.next()) {
                bean = new CarViewBean();
                // 꼭 첫번째값은 no(넘버) 값이기 때문에 2번째부터 출력한다.
                bean.setName(rs.getString(2));
                bean.setPrice(rs.getInt(4));
                bean.setImg(rs.getString(7));
                bean.setQty(rs.getInt(11));
                bean.setDday(rs.getInt(12));
                bean.setRday(rs.getString(13));
                bean.setUsein(rs.getInt(14));
                bean.setUsewifi(rs.getInt(15));
                bean.setUseseat(rs.getInt(16));
                bean.setUsenavi(rs.getInt(17));
                // 빈클래스를 벡터에 저장
                v.add(bean);
            }
 
            con.close();
 
        } catch (Exception e) {
            e.printStackTrace();
        }
 
        return v;
    }
 
    // 하나의 예약 삭제
    public void carRemoveReserve(String id, String rday)
 
    {
        getcon();
 
        try {
            String sql = "delete from carreserve where id=? and rday=?";
            pstmt = con.prepareStatement(sql);
            // ?에 값을 넣기
 
            pstmt.setString(1, id);
            pstmt.setString(2, rday);
            System.out.println("dddddddddddddddd");
            System.out.println(id);
            System.out.println(rday);
            pstmt.executeUpdate();
 
            con.close();
 
        } catch (Exception e) {
            e.printStackTrace();
        }
 
    }
 
}
 
cs




:

19.05.20 jsp 쇼핑몰 차량 구매하기 예약 및 결과 (동영상 69강~70강)

Back-End/JSP 2019. 5. 20. 18:00

쇼핑몰 차량 예약 확인




DB테이블 시퀀스 설정 (값이 계속해서 올라가야 하기 때문)



SQL 파일

New 1.sql




CarReserveView.jsp (차량 예약 확인 페이지)

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
80
81
82
83
84
85
<%@page import="db.CarViewBean"%>
<%@page import="db.CarReserveBean"%>
<%@page import="java.util.Vector"%>
<%@page import="db.RentcarDAO"%>
<%@ 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>
 
    <!-- 차량예약할시에 보여지는 페이지 -->
    <%
        String id = (String) session.getAttribute("id");
        //얻어온 아이디가 null일 시에 (즉 비로그인 상태일때 실행하는 구문)
        if (id == null) {
    %>
    <script>
        //로그인 페이지를 보여준다.
        alert("로그인");
        location.href = 'RentcarMain.jsp?center=MemberLogin.jsp';
    </script>
 
    <%
        }
        //로그인 되어있는 아이디를 읽어옴
        RentcarDAO rdao = new RentcarDAO();
        //몇개의 아이디를 받아올지 확실하지 않기때문에 벡터를 사용한다.
        Vector<CarViewBean> v = rdao.getAllReserve(id);
    %>
    <center>
        <table width="1000" border="1">
            <tr height="100">
                <td align="center" colspan="11"><font size="6" color="gray">
                        차량 예약 화면 </font></td>
            </tr>
            <tr height="40">
                <td width="150" align="center">이미지</td>
                <td width="150" align="center">이름</td>
                <td width="150" align="center">대여일</td>
                <td width="60" align="center">대여기간</td>
                <td width="100" align="center">금액</td>
                <td width="60" align="center">수량</td>
                <td width="60" align="center">보험</td>
                <td width="60" align="center">wifi</td>
                <td width="60" align="center">베이비시트</td>
                <td width="60" align="center">네비게이션</td>
                <td width="90" align="center">삭제</td>
            </tr>
            <%
                //벡터로 얻은 값들을 출력해서 bean에 저장함
                for (int i = 0; i < v.size(); i++)
 
                {
                    CarViewBean bean = v.get(i);
            %>
            <!-- 빈이 가지고있는 값들을 하나씩 출력 한다. -->
            <tr height="40" bordercolor="blue">
                <td width="150" align="center"><img alt=""
                    src="img/<%=bean.getImg()%>" width="120" height="70"></td>
                <td width="150" align="center"><%=bean.getName()%></td>
                <td width="150" align="center"><%=bean.getRday()%></td>
                <td width="60" align="center"><%=bean.getDday()%></td>
                <td width="100" align="center"><%=bean.getPrice()%> 원</td>
                <td width="60" align="center"><%=bean.getQty()%></td>
                <td width="60" align="center"><%=bean.getUsein()%></td>
                <td width="60" align="center"><%=bean.getUsewifi()%></td>
                <td width="60" align="center"><%=bean.getUseseat()%></td>
                <td width="60" align="center"><%=bean.getUsenavi()%></td>
                <!-- 삭제 페이지로 이동함 -->
                <td width="90" align="center">
                    <button onclick="location.href='CarReserveDel.jsp'">삭제</button>
                </td>
            </tr>
            <%
                }
            %>
 
        </table>
    </center>
</body>
</html>
cs



CarReserveResult.jsp (차량 예약 결과)

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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
<%@page import="db.CarListBean"%>
<%@page import="db.RentcarDAO"%>
<%@page import="java.text.SimpleDateFormat"%>
<%@page import="java.util.Date"%>
<%@ 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");
    %>
    <!-- 한번에 빈클래스에 있는 값들을 받아야되서 useBean 사용 -->
    <jsp:useBean id="rbean" class="db.CarReserveBean">
        <jsp:setProperty name="rbean" property="*" />
    </jsp:useBean>
 
    <%
        //로그인한 아이디가 페이지가 변경되어도 유지가 되어야하기 때문에 세션으로 받는다.
        //받는 아이디는 오브젝트 타입이기 때문에 String 타입으로 타입변환을 시켜준다.
        String id = (String) session.getAttribute("id");
 
        //null값과 비교할시에는 GUEST값이 나와버리므로 
        //null 대신에 GUEST와 비교한다.
        //비교한후에 참이면 (로그인이 안되었으면) 로그인페이지로 이동하게함
        if (id == null) {
    %>
 
    <script>
        //예약할시에 로그인이 안되어있을경우 출력되는 메시지
        alert("로그인후 예약이 가능합니다.");
        //로그인이 안되어있을경우 로그인 페이지로 이동
        location.href = 'RentcarMain.jsp?center=MemberLogin.jsp';
    </script>
 
    <%
        }
        //날짜 비교 (현재 날짜보다 앞에 날짜는 선택 못하게 하기.. )
        Date d1 = new Date();
        Date d2 = new Date();
        //날짜를 2016-4-4 로 포맷해주는 클래스 선언, month은 대문자 M을 사용
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
 
        //d1은 yyyy-MM-dd 형식으로 변경된다.
        d1 = sdf.parse(rbean.getRday());
        //d2는 yyyy-MM-dd 형식으로 변경된다.
        d2 = sdf.parse(sdf.format(d2));
 
        //날짜 비교 메소드를 사용가능 date 클래스 사용
 
        int compare = d1.compareTo(d2);
        //예약하려는 날짜보다 현재 날짜가 크다면 -1을 반환
        //예약하려는 날짜와 현재 날짜가 같다면 0을 반환
        //예약하려는 날짜가 더 크다면 1을 리턴함
 
        if (compare < 0) {
            //오늘보다 이전 날짜 선택시 예약이 안되게끔 해야함
    %>
 
    <script>
        alert("현재 시스템 날짜보다 이전 날짜는 선택할 수 없음");
        history.go(-1);//이전 단계로 이동하시오.
    </script>
 
    <%
        }
 
        //결과적으로 아무런 문제가 없다면 데이터 저장후 결과 페이지로 이동하기
        //아이디값이 빈 클래스에 없고, 세션에 저장시켰기 때문
        //id는 null값이 들어갈수 있으므로 변수이름을 id1 으로 한다.
        String id1 = (String) session.getAttribute("id");
        rbean.setId(id1);
 
        //데이터베이스에 빈클래스를 저장함
        RentcarDAO rdao = new RentcarDAO();
        rdao.setReserveCar(rbean);
 
        //차량정보 얻어오기 CarReserveBean에는 차량 사진이 저장되어 있지 않기때문에 다른곳에서 얻어와야 한다.
        CarListBean cbean = rdao.getOneCar(rbean.getNo());
 
        //차량 총 금액, 금액 * 차량 대수 * 빌리는 날짜
        int totalcar = cbean.getPrice() * rbean.getQty() * rbean.getDday();
        //옵션 금액
        int usein = 0;
        if (rbean.getUsein() == 1)
            usein = 10000;
 
        int usewifi = 0;
        if (rbean.getUsewifi() == 1)
            usewifi = 10000;
 
        int useseat = 0;
        if (rbean.getUseseat() == 1)
            useseat = 10000;
 
        //옵션의 총금액 (보험 등등등)
        int totaloption = (rbean.getQty() * rbean.getDday()) * (usein + usewifi + useseat);
    %>
    <center>
        <table width="1000">
            <tr height="100">
                <td align="center"><font size="6" color="gray"> 차량 예약 완료
                        화면 </font></td>
            </tr>
 
            <tr>
                <td align="center"><img alt="" src="img<%=cbean.getImg()%>"
                    width="470"></td>
            </tr>
 
            <tr height="50">
                <td align="center"><font size="5" color="red"> 차량 총예약 금액
                        <%=totalcar%>
                </font></td>
            </tr>
 
            <tr height="50">
                <td align="center"><font size="5" color="red"> 차량 총옵션 금액
                        <%=totaloption%>
                </font></td>
            </tr>
 
            <tr height="50">
                <td align="center"><font size="5" color="red"> 차량 총 금액 <%=totaloption + totalcar%>
                </font></td>
            </tr>
 
        </table>
    </center>
</body>
</html>
cs



CarViewBean.java (두 테이블을 조인한 값을 저장하는 빈 클래스)

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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
package db;
 
public class CarViewBean {// 두 테이블을 조인한 값을 저장하는 빈 클래스
 
    private String name;
    private int price;
    private String img;
    private int qty;
    private int dday;
    private String rday;
    private int usein;
    private int usewifi;
    private int useseat;
    private int usenavi;
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public int getPrice() {
        return price;
    }
 
    public void setPrice(int price) {
        this.price = price;
    }
 
    public String getImg() {
        return img;
    }
 
    public void setImg(String img) {
        this.img = img;
    }
 
    public int getQty() {
        return qty;
    }
 
    public void setQty(int qty) {
        this.qty = qty;
    }
 
    public int getDday() {
        return dday;
    }
 
    public void setDday(int dday) {
        this.dday = dday;
    }
 
    public String getRday() {
        return rday;
    }
 
    public void setRday(String rday) {
        this.rday = rday;
    }
 
    public int getUsein() {
        return usein;
    }
 
    public void setUsein(int usein) {
        this.usein = usein;
    }
 
    public int getUsewifi() {
        return usewifi;
    }
 
    public void setUsewifi(int usewifi) {
        this.usewifi = usewifi;
    }
 
    public int getUseseat() {
        return useseat;
    }
 
    public void setUseseat(int useseat) {
        this.useseat = useseat;
    }
 
    public int getUsenavi() {
        return usenavi;
    }
 
    public void setUsenavi(int usenavi) {
        this.usenavi = usenavi;
    }
 
}
 
cs



CarReserveBean.java (차량 예약 빈 클래스)

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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
package db;
 
public class CarReserveBean {
 
    private int reserveno;
    private String id;
    private int no;
    private int qty;
    private int dday; // 대여기간
    private String rday; // 대여일은 date타입으로 받았지만 넘겨줄때 String타입으로 변하므로 String타입으로 해야함
    private int usein;
    private int usewifi;
    private int useseat;
    private int usenavi;
 
    public int getReserveno() {
        return reserveno;
    }
 
    public void setReserveno(int reserveno) {
        this.reserveno = reserveno;
    }
 
    public String getId() {
        return id;
    }
 
    public void setId(String id) {
        this.id = id;
    }
 
    public int getNo() {
        return no;
    }
 
    public void setNo(int no) {
        this.no = no;
    }
 
    public int getQty() {
        return qty;
    }
 
    public void setQty(int qty) {
        this.qty = qty;
    }
 
    public int getDday() {
        return dday;
    }
 
    public void setDday(int dday) {
        this.dday = dday;
    }
 
    public String getRday() {
        return rday;
    }
 
    public void setRday(String rday) {
        this.rday = rday;
    }
 
    public int getUsein() {
        return usein;
    }
 
    public void setUsein(int usein) {
        this.usein = usein;
    }
 
    public int getUsewifi() {
        return usewifi;
    }
 
    public void setUsewifi(int usewifi) {
        this.usewifi = usewifi;
    }
 
    public int getUseseat() {
        return useseat;
    }
 
    public void setUseseat(int useseat) {
        this.useseat = useseat;
    }
 
    public int getUsenavi() {
        return usenavi;
    }
 
    public void setUsenavi(int usenavi) {
        this.usenavi = usenavi;
    }
 
}
 
cs



RentcarDAO.java (DB 연결)

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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
package db;
 
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Vector;
 
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
 
public class RentcarDAO {
 
    Connection con;
    PreparedStatement pstmt;
    ResultSet rs;
 
    // 커넥션풀을 이용한 데이터베이스 연결
 
    public void getcon() {
 
        // DB에 접속할때는 예외처리를 실시해야됨
        try {
 
            Context initctx = new InitialContext(); // 외부서버로 부터 데이터를 읽어들이는것이기 때문에 드라이버가 없을수 있어
            Context envctx = (Context) initctx.lookup("java:comp/env"); // 자바를 읽어들일수 있는 환경에서 사용 //예외처리를 해준다.
            DataSource ds = (DataSource) envctx.lookup("jdbc/pool");
            con = ds.getConnection();
            // 데이터소스에 username, url, password를 집어넣는다. 그렇게 하면 데이터소스가 커넥션을 얻어 온다.
            // jdbc/pool에 있는 데이터소스를 사용할수 있다.
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
 
        }
    }
 
    // 최신순 3대의 자동차를 리턴하는 메소드
    public Vector<CarListBean> getSelectCar() {
        // 리턴타입을 설정
        Vector<CarListBean> v = new Vector<>();
        getcon(); // 커넥션이 연결되어야 쿼리를 실행 가능
 
        try {
 
            String sql = "select * from rentcar order by no desc ";
            pstmt = con.prepareStatement(sql);
            // 쿼리 실행후 실행결과 Result리턴함
            rs = pstmt.executeQuery();
            int count = 0;
            while (rs.next())// 결과값이 끝날때까지만 실행
            {
                CarListBean bean = new CarListBean();
                bean.setNo(rs.getInt(1));
                bean.setName(rs.getString(2));
                bean.setCategory(rs.getInt(3));
                bean.setPrice(rs.getInt(4));
                bean.setUsepeople(rs.getInt(5));
                bean.setCompany(rs.getString(6));
                bean.setImg(rs.getString(7));
                bean.setInfo(rs.getString(8));
                // 벡터에 빈 클래스를 저장
                v.add(bean);
                count++;
                // 3개만 저장이 되야하기 때문..
                if (count > 3)
                    break// 반복문을 빠져나가시오.
 
            }
            con.close();
        } catch (Exception e) {// 내림차순으로 검색하는 쿼리문 작성
            e.printStackTrace();
        }
        return v;
 
    }
 
    // 카테고리별 자동차 리스트를 저장하는 메소드
    // 벡터로 받았으니 벡터로 리턴함..
    public Vector<CarListBean> getCategoryCar(int cate)
 
    {
        // 리턴타입이 벡터 객체이기 때문에 벡터 객체를 생성한다.
        Vector<CarListBean> v = new Vector<>();
 
        // 데이터를 저장할 빈 클래스 선언
        CarListBean bean = null;
 
        getcon();
 
        try {
            String sql = "select * from rentcar where category=?";
            pstmt = con.prepareStatement(sql);
 
            // ?에 값을 넣는다.
            pstmt.setInt(1, cate);
            // 결과를 리턴
            rs = pstmt.executeQuery();
            // 반복문을 돌려서 데이터를 저장
 
            while (rs.next()) { // 데이터를 저장할 빈 클래스 생성
                bean = new CarListBean();
                bean.setNo(rs.getInt(1));
                bean.setName(rs.getString(2));
                bean.setCategory(rs.getInt(3));
                bean.setPrice(rs.getInt(4));
                bean.setUsepeople(rs.getInt(5));
                bean.setCompany(rs.getString(6));
                bean.setImg(rs.getString(7));
                bean.setInfo(rs.getString(8));
                // 벡터에 빈 클래스를 저장
                v.add(bean);
 
            }
 
            con.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
 
        return v;
 
    }
 
    // 모든 차량을 검색하는 메소드
    public Vector<CarListBean> getAllCar() {
 
        Vector<CarListBean> v = new Vector<>();
        // 데이터를 저장할 빈클래스 선언
        CarListBean bean = null;
 
        getcon();
 
        try {
            String sql = "select * from rentcar";
            pstmt = con.prepareStatement(sql);
            rs = pstmt.executeQuery();
            // 반복문을 돌리면서 데이터를 저장함
 
            while (rs.next()) {// 데이터를 저장할 빈클래스 생성
                bean = new CarListBean();
                bean.setNo(rs.getInt(1));
                bean.setName(rs.getString(2));
                bean.setCategory(rs.getInt(3));
                bean.setPrice(rs.getInt(4));
                bean.setUsepeople(rs.getInt(5));
                bean.setCompany(rs.getString(6));
                bean.setImg(rs.getString(7));
                bean.setInfo(rs.getString(8));
                // 벡터에 빈 클래스를 저장
                v.add(bean);
 
            }
 
            con.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return v;
 
    }
 
    // 하나의 자동차 정보를 리턴하는 메소드
    public CarListBean getOneCar(int no) {
 
        // 리턴타입을 선언한다. 객체를 생성해서 그 객체에 값을 넣은후 리턴해야하기 때문
        CarListBean bean = new CarListBean();
 
        getcon();
 
        try {
            String sql = "select * from rentcar where no=?";
            pstmt = con.prepareStatement(sql);
            // sql문에 ?표가 들어가 있으면 초기 인덱스 값을 할당해주어야 한다.
            pstmt.setInt(1, no);
            rs = pstmt.executeQuery();
 
            if (rs.next()) {
                bean.setNo(rs.getInt(1));
                bean.setName(rs.getString(2));
                bean.setCategory(rs.getInt(3));
                bean.setPrice(rs.getInt(4));
                bean.setUsepeople(rs.getInt(5));
                bean.setCompany(rs.getString(6));
                bean.setImg(rs.getString(7));
                bean.setInfo(rs.getString(8));
 
            }
 
            con.close();
 
        } catch (Exception e) {
            e.printStackTrace();
        }
        return bean;
 
    }
 
    // 회원 정보가 있는지를 비교한다.
    public int getMember(String id, String pass) {
        int result = 0// 0이면 회원이 없다고 가정
        getcon();
 
        try {
            String sql = "select count(*) from member where id=? and pass1=?";
            pstmt = con.prepareStatement(sql);
            // sql문에 ?표가 들어가 있으면 초기 인덱스 값을 할당해주어야 한다.
 
            pstmt.setString(1, id);
            pstmt.setString(2, pass);
 
            rs = pstmt.executeQuery();
 
            if (rs.next()) {
                result = rs.getInt(1); // 0또는 1이 저장된다. 0이면 회원이 없는거고, 1이면 있는것
            }
 
            con.close();
 
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;
 
    }
 
    // 하나의 예약 정보를 저장하는 메소드
    public void setReserveCar(CarReserveBean bean) {
        getcon();
 
        try {
            // 정보를 삽입해야하므로 INSERT를 사용하고 증가하는 값이므로 NO값은 시퀀스를 사용
            String sql = "insert into carreserve values (reserve_seq.NEXTVAL,?,?,?,?,?,?,?,?,?)";
            pstmt = con.prepareStatement(sql);
 
            // ? 에 값을 대입한다.
            pstmt.setInt(1, bean.getNo());
            pstmt.setString(2, bean.getId());
            pstmt.setInt(3, bean.getQty());
            pstmt.setInt(4, bean.getDday());
            pstmt.setString(5, bean.getRday());
            pstmt.setInt(6, bean.getUsein());
            pstmt.setInt(7, bean.getUsewifi());
            pstmt.setInt(8, bean.getUseseat());
            pstmt.setInt(9, bean.getUsenavi());
 
            // 값을 저장만하고 반환하는게 아니기 때문에 result는 사용하지 않는다.
            pstmt.executeUpdate();
 
            con.close();
 
        } catch (Exception e) {
            e.printStackTrace();
        }
 
    }
 
    // 회원의 예약정보를 리턴하는 메소드
    public Vector<CarViewBean> getAllReserve(String id)
 
    {
        // 벡터에 값을 담아서 리턴해야하므로 객체 생성
        Vector<CarViewBean> v = new Vector<>();
        CarViewBean bean = null;
 
        getcon();
 
        try {
 
            // 쿼리문 작성
            // 두테이블을 조인해서 검색하는 조인문이다.
            // 렌트카 테이블과 차량예약 테이블을 조인해서 날짜에 맞는 아이디를 검색하는 sql문
            String sql = "select * from rentcar natural join carreserve "
                    + "where sysdate < to_date(rday, 'YYYY-MM-DD') and id = ?";
            pstmt = con.prepareStatement(sql);
            // ?안에 값을 집어넣는다.
            pstmt.setString(1, id);
            // 결과 리턴, Query는 리턴을 받는다.
            rs = pstmt.executeQuery();
 
            // 한사람이 여러개의 예약을 할수있기 때문에 while문을 돌린다.
            while (rs.next()) {
                bean = new CarViewBean();
                // 꼭 첫번째값은 no(넘버) 값이기 때문에 2번째부터 출력한다.
                bean.setName(rs.getString(2));
                bean.setPrice(rs.getInt(4));
                bean.setImg(rs.getString(7));
                bean.setQty(rs.getInt(11));
                bean.setDday(rs.getInt(12));
                bean.setRday(rs.getString(13));
                bean.setUsein(rs.getInt(14));
                bean.setUsewifi(rs.getInt(15));
                bean.setUseseat(rs.getInt(16));
                bean.setUsenavi(rs.getInt(17));
                // 빈클래스를 벡터에 저장
                v.add(bean);
            }
 
            con.close();
 
        } catch (Exception e) {
            e.printStackTrace();
        }
 
        return v;
    }
 
}
 
cs



:

19.05.20 jsp 쇼핑몰 차량 구매하기 예약 및 결과 (동영상 68강)

Back-End/JSP 2019. 5. 20. 15:34

쇼핑몰 차량 구매하기 예약 및 결과



CarReserveResult.jsp (차량 예약 결과)

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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
<%@page import="db.CarListBean"%>
<%@page import="db.RentcarDAO"%>
<%@page import="java.text.SimpleDateFormat"%>
<%@page import="java.util.Date"%>
<%@ 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");
    %>
    <!-- 한번에 빈클래스에 있는 값들을 받아야되서 useBean 사용 -->
    <jsp:useBean id="rbean" class="db.CarReserveBean">
        <jsp:setProperty name="rbean" property="*" />
    </jsp:useBean>
 
    <%
        //로그인한 아이디가 페이지가 변경되어도 유지가 되어야하기 때문에 세션으로 받는다.
        //받는 아이디는 오브젝트 타입이기 때문에 String 타입으로 타입변환을 시켜준다.
        String id = (String) session.getAttribute("id");
 
        //null값과 비교할시에는 GUEST값이 나와버리므로 
        //null 대신에 GUEST와 비교한다.
        //비교한후에 참이면 (로그인이 안되었으면) 로그인페이지로 이동하게함
        if (id == null) {
    %>
 
    <script>
        //예약할시에 로그인이 안되어있을경우 출력되는 메시지
        alert("로그인후 예약이 가능합니다.");
        //로그인이 안되어있을경우 로그인 페이지로 이동
        location.href = 'RentcarMain.jsp?center=MemberLogin.jsp';
    </script>
 
    <%
        }
        //날짜 비교 (현재 날짜보다 앞에 날짜는 선택 못하게 하기.. )
        Date d1 = new Date();
        Date d2 = new Date();
        //날짜를 2016-4-4 로 포맷해주는 클래스 선언, month은 대문자 M을 사용
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
 
        //d1은 yyyy-MM-dd 형식으로 변경된다.
        d1 = sdf.parse(rbean.getRday());
        //d2는 yyyy-MM-dd 형식으로 변경된다.
        d2 = sdf.parse(sdf.format(d2));
 
        //날짜 비교 메소드를 사용가능 date 클래스 사용
 
        int compare = d1.compareTo(d2);
        //예약하려는 날짜보다 현재 날짜가 크다면 -1을 반환
        //예약하려는 날짜와 현재 날짜가 같다면 0을 반환
        //예약하려는 날짜가 더 크다면 1을 리턴함
 
        if (compare < 0) {
            //오늘보다 이전 날짜 선택시 예약이 안되게끔 해야함
    %>
 
    <script>
        alert("현재 시스템 날짜보다 이전 날짜는 선택할 수 없음");
        history.go(-1);//이전 단계로 이동하시오.
    </script>
 
    <%
        }
 
        //결과적으로 아무런 문제가 없다면 데이터 저장후 결과 페이지로 이동하기
        //아이디값이 빈 클래스에 없고, 세션에 저장시켰기 때문
        //id는 null값이 들어갈수 있으므로 변수이름을 id1 으로 한다.
        String id1 = (String) session.getAttribute("id");
        rbean.setId(id1);
 
        //데이터베이스에 빈클래스를 저장함
        RentcarDAO rdao = new RentcarDAO();
        rdao.setReserveCar(rbean);
 
        //차량정보 얻어오기 CarReserveBean에는 차량 사진이 저장되어 있지 않기때문에 다른곳에서 얻어와야 한다.
        CarListBean cbean = rdao.getOneCar(rbean.getNo());
 
        //차량 총 금액, 금액 * 차량 대수 * 빌리는 날짜
        int totalcar = cbean.getPrice() * rbean.getQty() * rbean.getDday();
        //옵션 금액
        int usein = 0;
        if (rbean.getUsein() == 1)
            usein = 10000;
 
        int usewifi = 0;
        if (rbean.getUsewifi() == 1)
            usewifi = 10000;
 
        int useseat = 0;
        if (rbean.getUseseat() == 1)
            useseat = 10000;
 
        //옵션의 총금액 (보험 등등등)
        int totaloption = (rbean.getQty() * rbean.getDday()) * (usein + usewifi + useseat);
    %>
    <center>
        <table width="1000">
            <tr height="100">
                <td align="center"><font size="6" color="gray"> 차량 예약 완료
                        화면 </font></td>
            </tr>
 
            <tr>
                <td align="center"><img alt="" src="img<%=cbean.getImg()%>"
                    width="470"></td>
            </tr>
 
            <tr height="50">
                <td align="center"><font size="5" color="red"> 차량 총예약 금액
                        <%=totalcar%>
                </font></td>
            </tr>
 
            <tr height="50">
                <td align="center"><font size="5" color="red"> 차량 총옵션 금액
                        <%=totaloption%>
                </font></td>
            </tr>
 
            <tr height="50">
                <td align="center"><font size="5" color="red"> 차량 총 금액 <%=totaloption + totalcar%>
                </font></td>
            </tr>
 
        </table>
    </center>
</body>
</html>
cs



CarReserveBean.java (차 예약 빈 클래스)

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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
package db;
 
public class CarReserveBean {
 
    private int reserveno;
    private String id;
    private int no;
    private int qty;
    private int dday; // 대여기간
    private String rday; // 대여일은 date타입으로 받았지만 넘겨줄때 String타입으로 변하므로 String타입으로 해야함
    private int usein;
    private int usewifi;
    private int useseat;
    private int usenavi;
 
    public int getReserveno() {
        return reserveno;
    }
 
    public void setReserveno(int reserveno) {
        this.reserveno = reserveno;
    }
 
    public String getId() {
        return id;
    }
 
    public void setId(String id) {
        this.id = id;
    }
 
    public int getNo() {
        return no;
    }
 
    public void setNo(int no) {
        this.no = no;
    }
 
    public int getQty() {
        return qty;
    }
 
    public void setQty(int qty) {
        this.qty = qty;
    }
 
    public int getDday() {
        return dday;
    }
 
    public void setDday(int dday) {
        this.dday = dday;
    }
 
    public String getRday() {
        return rday;
    }
 
    public void setRday(String rday) {
        this.rday = rday;
    }
 
    public int getUsein() {
        return usein;
    }
 
    public void setUsein(int usein) {
        this.usein = usein;
    }
 
    public int getUsewifi() {
        return usewifi;
    }
 
    public void setUsewifi(int usewifi) {
        this.usewifi = usewifi;
    }
 
    public int getUseseat() {
        return useseat;
    }
 
    public void setUseseat(int useseat) {
        this.useseat = useseat;
    }
 
    public int getUsenavi() {
        return usenavi;
    }
 
    public void setUsenavi(int usenavi) {
        this.usenavi = usenavi;
    }
 
}
 
cs





:

19.05.19 jsp 쇼핑몰 차량 날짜 처리 (동영상 67강)

Back-End/JSP 2019. 5. 19. 22:19

차량 구매할때 날짜 처리 (현재 날짜보다 지난 날짜는 선택 못하게 하기)

 

 

DB테이블 파일

New 1.sql

 

 

데이터베이스 테이블 생성 (차량 옵션 값이 저장되는 테이블)

 

 

CarReserveBean.java (차량 옵션 선택 빈 클래스)

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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
package db;
 
public class CarReserveBean {
 
    private int reserveno;
    private String id;
    private int no;
    private int qty;
    private int dday; // 대여기간
    private String rday; // 대여일은 date타입으로 받았지만 넘겨줄때 String타입으로 변하므로 String타입으로 해야함
    private int usein;
    private int usewifi;
    private int useseat;
    private int usenavi;
 
    public int getReserveno() {
        return reserveno;
    }
 
    public void setReserveno(int reserveno) {
        this.reserveno = reserveno;
    }
 
    public String getId() {
        return id;
    }
 
    public void setId(String id) {
        this.id = id;
    }
 
    public int getNo() {
        return no;
    }
 
    public void setNo(int no) {
        this.no = no;
    }
 
    public int getQty() {
        return qty;
    }
 
    public void setQty(int qty) {
        this.qty = qty;
    }
 
    public int getDday() {
        return dday;
    }
 
    public void setDday(int dday) {
        this.dday = dday;
    }
 
    public String getRday() {
        return rday;
    }
 
    public void setRday(String rday) {
        this.rday = rday;
    }
 
    public int getUsein() {
        return usein;
    }
 
    public void setUsein(int usein) {
        this.usein = usein;
    }
 
    public int getUsewifi() {
        return usewifi;
    }
 
    public void setUsewifi(int usewifi) {
        this.usewifi = usewifi;
    }
 
    public int getUseseat() {
        return useseat;
    }
 
    public void setUseseat(int useseat) {
        this.useseat = useseat;
    }
 
    public int getUsenavi() {
        return usenavi;
    }
 
    public void setUsenavi(int usenavi) {
        this.usenavi = usenavi;
    }
 
}
 
cs

 

 

CarReserveResult.jsp (차량 예약 결과)

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
<%@page import="java.text.SimpleDateFormat"%>
<%@page import="java.util.Date"%>
<%@ 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");
    %>
    <!-- 한번에 빈클래스에 있는 값들을 받아야되서 useBean 사용 -->
    <jsp:useBean id="rbean" class="db.CarReserveBean">
        <jsp:setProperty name="rbean" property="*" />
    </jsp:useBean>
 
    <%
        //로그인한 아이디가 페이지가 변경되어도 유지가 되어야하기 때문에 세션으로 받는다.
        //받는 아이디는 오브젝트 타입이기 때문에 String 타입으로 타입변환을 시켜준다.
        String id = (String) session.getAttribute("id");
 
        //null값과 비교할시에는 GUEST값이 나와버리므로 
        //null 대신에 GUEST와 비교한다.
        //비교한후에 참이면 (로그인이 안되었으면) 로그인페이지로 이동하게함
        if (id == null) {
    %>
 
    <script>
        //예약할시에 로그인이 안되어있을경우 출력되는 메시지
        alert("로그인후 예약이 가능합니다.");
        //로그인이 안되어있을경우 로그인 페이지로 이동
        location.href = 'RentcarMain.jsp?center=MemberLogin.jsp';
    </script>
 
    <%
        }
        //날짜 비교 (현재 날짜보다 앞에 날짜는 선택 못하게 하기.. )
        Date d1 = new Date();
        Date d2 = new Date();
        //날짜를 2016-4-4 로 포맷해주는 클래스 선언, month은 대문자 M을 사용
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
 
        //d1은 yyyy-MM-dd 형식으로 변경된다.
        d1 = sdf.parse(rbean.getRday());
        //d2는 yyyy-MM-dd 형식으로 변경된다.
        d2 = sdf.parse(sdf.format(d2));
 
        //날짜 비교 메소드를 사용가능 date 클래스 사용
 
        int compare = d1.compareTo(d2);
        //예약하려는 날짜보다 현재 날짜가 크다면 -1을 반환
        //예약하려는 날짜와 현재 날짜가 같다면 0을 반환
        //예약하려는 날짜가 더 크다면 1을 리턴함
 
        if (compare < 0) {
            //오늘보다 이전 날짜 선택시 예약이 안되게끔 해야함
    %>
 
    <script>
        alert("현재 시스템 날짜보다 이전 날짜는 선택할 수 없음");
        history.go(-1);//이전 단계로 이동하시오.
    </script>
 
    <%
        }
    %>
 
 
</body>
</html>
cs

 

 

 

 

:

19.05.19 jsp 쇼핑몰 로그인 (동영상 66강)

Back-End/JSP 2019. 5. 19. 20:30

쇼핑몰 로그인 페이지 구현

 

 

MemberLogin.jsp (로그인 페이지)

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
<%@ 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>
    <!-- 로그인 페이지 -->
    <!-- 아이디랑 패스워드만 받게할 예정 -->
    <form action="MemberLoginProc.jsp" method="post">
        <table width="300" border="1" bordercolor="gray">
            <tr height="100">
                <td align="center" colspan="2"><font size="6" color="gray">로그인
                </font></td>
            </tr>
            <tr height="40">
                <td width="120" align="center">아이디</td>
                <td width="180"><input type="text" name="id" size="15"></td>
            </tr>
 
            <tr height="40">
                <td width="120" align="center">패스워드</td>
                <td width="180"><input type="password" name="pass" size="15"></td>
            </tr>
 
            <tr height="40">
                <td align="center" colspan="2"><input type="submit" value="로그인"></td>
            </tr>
 
 
 
 
        </table>
    </form>
</body>
</html>
cs

 

 

MemberLoginProc.jsp (로그인 처리 페이지)

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
<%@page import="db.RentcarDAO"%>
<%@ 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>
 
    <% 
    //로그인 처리 페이지, 한글깨짐 방지
 
    String id = request.getParameter("id");
    String pass = request.getParameter("pass");
    //회원 아이디와 패스워드가 일치하는지 비교한다.
    RentcarDAO rdao = new RentcarDAO();
    
    //해당 회원이 있는지 여부를 숫자로 반환받는다.
    int result = rdao.getMember(id,pass);
    
    if(result==0)
    {
%>
 
    <script>//예약할시에 로그인이 안되어있을경우 출력되는 메시지
        alert("회원 아이디 또는 패스워드가 틀립니다.");
    //로그인이 안되어있을경우 로그인 페이지로 이동
        location.href='RentcarMain.jsp?center=MemberLogin.jsp';
    </script>
 
    <%
    }else
    {
        //로그인 처리가 되었다면 세션에 담아야 화면이 넘어갈때 유지된다.
        session.setAttribute("id", id);
        response.sendRedirect("RentcarMain.jsp");
    }
    
    
 
%>
 
 
</body>
</html>
cs

 

 

Top.jsp (상단)

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
<%@ 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>
<body>
 
    <!-- 세션을 이용한 로그인 처리 -->
    <!-- 세션으로 받아온 값은 오브젝트 타입이기 때문에 String 타입으로 컨버팅 한다. -->
 
    <%
        String id = (String) session.getAttribute("id");
 
        //로그인이 되어있지 않다면 id에 "GUEST"값을 준다
        if (id == null) {
            id = "GUEST";
        }
    %>
 
    <table width="1000" bordercolor="white">
        <tr height="70">
            <td colspan="4"><a href="RentcarMain.jsp"
                style="text-decoration: none"> <!-- 이미지를 불러오기위한 태그 작성 --> <img
                    alt="" src="img/RENT.jpg" height="150" width="250">
            </a></td>
            <td align="center" width="200"><%=id%> 님 <%
                if(id.equals("GUEST")){ %>
                <button
                    onclick="location.href='RentcarMain.jsp?center=MemberLogin.jsp'">
                    로그인</button> <%
                }else{%>
                <button onclick="location.href='MemberLogout.jsp'">로그아웃</button> <% 
                }
                
            %></td>
        </tr>
        <!-- 글자를 누르면 화면이 넘어갈수 있도록 a태그를 걸어줌 -->
        <tr height="50">
            <td align="center" width="200" bgcolor="pink"><font
                color="white" size="5"> <a
                    href="RentcarMain.jsp?center=CarReserveMain.jsp"
                    style="text-decoration: none"> 예 약 하 기 </a></font></td>
 
            <td align="center" width="200" bgcolor="pink">
                <!-- 글자를 누르면 화면이 넘어갈수 있도록 a태그를 걸어줌 --> <font color="white" size="5"><a
                    href="#" style="text-decoration: none"> 예 약 확 인</a></font>
            </td>
 
            <td align="center" width="200" bgcolor="pink">
                <!-- 글자를 누르면 화면이 넘어갈수 있도록 a태그를 걸어줌 --> <font color="white" size="5"><a
                    href="#" style="text-decoration: none"> 자 유 게 시 판 </a></font>
            </td>
 
            <td align="center" width="200" bgcolor="pink">
                <!-- 글자를 누르면 화면이 넘어갈수 있도록 a태그를 걸어줌 --> <font color="white" size="5"><a
                    href="#" style="text-decoration: none"> 이 벤 트 </a></font>
            </td>
 
            <td align="center" width="200" bgcolor="pink">
                <!-- 글자를 누르면 화면이 넘어갈수 있도록 a태그를 걸어줌 --> <font color="white" size="5"><a
                    href="#" style="text-decoration: none"> 고 객 센 터 </a></font>
            </td>
        </tr>
 
    </table>
</body>
</html>
 
cs

 

 

RentcarDAO.java (DB연결)

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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
package db;
 
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Vector;
 
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
 
public class RentcarDAO {
 
    Connection con;
    PreparedStatement pstmt;
    ResultSet rs;
 
    // 커넥션풀을 이용한 데이터베이스 연결
 
    public void getcon() {
 
        // DB에 접속할때는 예외처리를 실시해야됨
        try {
 
            Context initctx = new InitialContext(); // 외부서버로 부터 데이터를 읽어들이는것이기 때문에 드라이버가 없을수 있어
            Context envctx = (Context) initctx.lookup("java:comp/env"); // 자바를 읽어들일수 있는 환경에서 사용 //예외처리를 해준다.
            DataSource ds = (DataSource) envctx.lookup("jdbc/pool");
            con = ds.getConnection();
            // 데이터소스에 username, url, password를 집어넣는다. 그렇게 하면 데이터소스가 커넥션을 얻어 온다.
            // jdbc/pool에 있는 데이터소스를 사용할수 있다.
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
 
        }
    }
 
    // 최신순 3대의 자동차를 리턴하는 메소드
    public Vector<CarListBean> getSelectCar() {
        // 리턴타입을 설정
        Vector<CarListBean> v = new Vector<>();
        getcon(); // 커넥션이 연결되어야 쿼리를 실행 가능
 
        try {
 
            String sql = "select * from rentcar order by no desc ";
            pstmt = con.prepareStatement(sql);
            // 쿼리 실행후 실행결과 Result리턴함
            rs = pstmt.executeQuery();
            int count = 0;
            while (rs.next())// 결과값이 끝날때까지만 실행
            {
                CarListBean bean = new CarListBean();
                bean.setNo(rs.getInt(1));
                bean.setName(rs.getString(2));
                bean.setCategory(rs.getInt(3));
                bean.setPrice(rs.getInt(4));
                bean.setUsepeople(rs.getInt(5));
                bean.setCompany(rs.getString(6));
                bean.setImg(rs.getString(7));
                bean.setInfo(rs.getString(8));
                // 벡터에 빈 클래스를 저장
                v.add(bean);
                count++;
                // 3개만 저장이 되야하기 때문..
                if (count > 3)
                    break// 반복문을 빠져나가시오.
 
            }
            con.close();
        } catch (Exception e) {// 내림차순으로 검색하는 쿼리문 작성
            e.printStackTrace();
        }
        return v;
 
    }
 
    // 카테고리별 자동차 리스트를 저장하는 메소드
    // 벡터로 받았으니 벡터로 리턴함..
    public Vector<CarListBean> getCategoryCar(int cate)
 
    {
        // 리턴타입이 벡터 객체이기 때문에 벡터 객체를 생성한다.
        Vector<CarListBean> v = new Vector<>();
 
        // 데이터를 저장할 빈 클래스 선언
        CarListBean bean = null;
 
        getcon();
 
        try {
            String sql = "select * from rentcar where category=?";
            pstmt = con.prepareStatement(sql);
 
            // ?에 값을 넣는다.
            pstmt.setInt(1, cate);
            // 결과를 리턴
            rs = pstmt.executeQuery();
            // 반복문을 돌려서 데이터를 저장
 
            while (rs.next()) { // 데이터를 저장할 빈 클래스 생성
                bean = new CarListBean();
                bean.setNo(rs.getInt(1));
                bean.setName(rs.getString(2));
                bean.setCategory(rs.getInt(3));
                bean.setPrice(rs.getInt(4));
                bean.setUsepeople(rs.getInt(5));
                bean.setCompany(rs.getString(6));
                bean.setImg(rs.getString(7));
                bean.setInfo(rs.getString(8));
                // 벡터에 빈 클래스를 저장
                v.add(bean);
 
            }
 
            con.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
 
        return v;
 
    }
 
    // 모든 차량을 검색하는 메소드
    public Vector<CarListBean> getAllCar() {
 
        Vector<CarListBean> v = new Vector<>();
        // 데이터를 저장할 빈클래스 선언
        CarListBean bean = null;
 
        getcon();
 
        try {
            String sql = "select * from rentcar";
            pstmt = con.prepareStatement(sql);
            rs = pstmt.executeQuery();
            // 반복문을 돌리면서 데이터를 저장함
 
            while (rs.next()) {// 데이터를 저장할 빈클래스 생성
                bean = new CarListBean();
                bean.setNo(rs.getInt(1));
                bean.setName(rs.getString(2));
                bean.setCategory(rs.getInt(3));
                bean.setPrice(rs.getInt(4));
                bean.setUsepeople(rs.getInt(5));
                bean.setCompany(rs.getString(6));
                bean.setImg(rs.getString(7));
                bean.setInfo(rs.getString(8));
                // 벡터에 빈 클래스를 저장
                v.add(bean);
 
            }
 
            con.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return v;
 
    }
 
    // 하나의 자동차 정보를 리턴하는 메소드
    public CarListBean getOneCar(int no) {
 
        // 리턴타입을 선언한다. 객체를 생성해서 그 객체에 값을 넣은후 리턴해야하기 때문
        CarListBean bean = new CarListBean();
 
        getcon();
 
        try {
            String sql = "select * from rentcar where no=?";
            pstmt = con.prepareStatement(sql);
            // sql문에 ?표가 들어가 있으면 초기 인덱스 값을 할당해주어야 한다.
            pstmt.setInt(1, no);
            rs = pstmt.executeQuery();
 
            if (rs.next()) {
                bean.setNo(rs.getInt(1));
                bean.setName(rs.getString(2));
                bean.setCategory(rs.getInt(3));
                bean.setPrice(rs.getInt(4));
                bean.setUsepeople(rs.getInt(5));
                bean.setCompany(rs.getString(6));
                bean.setImg(rs.getString(7));
                bean.setInfo(rs.getString(8));
 
            }
 
            con.close();
 
        } catch (Exception e) {
            e.printStackTrace();
        }
        return bean;
 
    }
 
    // 회원 정보가 있는지를 비교한다.
    public int getMember(String id, String pass) {
        int result = 0// 0이면 회원이 없다고 가정
        getcon();
 
        try { //아이디와 패스워드가 모두 있는 회원의 숫자를 반환하는 sql문
            String sql = "select count(*) from member where id=? and pass1=?";
            pstmt = con.prepareStatement(sql);
            // sql문에 ?표가 들어가 있으면 초기 인덱스 값을 할당해주어야 한다.
 
            pstmt.setString(1, id);
            pstmt.setString(2, pass);
 
            rs = pstmt.executeQuery();
 
            if (rs.next()) {
                result = rs.getInt(1); // 0또는 1이 저장된다. 0이면 회원이 없는거고, 1이면 있는것
            }
 
            con.close();
 
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;
 
    }
 
}
 
cs

 

 

 

:

19.05.19 jsp 쇼핑몰 차량 구매하기 (동영상 64강~65강)

Back-End/JSP 2019. 5. 19. 17:39

쇼핑몰 차량 구매하기 기능 구현

 

 

Top.jsp (상단)

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
<%@ 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>
<body>
 
    <!-- 세션을 이용한 로그인 처리 -->
    <!-- 세션으로 받아온 값은 오브젝트 타입이기 때문에 String 타입으로 컨버팅 한다. -->
 
    <%
        String id = (String) session.getAttribute("id");
 
        //로그인이 되어있지 않다면 id에 "GUEST"값을 준다
        if (id == null) {
            id = "GUEST";
        }
    %>
 
    <table width="1000" bordercolor="white">
        <tr height="70">
            <td colspan="4"><a href="RentcarMain.jsp"
                style="text-decoration: none"> <!-- 이미지를 불러오기위한 태그 작성 --> <img
                    alt="" src="img/RENT.jpg" height="150" width="250">
            </a></td>
            <td align="center" width="200"><%=id%> 님 <%
                if(id.equals("GUEST")){ %>
                <button onclick="RentcarMain.jsp?center=MemberLogin.jsp">
                    로그인</button> <%
                }
            %></td>
        </tr>
        <!-- 글자를 누르면 화면이 넘어갈수 있도록 a태그를 걸어줌 -->
        <tr height="50">
            <td align="center" width="200" bgcolor="pink"><font
                color="white" size="5"> <a
                    href="RentcarMain.jsp?center=CarReserveMain.jsp"
                    style="text-decoration: none"> 예 약 하 기 </a></font></td>
 
            <td align="center" width="200" bgcolor="pink">
                <!-- 글자를 누르면 화면이 넘어갈수 있도록 a태그를 걸어줌 --> <font color="white" size="5"><a
                    href="#" style="text-decoration: none"> 예 약 확 인</a></font>
            </td>
 
            <td align="center" width="200" bgcolor="pink">
                <!-- 글자를 누르면 화면이 넘어갈수 있도록 a태그를 걸어줌 --> <font color="white" size="5"><a
                    href="#" style="text-decoration: none"> 자 유 게 시 판 </a></font>
            </td>
 
            <td align="center" width="200" bgcolor="pink">
                <!-- 글자를 누르면 화면이 넘어갈수 있도록 a태그를 걸어줌 --> <font color="white" size="5"><a
                    href="#" style="text-decoration: none"> 이 벤 트 </a></font>
            </td>
 
            <td align="center" width="200" bgcolor="pink">
                <!-- 글자를 누르면 화면이 넘어갈수 있도록 a태그를 걸어줌 --> <font color="white" size="5"><a
                    href="#" style="text-decoration: none"> 고 객 센 터 </a></font>
            </td>
        </tr>
 
    </table>
</body>
</html>
 
cs

 

 

CarReserveResult.jsp (로그인 판별)

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
<%@ 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");
%>
    <!-- 한번에 빈클래스에 있는 값들을 받아야되서 useBean 사용 -->
    <jsp:useBean id="rbean" class="db.CarReserveBean">
        <jsp:setProperty name="rbean" property="*" />
    </jsp:useBean>
 
    <% 
    //로그인한 아이디가 페이지가 변경되어도 유지가 되어야하기 때문에 세션으로 받는다.
    //받는 아이디는 오브젝트 타입이기 때문에 String 타입으로 타입변환을 시켜준다.
    String id = (String)session.getAttribute("id");
    
 
    //null값과 비교할시에는 GUEST값이 나와버리므로 
    //null 대신에 GUEST와 비교한다.
    //비교한후에 참이면 (로그인이 안되었으면) 로그인페이지로 이동하게함
    if(id==null)
    {
%>
    <script>//예약할시에 로그인이 안되어있을경우 출력되는 메시지
        alert("로그인후 예약이 가능합니다.");
    </script>
    <%
        response.sendRedirect("RentcarMain.jsp?center=MemberLogin.jsp");
    }
 
%>
 
 
</body>
</html>
cs

 

 

CarOptionSelect.jsp (차량 옵션 선택)

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
80
81
82
83
84
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<html>
<body>
    <% 
    int no = Integer.parseInt(request.getParameter("no"));
    
    //차량 수량
    int qty = Integer.parseInt(request.getParameter("qty"));
    //이미지를 가져옴
    String img = request.getParameter("img");
%>
    <div style="text-align: center;">
        <form action="RentcarMain.jsp?center=CarReserveResult.jsp"
            method="post">
            <table width="1000">
                <tr height="100">
                    <td align="center" colspan="3"><font size="6" color="gray">
                            옵션 선택 </font></td>
                </tr>
                <tr>
                    <!-- colspan은 가로셀끼리 병합하는 것이고, rowspan은 세로 셀끼리 병합하는 것 -->
                    <!-- 차량 사진 옆에 정보들이 떠야하기때문에 세로병합인 rowspan을 사용 -->
                    <td rowspan="7" width="500" align="center"><img alt=""
                        src="img/<%=img %>" width="450"></td>
                    <td width="250" align="center">대여기간</td>
                    <td width="250" align="center"><select name="dday">
                            <option value="1">1일</option>
                            <option value="2">2일</option>
                            <option value="3">3일</option>
                            <option value="4">4일</option>
                            <option value="5">5일</option>
                            <option value="6">6일</option>
                            <option value="7">7일</option>
                    </select></td>
                </tr>
                <tr>
                    <td width="250" align="center">대여일</td>
                    <td width="250" align="center"><input type="date" name="rday"
                        size="15"></td>
                <tr>
                    <td width="250" align="center">보험적용</td>
                    <td width="250" align="center"><select name="usein">
                            <option value="1">적용 (1일 1만원)</option>
                            <option value="2">미적용</option>
                    </select></td>
                </tr>
 
                <tr>
                    <td width="250" align="center">wifi 적용</td>
                    <td width="250" align="center"><select name="usewifi">
                            <option value="1">적용 (1일 1만원)</option>
                            <option value="2">미적용</option>
                    </select></td>
                </tr>
 
                <tr>
                    <td width="250" align="center">네비게이션 적용</td>
                    <td width="250" align="center"><select name="usenavi">
                            <option value="1">적용 (무료)</option>
                            <option value="2">미적용</option>
                    </select></td>
                </tr>
 
 
                <tr>
                    <td width="250" align="center">베이비시트 적용</td>
                    <td width="250" align="center"><select name="useseat">
                            <option value="1">적용 (1일 1만원)</option>
                            <option value="2">미적용</option>
                    </select></td>
                </tr>
 
                <tr>
                    <td align="center" colspan="2"><input type="hidden" name="no"
                        value="<%=no %>"> <input type="hidden" name="qty"
                        value="<%=qty %>"> <input type="submit" value="차량예약하기"></td>
                </tr>
 
            </table>
        </form>
    </div>
</body>
</html>
cs

 

 

CarReserveBean.java (차량 옵션 선택 빈 클래스)

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
package db;
 
 
public class CarReserveBean {
    
    private int no;
    private int qty;
    private int dday; //대여기간
    private String rday; //대여일은 date타입으로 받았지만 넘겨줄때 String타입으로 변하므로 String타입으로 해야함
    private int usein;
    private int usewifi;
    private int usenavi;
    private int useseat;
    
    
    public int getNo() {
        return no;
    }
    public void setNo(int no) {
        this.no = no;
    }
    public int getQty() {
        return qty;
    }
    public void setQty(int qty) {
        this.qty = qty;
    }
    public int getDday() {
        return dday;
    }
    public void setDday(int dday) {
        this.dday = dday;
    }
    public String getRday() {
        return rday;
    }
    public void setRday(String rday) {
        this.rday = rday;
    }
    public int getUsein() {
        return usein;
    }
    public void setUsein(int usein) {
        this.usein = usein;
    }
    public int getUsewifi() {
        return usewifi;
    }
    public void setUsewifi(int usewifi) {
        this.usewifi = usewifi;
    }
    public int getUsenavi() {
        return usenavi;
    }
    public void setUsenavi(int usenavi) {
        this.usenavi = usenavi;
    }
    public int getUseseat() {
        return useseat;
    }
    public void setUseseat(int useseat) {
        this.useseat = useseat;
    }
    
    
    
    
    
 
}
 
cs

 

: