[구디아카데미][IT국비지원]
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.sql.Connection" %>
<%@ page import="java.sql.DriverManager" %>
<%@ page import="java.sql.PreparedStatement" %>
<%@ page import="java.sql.ResultSet" %>
<%
// 현재 페이지
int currentPage = 1; // 기본값 : 1페이지
if(request.getParameter("currentPage") != null) { // 페이지 요청값을 받아 페이지 변경
currentPage = Integer.parseInt(request.getParameter("currentPage"));
}
// 현재 페이지 디버깅
System.out.println(currentPage + "<--currentPage");
// 페이지당 출력 행의 수
int rowPerPage = 10;
// 시작 행 번호
int startRow = 0 + (currentPage-1) * rowPerPage;
// 드라이버 로딩
Class.forName("org.mariadb.jdbc.Driver");
// homework0419 db 접속
Connection conn = DriverManager.getConnection("jdbc:mariadb://127.0.0.1:3306/homework0419", "root", "java1234");
// store 테이블에서 페이지에서 표시할 데이터를 조회하는 sql 전송
PreparedStatement stmt = conn.prepareStatement("select store_no, store_name, store_category, store_address, store_emp_cnt, store_begin, createdate, updatedate from store order by store_begin desc limit ?, ?");
stmt.setInt(1, startRow); // 1번째 ? = startRow
stmt.setInt(2, rowPerPage); // 2번째 ? = rowPerPage
// sql 디버깅
System.out.println(stmt + " <--stmt");
// 출력할 store 데이터 (sql 전송한 결과값)
ResultSet rs = stmt.executeQuery();
//총 행의 수를 구하는 sql 전송
PreparedStatement stmt2 = conn.prepareStatement("select count(*) from store");
//총 행의 수의 값
ResultSet rs2 = stmt2.executeQuery();
//총 행의 수
int totalRow = 0;
if(rs2.next()){
totalRow = rs2.getInt("count(*)");
}
// 마지막 페이지 = 총 행의 수 / 페이지 당 행의 수
int lastPage = totalRow / rowPerPage;
// 총 행의 수 / 페이지 당 행의 수 의 나머지가 0이 아니면 마지막 페이지 + 1
if(totalRow % rowPerPage != 0){
lastPage = lastPage + 1;
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>storeList.jsp</title>
<!-- Latest compiled and minified CSS -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" rel="stylesheet">
<!-- Latest compiled JavaScript -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js"></script>
</head>
<body>
<div class="container">
<a href="./storeList.jsp?currentPage=1"><image src="./img/홈.png"></a>
<a href="./insertStoreForm.jsp"><image src="./img/등록.png"></a>
<h1>가게 리스트</h1>
<table class="table table-bordered">
<tr>
<th class="table-dark">가게 번호</th>
<th class="table-dark">가게 이름</th>
<th class="table-dark">가게 종류</th>
<th class="table-dark">가게 주소</th>
<th class="table-dark">가게 직원 수</th>
<th class="table-dark">개업 날짜</th>
<th class="table-dark">작성 날짜</th>
<th class="table-dark">수정 날짜</th>
<th class="table-dark">수정</th>
<th class="table-dark">삭제</th>
</tr>
<%
// rs 커서가 가르키는 행이 있을 경우 출력
while(rs.next()){
%>
<tr>
<td><%=rs.getInt("store_no") %></td>
<td><%=rs.getString("store_name") %></td>
<td><%=rs.getString("store_category") %></td>
<td><%=rs.getString("store_address") %></td>
<td><%=rs.getInt("store_emp_cnt") %></td>
<td><%=rs.getString("store_begin") %></td>
<td><%=rs.getString("createdate").substring(0, 10) %></td>
<td><%=rs.getString("updatedate").substring(0, 10) %></td>
<td align="center"><a href="./updateStoreForm.jsp?storeNo=<%=rs.getInt("store_no") %>¤tPage=<%=currentPage %>"><image src="./img/수정.png"></a></td>
<td align="center"><a href="./deleteStoreForm.jsp?storeNo=<%=rs.getInt("store_no") %>"><image src="./img/삭제.png"></a></td>
</tr>
<%
}
%>
</table>
<%
// 페이지가 1보다 클 경우 이전 버튼 활성화
if(currentPage > 1){
%>
<a href="./storeList.jsp?currentPage=<%=currentPage-1%>"><image src="./img/왼쪽화살표.png"></a>
<%
}
%>
<span class="h5"><%=currentPage%></span><!-- 현재 페이지 표시 -->
<%
// 페이지가 마지막 페이지보다 작을 경우 다음 버튼 활성화
if(currentPage < lastPage) {
%>
<a href="./storeList.jsp?currentPage=<%=currentPage+1%>"><image src="./img/오른쪽화살표.png"></a>
<%
}
%>
</div>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>insertStoreForm.jsp</title>
<!-- Latest compiled and minified CSS -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" rel="stylesheet">
<!-- Latest compiled JavaScript -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js"></script>
</head>
<body>
<div class="container">
<a href="./storeList.jsp?currentPage=1"><image src="./img/홈.png"></a>
<h1>가게 등록 정보</h1>
<form action="./insertStoreAction.jsp" method="post">
<table class="table table-bordered">
<tr>
<th class="table-dark">가게 이름</th>
<td><input type="text" name="storeName"></td>
</tr>
<tr>
<th class="table-dark">가게 종류</th>
<td>
<input type="radio" name="storeCategory" value="한식">한식
<input type="radio" name="storeCategory" value="중식">중식
<input type="radio" name="storeCategory" value="일식">일식
</td>
</tr>
<tr>
<th class="table-dark">가게 주소</th>
<td><input type="text" name="storeAddress"></td>
</tr>
<tr>
<th class="table-dark">가게 직원 수</th>
<td><input type="number" name="storeEmpCnt"></td>
</tr>
<tr>
<th class="table-dark">개업 날짜</th>
<td><input type="date" name=storeBegin></td>
</tr>
</table>
<button type="submit">입력</button> <button type="reset">취소</button>
</form>
</div>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.sql.Connection" %>
<%@ page import="java.sql.DriverManager" %>
<%@ page import="java.sql.PreparedStatement" %>
<%
//post방식 인코딩 처리
request.setCharacterEncoding("utf-8");
// validation(요청 파라미터값 유효성 검사)
if(request.getParameter("storeName") == null // 파라미터가 null일 경우
|| request.getParameter("storeCategory") == null
|| request.getParameter("storeAddress") == null
|| request.getParameter("storeEmpCnt") == null
|| request.getParameter("storeBegin") == null
|| request.getParameter("storeName").equals("") // 파라미터가 공백일 경우
|| request.getParameter("storeCategory").equals("")
|| request.getParameter("storeAddress").equals("")
|| request.getParameter("storeEmpCnt").equals("")
|| request.getParameter("storeBegin").equals("")) {
response.sendRedirect("./insertStoreForm.jsp"); // 입력 폼으로 가라고 명령
return;
}
// 파라미터값 변수에 저장
String storeName = request.getParameter("storeName");
String storeCategory = request.getParameter("storeCategory");
String storeAddress = request.getParameter("storeAddress");
int storeEmpCnt = Integer.parseInt(request.getParameter("storeEmpCnt"));
String storeBegin = request.getParameter("storeBegin");
// 드라이버 로딩
Class.forName("org.mariadb.jdbc.Driver");
// homework0419 db 접속
Connection conn = DriverManager.getConnection("jdbc:mariadb://127.0.0.1:3306/homework0419", "root", "java1234");
// store 테이블에 새로운 데이터를 삽입하는 sql 전송
String sql = "insert into store(store_name, store_category, store_address, store_emp_cnt, store_begin, createdate, updatedate) values(?,?,?,?,?,now(),now())";
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setString(1, storeName); // 1번째 ? = storeName
stmt.setString(2, storeCategory); // 2번째 ? = storeCategory
stmt.setString(3, storeAddress); // 3번째 ? = storeAddress
stmt.setInt(4, storeEmpCnt); // 4번째 ? = storeEmpCnt
stmt.setString(5, storeBegin); // 5번째 ? = storeBegin
int row = stmt.executeUpdate(); // 디버깅 : 1(ex:2)이면 1행(ex:2행) 입력성공, 0이면 입력된 행이 없다
// row값을 이용한 디버깅
System.out.println(row + " <--row");
// sql 디버깅
System.out.println(stmt + " <--stmt");
// redirection
response.sendRedirect("./storeList.jsp"); // 리스트로 가라고 명령
%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.sql.Connection" %>
<%@ page import="java.sql.DriverManager" %>
<%@ page import="java.sql.PreparedStatement" %>
<%@ page import="java.sql.ResultSet" %>
<%
// 요청값 유효성 검사
if(request.getParameter("storeNo") == null // 요청값이 null이거나
|| request.getParameter("storeNo").equals("")) { // 요청값이 공백이면
response.sendRedirect("./storeList.jsp"); // redirection(storeList.jsp) storeList.jsp을 요청해라
return; // 코드는 여기서 종료한다
}
// 요청값 변수에 저장
int storeNo = Integer.parseInt(request.getParameter("storeNo"));
int currentPage = Integer.parseInt(request.getParameter("currentPage"));
// 디버깅(요청값 확인)
System.out.println(storeNo + " <-- updateStoreForm parmeter storeNo");
System.out.println(currentPage + " <-- updateStoreForm parmeter currentPage");
// 드라이버 로딩
Class.forName("org.mariadb.jdbc.Driver");
// homework0419 db 접속
Connection conn = DriverManager.getConnection("jdbc:mariadb://127.0.0.1:3306/homework0419", "root", "java1234");
// store 테이블에서 store_no가 storeNo인 데이터를 조회하는 sql 전송
PreparedStatement stmt = conn.prepareStatement("select store_name, store_category, store_address, store_emp_cnt, store_begin, createdate, updatedate from store where store_no=?");
stmt.setInt(1, storeNo); // 1번째 ? = storeNo
// sql 디버깅
System.out.println(stmt + " <-- updateStoreForm sql");
// 출력할 store 데이터 (sql 전송한 결과값)
ResultSet rs = stmt.executeQuery();
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>updateStoreForm</title>
<!-- Latest compiled and minified CSS -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" rel="stylesheet">
<!-- Latest compiled JavaScript -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js"></script>
</head>
<body>
<div class="container">
<h1>가게 정보 변경</h1>
<form action="updateStoreAction.jsp" method="post">
<table class="table table-bordered">
<%
// rs 커서가 가르키는 행이 있을 경우 출력
while(rs.next()){
%>
<tr>
<th class="table-dark">가게 번호</th>
<td>
<input type="number" readonly="readonly" name="storeNo" value="<%=storeNo %>">
</td>
</tr>
<tr>
<th class="table-dark">가게 이름</th>
<td>
<input type="text" name="storeName" value="<%=rs.getString("store_name") %>">
</td>
</tr>
<tr>
<th class="table-dark">가게 종류</th>
<td>
<%
if(rs.getString("store_category").equals("한식")) {
%>
<input type="radio" name="storeCategory" value="한식" checked="checked">한식
<input type="radio" name="storeCategory" value="중식">중식
<input type="radio" name="storeCategory" value="일식">일식
<%
} else if(rs.getString("store_category").equals("중식")) {
%>
<input type="radio" name="storeCategory" value="한식">한식
<input type="radio" name="storeCategory" value="중식" checked="checked">중식
<input type="radio" name="storeCategory" value="일식">일식
<%
} else {
%>
<input type="radio" name="storeCategory" value="한식">한식
<input type="radio" name="storeCategory" value="중식">중식
<input type="radio" name="storeCategory" value="일식" checked="checked">일식
<%
}
%>
</td>
</tr>
<tr>
<th class="table-dark">가게 주소</th>
<td>
<input type="text" name="storeAddress" value="<%=rs.getString("store_address") %>">
</td>
</tr>
<tr>
<th class="table-dark">가게 직원 수</th>
<td>
<input type="number" name="storeEmpCnt" value="<%=rs.getInt("store_emp_cnt") %>">
</td>
</tr>
<tr>
<th class="table-dark">개업 날짜</th>
<td>
<%=rs.getString("store_begin") %>
</td>
</tr>
<tr>
<th class="table-dark">작성 날짜</th>
<td>
<%=rs.getString("createdate") %>
</td>
</tr>
<tr>
<th class="table-dark">수정 날짜</th>
<td>
<%=rs.getString("updatedate") %>
</td>
</tr>
<%
}
%>
</table>
<input type="hidden" name="currentPage" value="<%=currentPage %>">
<button type="submit">수정</button>
</form>
</div>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.sql.Connection" %>
<%@ page import="java.sql.DriverManager" %>
<%@ page import="java.sql.PreparedStatement" %>
<%
// 요청값 유효성 검사
if(request.getParameter("storeNo") == null // 요청값이 null이거나
|| request.getParameter("storeName") == null
|| request.getParameter("storeCategory") == null
|| request.getParameter("storeAddress") == null
|| request.getParameter("storeEmpCnt") == null
|| request.getParameter("storeNo").equals("") // 공백일 때
|| request.getParameter("storeName").equals("")
|| request.getParameter("storeCategory").equals("")
|| request.getParameter("storeAddress").equals("")
|| request.getParameter("storeEmpCnt").equals("")) {
response.sendRedirect("./storeList.jsp"); // storeList.jsp로 가라
return; // 코드는 여기서 종료
}
// 요청값 변수에 저장
int storeNo = Integer.parseInt(request.getParameter("storeNo"));
String storeName = request.getParameter("storeName");
String storeCategory = request.getParameter("storeCategory");
String storeAddress = request.getParameter("storeAddress");
int storeEmpCnt = Integer.parseInt(request.getParameter("storeEmpCnt"));
int currentPage = Integer.parseInt(request.getParameter("currentPage"));
// 디버깅(요청값 확인)
System.out.println(storeNo + " <-- updateStoreAction parameter storeNo");
System.out.println(storeName + " <-- updateStoreAction parameter storeName");
System.out.println(storeCategory + " <-- updateStoreAction parameter storeCategory");
System.out.println(storeAddress + " <-- updateStoreAction parameter storeAddress");
System.out.println(storeEmpCnt + " <-- updateStoreAction parameter storeEmpCnt");
System.out.println(currentPage + " <-- updateStoreAction parameter currentPage");
// 드라이버 로딩
Class.forName("org.mariadb.jdbc.Driver");
// homework0419 db 접속
Connection conn = DriverManager.getConnection("jdbc:mariadb://127.0.0.1:3306/homework0419", "root", "java1234");
// store 테이블에서 store_no와 store_name이 일치하면 데이터를 수정하는 sql 전송
PreparedStatement stmt = conn.prepareStatement("update store set store_category=?, store_address=?, store_emp_cnt=?, updatedate=now() where store_no=? and store_name=?");
stmt.setString(1, storeCategory); // 1번째 ? = storeCategory
stmt.setString(2, storeAddress); // 2번째 ? = storeAddress
stmt.setInt(3, storeEmpCnt); // 3번째 ? = storeEmpCnt
stmt.setInt(4, storeNo); // 4번째 ? = storeNo
stmt.setString(5, storeName); // 5번째 ? = storeName
// sql 디버깅
System.out.println(stmt + " <-- updateStoreAction sql");
// sql 실행 시 영향받은 행의 수
int row = stmt.executeUpdate();
if(row == 0) { // 영향받은 행의 수가 0이면(store_name이 달라서 수정되지 않으면)
response.sendRedirect("./updateStoreForm.jsp?storeNo="+storeNo+"¤tPage="+currentPage); // 이전 updateStoreForm.jsp가서 storeName을 다시 입력받아라
} else { // 영향받은 행의 수가 0이 아니면(수정되면)
response.sendRedirect("./storeList.jsp?currentPage="+currentPage); // 수정된 데이터가 있는 페이지의 storeList.jsp로 가라
}
%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
// 요청값 유효성 검사
if(request.getParameter("storeNo") == null // 요청값이 null 이거나
|| request.getParameter("storeNo").equals("") ) { // 요청값이 공백일 때
response.sendRedirect("./storeList.jsp"); // storeList.jsp로 가라 명령
return; // 코드를 더이상 실행하지 않고 deleteStoreForm.jsp를 빠져나간다
}
// 요청값 변수에 저장
int storeNo = Integer.parseInt(request.getParameter("storeNo"));
// 디버깅(요청값 확인)
System.out.println(storeNo + " <-- deleteStroeForm parameter storeNo");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>deleteStoreForm.jsp</title>
<!-- Latest compiled and minified CSS -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" rel="stylesheet">
<!-- Latest compiled JavaScript -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js"></script>
</head>
<body>
<div class="container">
<h1>가게 삭제</h1>
<form action="./deleteStoreAction.jsp" method="post">
<table class="table table-bordered">
<tr>
<td class="table-dark">가게 번호</td>
<td>
<input type="text" name="storeNo" value="<%=storeNo %>" readonly="readonly">
</td>
</tr>
<tr>
<td class="table-dark">가게 이름</td>
<td><input type="text" name="storeName"></td>
</tr>
</table>
<div>
<button type="submit">삭제</button>
</div>
</form>
</div>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.sql.Connection" %>
<%@ page import="java.sql.DriverManager" %>
<%@ page import="java.sql.PreparedStatement" %>
<%
// 요청값 유효성 검사
if(request.getParameter("storeNo") == null // 파라미터가 null 이거나
|| request.getParameter("storeName") == null
|| request.getParameter("storeNo").equals("") // 공백일 때
|| request.getParameter("storeName").equals("")) {
response.sendRedirect("./storeList.jsp"); // storeList.jsp로 가라 명령
return; // 코드를 더이상 실행하지 않고 deleteStoreAcion.jsp를 빠져나간다
}
// 요청값 변수에 저장
int storeNo = Integer.parseInt(request.getParameter("storeNo"));
String storeName = request.getParameter("storeName");
// 디버깅(요청값 확인)
System.out.println(storeNo + " <-- deleteStoreAction parameter storeNo");
System.out.println(storeName + " <-- deleteStoreAction parameter storeName");
// 드라이버 로딩
Class.forName("org.mariadb.jdbc.Driver");
// db 접속
Connection conn = DriverManager.getConnection("jdbc:mariadb://127.0.0.1:3306/homework0419", "root", "java1234");
// sql 전송
String sql ="delete from store where store_no = ? and store_name = ?"; // store 테이블에 store_no가 ?이고 store_name이 ?인 행을 삭제해라
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setInt(1, storeNo); // 1번째 ? = storeNo
stmt.setString(2, storeName); // 2번째 ? = storeName
// 디버깅(sql 확인)
System.out.println(stmt + " <--deletestoreAction sql");
// sql 전송하여 실행 시 영향 받은 행의 수
int row = stmt.executeUpdate();
// 디버깅(영향받은 행의 수 확인)
System.out.println(row + " <-- deletestoreAction row");
// 삭제 되었는지 확인 (storeName이 틀렸는지 검사)
if(row == 0) { // sql 전송하여 실행 시 영향 받은 행의 수가 0이면(삭제 X)
response.sendRedirect("./deleteStoreForm.jsp?noticeNo=" + storeNo); // deleteNoticeForm.jsp로 돌아가서 storeName 다시 입력 받기
} else { // sql 전송하여 실행 시 영향 받은 행의 수가 0아니면(삭제 O)
response.sendRedirect("./storeList.jsp"); // ./noticeList.jsp로 가기
}
%>