기초단계/JSP&Servlet
2023.03.29 JSP
춘핑이
2023. 3. 29. 18:03
JSP 쇼핑몰 만들기
59. 차량 예약하기
예약하기를 누르면 가장 잘 나가는 것을 3가지 임의로 뿌리기
원래대로는 추천수를 받아서 출력하게 햇을 것이다.
최신의 데이터 3개만 가져오자.
밑에는 차량종류 선택 검색 / 전체검색 할 수 있도록하기
검색은 카테고리에 따라 분류하면된다.
예약하기를 누르면 CarReserveMain.jsp이 로드되게 하자.
59.1 최신순 띄우기
성능으로 따지면 sql문으로 선택하고 설계한다면 코드로만 설계할 수도 있다.
public List<CarListBean> getSelectCar() {
List<CarListBean> list = new ArrayList<>();
getCon();
try {
String sql = "SELECT * FROM RENTCAR ORDER BY NO DESC";
pstmt = con.prepareStatement(sql);
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));
list.add(bean);
//3개만 저장
count++;
if (count > 2) {
break;
}
}
} catch (Exception e) {
e.printStackTrace();
}
return list;
}59.2 CarReserveMain.jsp
Top에서 예약하기를 누를때 center의 파라미터로 이 페이지를 주면된다.
<!-- 데이터 베이스에 연결하여 최신순 자동차 3대만 뿌려주는 데이터를 가져옴 -->
<%
RentcarDAO rdao = new RentcarDAO();
//리스트를 이용하여 데이터를 저장
List<CarListBean> list = rdao.getSelectCar();
%>
<div align="center">
<table>
<tr height = "240">
<%
for (int i =0 ; i < list.size(); i++){
CarListBean bean = list.get(i);
%>
<td width="333" align="center">
<a href="CarReserveinfo.jsp?no=<%=bean.getNo()%>">
<img src="img/<%=bean.getImg() %>" width="300" height="200" alt="" />
</a><p>
차량명 : <%= bean.getName() %>
</p>
</td>
<%
}
%>
</tr>
</table>
<hr color="red" size="3"/>
<p>
<font size="4" color="black"> 차량검색하기 </font> <br /><br /><br />
<form action="CarCategoryList.jsp" method="post">
<font size="3" color="black"> <b>차량검색하기</b></font>
<select name="category">
<option value="1">소형</option>
<option value="2">중형</option>
<option value="3">대형</option>
</select>
<input type="submit" value="검색"/>
<button type="button" onclick="location.href='CarAllList.jsp'">전체 검색</button>
</form>
</div>61. 차량 검색하기
지난시간은 예약하기 버튼으로 최신순 3개 만 나왔다.
소형 중형 대형으로 검색하자.
Select하면되는데 카테고리별로만 Select만하면된다.
3개씩 뿌려주며 3개이후 다음으로 가기
3개가 만들어질때마다 tr을 만들어주기
public List<CarListBean> getCategoryCar(int category) {
List<CarListBean> list = new ArrayList<>();
// 데이터를 저장할 빈 클래스 선언
CarListBean bean = null;
getCon();
try {
String sql = "SELECT * FROM RENTCAR WHERE CATEGORY = ? ";
pstmt = con.prepareStatement(sql);
pstmt.setInt(1, category);
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));
list.add(bean);
}
con.close();
} catch (Exception e) {
e.printStackTrace();
}
return list;
}61.2 차량별 list
<div align="center">
<table>
<%
//카테고리 분류값을 받아오기
int category = Integer.parseInt(request.getParameter("category"));
RentcarDAO rdao = new RentcarDAO();
List<CarListBean> list = rdao.getCategoryCar(category);
//tr을 3개씩 보여주고 다시 tr을 실행할 수 있도록 적용하는 변수
int j = 0;
for (int i = 0; i < list.size(); i++){
CarListBean bean = list.get(i);
if (j%3==0){
%>
<tr height="220">
<%
}
%>
<td width="333" align="center">
<a href="RentcarMain.jsp?center=CarReserveInfo.jsp?no=<%= bean.getNo()%>">
<img src="img/<%=bean.getImg() %>" width="300" height="200"/>
</a> <p>
<font size="3" color="black">차량명 : <%= bean.getName() %></font></p>
</td>
<%
j = j + 1; //j값을 증가하여 하나의 행에 총 3개의 차량 정보 보여주기
}
%>
</table>
</div>62. 차량 전체보기
차량 list를 얻는 메소드를 작성하는데 SQL문만 다시 작성해주면 된다.
public List<CarListBean> getAllCar() {
List<CarListBean> list = new ArrayList<>();
// 데이터를 저장할 빈 클래스 선언
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));
list.add(bean);
}
con.close();
} catch (Exception e) {
e.printStackTrace();
}
return list;
}63. 쇼핑몰 - 차량 상세보기
하나의 차량을 상세보기로 만들어주자.
number를 기준으로 보면된다.
63.1 DAO
// 한대의 차량 가져오기
public CarListBean getOneCar(int no) {
CarListBean bean = new CarListBean();
getCon();
try {
String sql = "SELECT * FROM RENTCAR WHERE NO = ?";
pstmt = con.prepareStatement(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;
}63.2 자세한 페이지
누르면 옵션으로 가서 결제하자.
게스트는 구매할 수 없게 해서 로그인 처리를 해야한다.
<%
int no = Integer.parseInt(request.getParameter("no"));
RentcarDAO rdao = new RentcarDAO();
//하나의 정보 얻기
CarListBean bean = rdao.getOneCar(no);
//카테고리 분류값을 받아오기
int category = bean.getCategory();
String temp = "";
if ( category == 1){
temp = "소형";
} else if (category == 2){
temp = "중형";
} else {
temp = "대형";
}
%>
<div align="center">
<form action="RentcarMain.jsp?center=CarOptionSelect.jsp">
<table>
<tr height="100">
<td align="center" colspan="3">
<font size="6" color="gray"><%=bean.getName() %> 차량 선택</font>
</td>
</tr>
<tr>
<td rowspan="6" align="center" width="500">
<img src="img/<%=bean.getImg() %>" width="450" />
<td width="250" align="center"> 차량이름 </td>
<td width="250" align="center"> <%=bean.getName() %> </td>
</td>
</tr>
<tr>
<td width="250" align="center"> 차량수량 </td>
<td width="250" align="center">
<select name="qty">
<option value="1">1</option>
<option value="1">2</option>
<option value="1">3</option>
</select>
</td>
</tr>
<tr>
<td width="250" align="center"> 차량분류 </td>
<td width="250" align="center"> <%=temp %> </td>
</tr>
<tr>
<td width="250" align="center"> 대여가격 </td>
<td width="250" align="center"> <%= bean.getPrice() %>원 </td>
</tr>
<tr>
<td width="250" align="center"> 제조회사 </td>
<td width="250" align="center"> <%= bean.getCompany() %> </td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="hidden" name="no" value="<%= bean.getNo() %>" />
<input type="submit" value="옵션선택 후 구매하기"/>
</td>
</tr>
</table>
<br /><br /><br />
<font size="5" color="gray">차량 정보 보기</font>
<p>
<%= bean.getInfo() %>
</p>
</form>
</div>64. 쇼핑몰 - 차량 구매하기
로그인이 안되있으면 선택을 못하게 하자.
옵션선택 대여기간 대여일 보험적용 무선 wifi네비 베이비시트 예약하기
만약에 날짜가 오늘보다 이전날짜면 선택 못하게 해주기 등 나중에 추가할예정임
<%
int no = Integer.parseInt(request.getParameter("no"));
//차량 수량
int qty = Integer.parseInt(request.getParameter("qty"));
String img = request.getParameter("img");
%>
<div align="center">
<form action="RentcarMain.jsp?center=CarReserveResult.jsp" method="post">
<table>
<tr height="100">
<td align="center" colspan="3">
<font size="6" color="gray">옵션 선택</font>
</td>
</tr>
<tr>
<td rowspan="7" align="center" width="500">
<img src="img/<%=img %>" width="450" />
<td width="250" align="center"> 대여기간 </td>
<td>
<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><input type="date" name="rday" size="15" /></td>
</tr>
<tr>
<td width="250" align="center"> 보험적용 </td>
<td>
<select name="usein">
<option value="1">적용 (1일 1만원) </option>
<option value="2">비적용</option>
</select>
</td>
</tr>
<tr>
<td width="250" align="center"> 와이파이 </td>
<td>
<select name="usewifi">
<option value="1">적용 (1일 1만원)</option>
<option value="2">비적용</option>
</select>
</td>
</tr>
<tr>
<td width="250" align="center"> 네비게이션 적용 </td>
<td>
<select name="usenavi">
<option value="1">적용 (무료)</option>
<option value="2">비적용</option>
</select>
</td>
</tr>
<tr>
<td width="250" align="center"> 베이비시트 적용 </td>
<td>
<select name="useseat">
<option value="1">적용 (1일 1만원)</option>
<option value="2">비적용</option>
</select>
</td>
</tr>
<tr>
<td colspan="2" align="center"> 베이비시트 적용 </td>
<td><input type="submit" value="차량예약하기" /></td>
</tr>
</table>
</form>
</div>