[๊ตฌ๋์์นด๋ฐ๋ฏธ 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" %>
<%
// select notice_no, notice_title, createdate from notice
// notice_no๋ ์ถ๋ ฅ๋์ง๋ ์์๋ ํ์ํ๋ฏ๋ก ๊ฐ์ด ๋ถ๋ฌ์จ๋ค!
// order by createdate desc
// limit 0, 5
// 1) ๋๋ผ์ด๋ฒ ๋ก๋ฉ // mariadb๋ฅผ ์ฌ์ฉ๊ฐ๋ฅํ๊ฒ ํ๋ ๋๋ผ์ด๋ฒ ํด๋์ค ์์น์ ํ๋ค์์ ์ ๋๋ค (๊ตณ์ด ์ธ์ฐ๋ ค๊ณ ํ ํ์x)
Class.forName("org.mariadb.jdbc.Driver");
// 2) mariadb ์๋ฒ์ ์ ์, ์ ์ ์ ์ง
Connection conn = DriverManager.getConnection(
"jdbc:mariadb://127.0.0.1:3306/diary","****","****"); // ๋งค๊ฐ๋ณ์ 3๊ฐ (์ฃผ์,๊ณ์ ,์ํธ)
// 3) ์ฟผ๋ฆฌ ์์ฑ ํ ์คํ
// String sql ๋ง๋ค์ด์ ๋ฏธ๋ฆฌ ์์ฑํ๊ณ ํ๋ ๊ฒ ๋ ํธํจ
PreparedStatement stmt = conn.prepareStatement(
"select notice_no, notice_title, createdate from notice order by createdate desc limit 0, 5");
System.out.println(stmt + "<-- stmt"); // ๋๋ฒ๊น
ResultSet rs = stmt.executeQuery();
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<div><!-- ๋ฉ์ธ๋ฉ๋ด -->
<a href="./home.jsp">ํ์ผ๋ก</a>
<a href="./noticeList.jsp">๊ณต์ง ๋ฆฌ์คํธ</a>
<a href="./scheduleList.jsp">์ผ์ ๋ฆฌ์คํธ</a>
</div>
<h1>๊ณต์ง์ฌํญ</h1><!-- ๋ ์ง์ ์ต๊ทผ ๊ณต์ง 5๊ฐ -->
<table>
<tr>
<th>notice_title</th>
<th>createdate</th>
</tr>
<%
while(rs.next()) {
%>
<tr>
<td>
<a href="./noticeOne.jsp?noticeNo=<%=rs.getInt("notice_no")%>">
<!-- notice_title์ ๊ฐ์ ์ค๋ณต๋ ์ ์๊ธฐ ๋๋ฌธ์ ๊ฐ์ notice_no์ ๊ฐ์ ๋๊ธด๋ค -->
<!-- ์ฃผ์?ํค=๊ฐ -->
<%=rs.getString("notice_title") %>
</a>
</td>
<td><%=rs.getString("createdate").substring(0, 10) %></td>
<!-- ์๋ฐ์ ๋ ์งํ์
๊ณผ ๋๊ฐ์ง ์๊ธฐ ๋๋ฌธ์ Stringํ์
์ผ๋ก ๋ฐ๋๋ค (์ฐธ์กฐํ์
๋ผ๋ฆฌ๋ ์๋ํ๋ณํ์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์)-->
<!-- ์๊ฐ์ด ์ ๋๋ก ์ถ๋ ฅ๋์ง ์๊ธฐ ๋๋ฌธ์ substring ๋ฉ์๋๋ฅผ ์ด์ฉํ์ฌ ๋ ์ง๋ถ๋ถ๋ง ์ถ๋ ฅ -->
<!-- (์์ ์ธ๋ฑ์ค, ๋ ์ธ๋ฑ์ค) ์์ ์ธ๋ฑ์ค๋ถํฐ ~ ๋ ์ธ๋ฑ์ค ์๊น์ง ์ถ๋ ฅ, ์ธ๋ฑ์ค์ ์์์ 0 -->
</tr>
<%
}
%>
</table>
</body>
</html>
<a href="./noticeOne.jsp?noticeNo=<%=rs.getInt("notice_no")%>">
: notice_title์ ๊ฐ์ ์ค๋ณต๋ ์ ์๊ธฐ ๋๋ฌธ์(์ ์ผํ ํค๊ฐ์ด ์๋๊ธฐ ๋๋ฌธ์) notice_no์ ๊ฐ์ผ๋ก ๋ณด๋ธ๋ค.rs.getํ์
: ํ์
ํ๋ฆฌ์ง ์๊ฒ ์ฃผ์ํ๊ธฐ.substring
: 6์ผ์ฐจ์ ์ฌ์ฉํ ๋ฉ์๋ ๋ค์ ์ฌ์ฉ, Stringํ์
(๋ฌธ์์ด)์์ ์ํ๋ ๊ธ์๋ง ๋ฝ์ ์ ์๋ค. ์์ ์ธ๋ฑ์ค๋ 0์ผ๋ก ์์, ๋ ์ธ๋ฑ์ค ๋ฐ๋ก ์๊น์ง๋ง ์ถ๋ ฅํ๋ค.order by createdate desc limit 0, 5
: createdate ๋ ์ง ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์ํ์ฌ ์ฒซ๋ฒ์งธ๋ถํฐ 5๊ฐ๋ง ์กฐํ๐ ์ถ๋ ฅ
๋ ์ง์์ผ๋ก 5๊ฐ์ ๋ฐ์ดํฐ๊ฐ ๋ด๋ฆผ์ฐจ์๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
ํด๋น ๋ฐ์ดํฐ์ ์ ๋ชฉ(title)์ ํด๋ฆญํ๋ฉด ์ด๋๋๋ ์์ธํ์ด์ง๋ฅผ ๋ง๋ค์๋ค.
๐ ์์ฑ
<%@ 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("noticeNo") == null){
response.sendRedirect("./noticeList.jsp");
// ๋ค์ ๋์๊ฐ์ผํ ์ฃผ์๋ฅผ ์๋ ค์ค
// ํ์ด์ง ๋จ์์ ํ๋ก๊ทธ๋จ์ด๋ฏ๋ก ๋ด๊ฐ ์ค์ ํ ๋ฃจํธ๋๋ก ๋์ด์ค์ง ์์์๋(=noticeNo์ ๊ฐ์ด null์ผ์๋) ์๊ธฐ ๋๋ฌธ์
return;
// 1) ์ฝ๋์งํ์ข
๋ฃ 2) ๋ฐํ๊ฐ์ ๋๊ฒจ์ค
}
int noticeNo = Integer.parseInt(request.getParameter("noticeNo"));
// noticeNo์ ๊ฐ ๊ฐ์ ธ์์ intํ์
์ผ๋ก ๋ฐ๊พธ๊ธฐ
Class.forName("org.mariadb.jdbc.Driver");
Connection conn = DriverManager.getConnection(
"jdbc:mariadb://127.0.0.1:3306/diary","****","****");
// ์ฟผ๋ฆฌ๋ ํด๋น ํ์ด์ง์ ์ฌ์ฉํ๋ ์ ๋ณด์ ๋ง๊ฒ ๋ค์ ์์ฑ
String sql = "select notice_no, notice_title, notice_content, notice_writer, createdate, updatedate from notice where notice_no = ?";
// String sql = "select * from notice where notice_no = ?";
// ๋์ด์ค๋ notice_no์ ๊ฐ์ด ๊ณ์ ๋ฌ๋ผ์ง๋ฏ๋ก ?๋ก ์
๋ ฅ
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setInt(1, noticeNo);
// ?๋ก ์
๋ ฅ๋ notice_no์ ๊ฐ์ set๋ฉ์๋๋ฅผ ์ด์ฉํ์ฌ noticeNo๋ก ๋ฐ๊พธ๊ธฐ
// ์ฒซ๋ฒ์งธ ? = 1 // 1๋ถํฐ ์ผ๋ค
System.out.println(stmt + "<-- stmt"); // ๋๋ฒ๊น
ResultSet rs = stmt.executeQuery();
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<div><!-- ๋ฉ์ธ๋ฉ๋ด -->
<a href="./home.jsp">ํ์ผ๋ก</a>
<a href="./noticeList.jsp">๊ณต์ง ๋ฆฌ์คํธ</a>
<a href="./scheduleList.jsp">์ผ์ ๋ฆฌ์คํธ</a>
</div>
<h1>๊ณต์ง ์์ธ</h1>
<%
if(rs.next()) {
%>
<table>
<tr>
<td>notice_no</td>
<td><%=rs.getInt("notice_no")%></td>
</tr>
<tr>
<td>notice_title</td>
<td><%=rs.getString("notice_title")%></td>
</tr>
<tr>
<td>notice_content</td>
<td><%=rs.getString("notice_content")%></td>
</tr>
<tr>
<td>notice_writer</td>
<td><%=rs.getString("notice_writer")%></td>
</tr>
<tr>
<td>createdate</td>
<td><%=rs.getString("createdate")%></td>
</tr>
<tr>
<td>updatedate</td>
<td><%=rs.getString("updatedate")%></td>
</tr>
</table>
<%
}
%>
</body>
</html>
if(request.getParameter("noticeNo") == null){
response.sendRedirect("./home.jsp");
return;
}
int noticeNo = Integer.parseInt(request.getParameter("noticeNo"));
stmt.setInt(1, noticeNo);
: ?๋ก ๋จ๊ฒจ๋ ๊ฐ์ set์ ์ด์ฉํ ์ ์๋ค. 1=์ฒซ๋ฒ์งธ ๋ฌผ์ํ, 2=๋๋ฒ์งธ ๋ฌผ์ํ. ๋จ, intํ์
์ผ๋ก ์ง์ ํ์ผ๋ฏ๋ก ?์ ๋ค์ด๊ฐ ๊ฐ์ intํ์
๋ง ๊ฐ๋ฅํ๋ค.๐ ์ถ๋ ฅ
500๊ฐ์ ๋ฐ์ดํฐ๋ฅผ 10๊ฐ์ฉ ์ถ๋ ฅํ๋ ๋ฆฌ์คํธ ํ์ด์ง๋ฅผ ๋ง๋ค์๋ค. ์ด์ ๊ณผ ๋ค์ ๋ฒํผ์ ๋๋ฌ ๋ชฉ๋ก์ ์ค๊ฐ ์ ์๊ฒ ํ๋ ๊ธฐ๋ฅ๋ ๋ํ๋ค.
๐ ์์ฑ
<%@ 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) { // ์ฆ, ์ด์ or ๋ค์์ ๋๋ ์ ๊ฒฝ์ฐ
currentPage = Integer.parseInt(request.getParameter("currentPage"));
}
System.out.println(currentPage + "<-- currentPage"); // ๋๋ฒ๊น
// ํ์ด์ง๋น ์ถ๋ ฅํ ํ์ ์
int rowPerPage = 10; // ๊ณต์ง๋ฅผ ๋ช๊ฐ์ฉ ์ถ๋ ฅํ ์ง
// ์์ ํ ๋ฒํธ
int startRow = (currentPage-1)*rowPerPage;
/*
currentPage startRow(rowPerPage 10์ผ๋)
1 0 <-- (currentPage-1)*rowPerPage
2 10
3 20
4 30
*/
// int startRow = 0; // 1ํ์ด์ง ์ผ๋๋ 0์ผ๋ก ์์
// DB์ฐ๊ฒฐ ์ค์
// select notice_no, notice_title, createdate from notice
// order by createdate desc
// limit ?, ?
// ๊ฐ์ ํ์ด์ง๋ง๋ค ๊ณ์ ๋ฐ๋ ๊ฒ์ด๋ฏ๋ก ?๋ก ๋๋ค
// 1) ๋๋ผ์ด๋ฒ ๋ก๋ฉ
Class.forName("org.mariadb.jdbc.Driver");
// 2) mariadb ์๋ฒ์ ์ ์, ์ ์ ์ ์ง
Connection conn = DriverManager.getConnection(
"jdbc:mariadb://127.0.0.1:3306/diary","****","****");
// 3) ์ฟผ๋ฆฌ ์์ฑ ํ ์คํ
PreparedStatement stmt = conn.prepareStatement(
"select notice_no, notice_title, createdate from notice order by createdate desc limit ?, ?");
stmt.setInt(1, startRow);
stmt.setInt(2, rowPerPage);
System.out.println(stmt + "<-- stmt"); // ๋๋ฒ๊น
// ์ถ๋ ฅํ ๊ณต์ง ๋ฐ์ดํฐ
ResultSet rs = stmt.executeQuery();
// ๋ฐ์ดํฐ ์ด ๊ฐฏ์
// select count(*) from notice
PreparedStatement stmt2 = conn.prepareStatement("select count(*) from notice");
ResultSet rs2 = stmt2.executeQuery();
int totalRow = 0;
if(rs2.next()) {
totalRow = rs2.getInt("count(*)");
}
// ๋ง์ง๋ง ํ์ด์ง
int lastPage = totalRow / rowPerPage;
if(totalRow % rowPerPage != 0) { // ํ์ด์ง๊ฐ ๋ฑ ๋๋์ด๋จ์ด์ง์ง ์์ผ๋ฉด ํํ์ด์ง๊ฐ ๋ ํ์ํ๋ค
lastPage = lastPage + 1;
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<div><!-- ๋ฉ์ธ๋ฉ๋ด -->
<a href="./home.jsp">ํ์ผ๋ก</a>
<a href="./noticeList.jsp">๊ณต์ง ๋ฆฌ์คํธ</a>
<a href="./scheduleList.jsp">์ผ์ ๋ฆฌ์คํธ</a>
</div>
<h1>๊ณต์ง์ฌํญ ๋ฆฌ์คํธ</h1>
<table>
<tr>
<th>notice_title</th>
<th>createdate</th>
</tr>
<%
while(rs.next()) {
%>
<tr>
<td>
<a href="./noticeOne.jsp?noticeNo=<%=rs.getInt("notice_no")%>">
<%=rs.getString("notice_title") %>
</a>
</td>
<td><%=rs.getString("createdate").substring(0, 10) %></td>
</tr>
<%
}
%>
</table>
<%
if(currentPage > 1) { // ์ด์ ์ 1ํ์ด์ง์์๋ ์ถ๋ ฅ๋๋ฉด ์๋๋ค
%>
<a href="./noticeList.jsp?currentPage=<%=currentPage-1%>">์ด์ </a>
<%
}
%>
<%=currentPage%> <!-- ํ์ฌํ์ด์ง -->
<%
if(currentPage < lastPage) { // ๋ง์ง๋ง ํ์ด์ง์์๋ ๋ค์์ด ์ด๋ ฅ๋๋ฉด ์๋๋ค
%>
<a href="./noticeList.jsp?currentPage=<%=currentPage+1%>">๋ค์</a>
<%
}
%>
</body>
</html>
๊ฐ์ฅ ์๊ณ ๋ฆฌ์ฆ์ด ๋ณต์กํ๋ค. ์ ๋ ์ธ์ฐ๋ ค๊ณ ๋ง ํ๋ฉด ์๋๋ค. ์ฐจ๊ทผ์ฐจ๊ทผ ์ฝ์ด๋ณด๋ฉด์ ์ดํดํ๋ ๊ฒ์ด ์ค์ํจ์ ๋๊ผ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ณด๊ธฐ๋ง ํด์๋ ์๋๋ค. ์ง์ ๋ด๊ฐ ์ณ๋ณด๋ฉด์ ์ฐจ๊ทผ์ฐจ๊ทผ ์ดํดํด์ผ ๋ด ๊ฒ์ด ๋ ์ ์๋ ๊ฒ ๊ฐ๋ค.
int rowPerPage = 10;
: ๋ณ์๊ฐ ์๋๋ผ 10์ผ๋ก ๋ ์๋ ์์ผ๋ ์ฝ๋๋ ํญ์ ์์ ์ด ์ฉ์ดํด์ผํ๋ค. ์ถํ 10ํ์ด์ง์ฉ์ด ์๋๋ผ 15ํ์ด์ง์ฉ ํน์ 5ํ์ด์ง์ฉ ์ถ๋ ฅํ๊ณ ์ถ๋ค๋ฉด ์ฝ๋ ์ ์ฒด๊ฐ ์๋ ์ด ๋ณ์๋ง ์์ ํ๋ฉด ๋ ๊ฒ์ด๋ค.int startRow = (currentPage-1)*rowPerPage;
: ์ด๋ฐ ๊ฒ์ ์ ๋ต์ด ์กด์ฌํ๋ ๊ฒ์ ์๋๋ค. ์ง์ ๊ธฐ์
ํด๋ณด๋ฉด์ ํจํด์ ์ฐพ์ผ๋ฉด ์์ ์์ฑํ ์ ์๋ค.select count(*) from notice
: ๋ชจ๋ ๋ฐ์ดํฐ์ ์๋ฅผ ์กฐํํ๋ค.int totalRow = 0;
if(rs2.next()) {
totalRow = rs2.getInt("count(*)");
}
int lastPage = totalRow / rowPerPage;
๋ก๋ง ์์ฑํ ๊ฒฝ์ฐ ์ด ๋ฐ์ดํฐ์ ๊ฐฏ์์ ํ ํ์ด์ง๋น ํ์ํ ๋ฐ์ดํฐ์ ์๊ฐ ๋ฑ ๋๋์ด ๋จ์ด์ง์ง์์ ๊ฒฝ์ฐ ๋ง์ง๋ง ํ์ด์ง 1๊ฐ๋ ๋๋ฝ๋ ๊ฒ์ด๋ค. ๊ทธ๋์ ๋ค์๊ณผ ๊ฐ์ if๋ฌธ์ ์ถ๊ฐํ๋ค.if(totalRow % rowPerPage != 0) { // ํ์ด์ง๊ฐ ๋ฑ ๋๋์ด๋จ์ด์ง์ง ์์ผ๋ฉด ํํ์ด์ง๊ฐ ๋ ํ์ํ๋ค
lastPage = lastPage + 1;
}
๐ ๊ฒฐ๊ณผ
์ฒซํ์ด์ง์์ ์ด์ ์ด ๋์ค์ง ์๊ณ , ๋ง์ง๋งํ์ด์ง์์ ๋ค์์ด ๋์ค์ง ์๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
์ค๋ ํ ์์
์ ํ ๋๋ก ์ด๋ฒ์ ์ฒ์๋ถํฐ ๋๊น์ง ์ง์ ํด๋ณด๋ ๊ณผ์ ๋ฅผ ์ฃผ์
จ๋ค. ์ํ๋ฐ์ดํฐ ์์ฑ๋ถํฐ, ๋ฐ์ดํฐ ํ
์ด๋ธ ์์ฑ, ์ดํด๋ฆฝ์ค๋ก ์ฐ๊ฒฐํ๊ณ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ ๊ฒ๊น์ง ์ฐจ๊ทผ์ฐจ๊ทผ ํด๋ณด์๋ค.
๐ ์์ฑ
<%@ 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" %>
<%
//๋๋ผ์ด๋ฒ ๋ก๋ฉ
Class.forName("org.mariadb.jdbc.Driver");
System.out.println("๋๋ผ์ด๋ฒ ๋ก๋ฉ ์ฑ๊ณต");
// mariadb ์๋ฒ ์ ์
Connection conn = DriverManager.getConnection(
"jdbc:mariadb://127.0.0.1:3306/homework0419","****","****");
System.out.println("์ ์์ฑ๊ณต: "+conn);
// ์ฟผ๋ฆฌ ์์ฑ // store_no๋ก ๋ด๋ฆผ์ฐจ์
String sql =
"select store_no, store_name, store_category, store_address from store order by store_no desc limit 0, 5";
PreparedStatement stmt = conn.prepareStatement(sql);
System.out.println("ํ์ฌ์ถ๋ ฅ์ฟผ๋ฆฌ: " + stmt);
// ์ฟผ๋ฆฌ ์คํ
ResultSet rs = stmt.executeQuery();
System.out.println("์ฟผ๋ฆฌ์คํ์ฑ๊ณต: "+rs);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>storeHome.jsp</title>
<style>
.center {text-align: center;}
</style>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js"></script>
</head>
<body>
<div class="center"><!-- ๋ฉ์ธ๋ฉ๋ด -->
<a href="./storeHome.jsp">ํ์ผ๋ก</a>
<a href="./storeList.jsp">๋ฆฌ์คํธ๋ก</a>
</div>
<h1 class="center">Welcome🍽</h1>
<div class="container mt-3">
<table class="table">
<thead class="table-dark">
<tr>
<th>์๋น์ด๋ฆ</th>
<th>์นดํ
๊ณ ๋ฆฌ</th>
<th>์ฃผ์</th>
</tr>
</thead>
<tbody>
<%
while(rs.next()) {
%>
<tr>
<td>
<a href="./storeOne.jsp?storeNo=<%=rs.getInt("store_no")%>">
<%=rs.getString("store_name")%>
</a>
</td>
<td><%=rs.getString("store_category")%></td>
<td><%=rs.getString("store_address")%></td>
</tr>
<%
}
%>
</tbody>
</table>
</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" %>
<%@ page import = "java.sql.ResultSet" %>
<%
// ์์ฒญ๊ฐ ์ฒ๋ฆฌ
// null์ผ ๊ฒฝ์ฐ
if(request.getParameter("storeNo") == null) {
response.sendRedirect("./storeList.jsp");
// ๋ค์ ๋์๊ฐ์ผํ ์ฃผ์ ์๋ ค์ฃผ๊ธฐ
// ํ์ด์ง ๋จ์์ ํ๋ก๊ทธ๋จ์ด๋ฏ๋ก ๋ด๊ฐ ์ค์ ํ ๋ฃจํธ๋๋ก ๋์ด์ค์ง ์์์๋(=storeNo์ ๊ฐ์ด null์ผ์๋) ์๊ธฐ ๋๋ฌธ์
return;
}
// null์ด ์๋ ๊ฒฝ์ฐ
int storeNo = Integer.parseInt(request.getParameter("storeNo"));
//๋๋ผ์ด๋ฒ ๋ก๋ฉ
Class.forName("org.mariadb.jdbc.Driver");
System.out.println("๋๋ผ์ด๋ฒ ๋ก๋ฉ ์ฑ๊ณต");
// mariadb ์๋ฒ ์ ์
Connection conn = DriverManager.getConnection(
"jdbc:mariadb://127.0.0.1:3306/homework0419","****","****");
System.out.println("์ ์์ฑ๊ณต: "+conn);
// ์ฟผ๋ฆฌ ์์ฑ // ๋ชจ๋ ์ ๋ณด ์กฐํ, store_no ๊ฐ์ ํด๋ฆญํ๋ ๊ฒ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง
PreparedStatement stmt = conn.prepareStatement(
"select * from store where store_no = ?");
stmt.setInt(1, storeNo);
System.out.println("ํ์ฌ์ถ๋ ฅ์ฟผ๋ฆฌ: " + stmt);
// ์ฟผ๋ฆฌ ์คํ
ResultSet rs = stmt.executeQuery();
System.out.println("์ฟผ๋ฆฌ์คํ์ฑ๊ณต: "+rs);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>storeOne.jsp</title>
<style>
.center {text-align: center;}
</style>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js"></script>
</head>
<body>
<div class="center"><!-- ๋ฉ์ธ๋ฉ๋ด -->
<a href="./storeHome.jsp">ํ์ผ๋ก</a>
<a href="./storeList.jsp">๋ฆฌ์คํธ๋ก</a>
</div>
<h1 class="center">์๋น ์์ธ🍽</h1>
<div class="container mt-3">
<%
if(rs.next()) {
%>
<table class="table table-bordered">
<tr>
<td>๊ธ๋ฒํธ</td>
<td><%=rs.getInt("store_no")%></td>
</tr>
<tr>
<td>์๋น์ด๋ฆ</td>
<td><%=rs.getString("store_name")%></td>
</tr>
<tr>
<td>์นดํ
๊ณ ๋ฆฌ</td>
<td><%=rs.getString("store_category")%></td>
</tr>
<tr>
<td>์ฃผ์</td>
<td><%=rs.getString("store_address")%></td>
</tr>
<tr>
<td>์ ์์</td>
<td><%=rs.getInt("store_emp_cnt")%>๋ช
</td>
</tr>
<tr>
<td>๊ธ์์ฑ์ผ์</td>
<td><%=rs.getString("createdate").substring(0, 10)%></td>
</tr>
<tr>
<td>๊ธ์์ ์ผ์</td>
<td><%=rs.getString("updatedate").substring(0, 10)%></td>
</tr>
</table>
<%
}
%>
</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" %>
<%@ page import = "java.sql.ResultSet" %>
<%
// ํ์ฌ ํ์ด์ง
int currentPage = 1; // 1ํ์ด์ง๋ถํฐ ์์
if(request.getParameter("currentPage") != null) {
currentPage = Integer.parseInt(request.getParameter("currentPage"));
}
System.out.println("ํ์ฌํ์ด์ง: "+currentPage);
// ํ์ด์ง ๋น ์ถ๋ ฅํ ์๋น ๋ฆฌ์คํธ ์
int rowPerPage = 10; // 10๊ฐ์ฉ ์ถ๋ ฅ
// limit ์์ ์ธ๋ฑ์ค
int startRow = (currentPage - 1) * rowPerPage;
// ๋๋ผ์ด๋ฒ ๋ก๋ฉ
Class.forName("org.mariadb.jdbc.Driver");
System.out.println("๋๋ผ์ด๋ฒ ๋ก๋ฉ ์ฑ๊ณต");
// mariadb ์๋ฒ ์ ์
Connection conn = DriverManager.getConnection(
"jdbc:mariadb://127.0.0.1:3306/homework0419","****","****");
System.out.println("์ ์์ฑ๊ณต: "+conn);
// ์ฟผ๋ฆฌ ์์ฑ // store_no๋ก ๋ด๋ฆผ์ฐจ์
String sql =
"select store_no, store_name, store_category, store_address, store_begin from store order by store_no desc limit ?, ?";
PreparedStatement stmt = conn.prepareStatement(sql);
// limit ?์ set
stmt.setInt(1, startRow);
stmt.setInt(2, rowPerPage);
System.out.println("ํ์ฌ์ถ๋ ฅ์ฟผ๋ฆฌ: " + stmt);
// ์ฟผ๋ฆฌ ์คํ
ResultSet rs = stmt.executeQuery();
System.out.println("์ฟผ๋ฆฌ์คํ์ฑ๊ณต: "+rs);
// ์ ์ฒด ๋ฐ์ดํฐ ์กฐํ
PreparedStatement stmt2 = conn.prepareStatement(
"select count(*) from store");
System.out.println("์ ์ฒด์กฐํ์ฟผ๋ฆฌ: " + stmt2);
ResultSet rs2 = stmt2.executeQuery();
System.out.println("์ฟผ๋ฆฌ์คํ์ฑ๊ณต: "+rs2);
// ์ ์ฒด ๋ฐ์ดํฐ ์ ๊ตฌํ๊ธฐ
int totalRow = 0;
if(rs2.next()) {
totalRow = rs2.getInt("count(*)");
}
// ๋ง์ง๋ง ํ์ด์ง ๋๋ฒ
int lastPage = totalRow / rowPerPage;
if(totalRow % rowPerPage != 0) {
lastPage = lastPage + 1;
// ๋๋์ด๋จ์ด์ง์ง ์์ผ๋ฉด, ๊ฝ ์ฑ์์ง์ง ์์ ๋ง์ง๋ง ํ์ด์ง ๋ฐ์
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>storeList.jsp</title>
<style>
.center {text-align: center;}
</style>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js"></script>
</head>
<body>
<div class="center"><!-- ๋ฉ์ธ๋ฉ๋ด -->
<a href="./storeHome.jsp">ํ์ผ๋ก</a>
<a href="./storeList.jsp">๋ฆฌ์คํธ๋ก</a>
</div>
<h1 class="center">์๋น ๋ฆฌ์คํธ🍽</h1>
<div class="container mt-3">
<table class="table">
<thead class="table-dark">
<tr>
<th>์๋น์ด๋ฆ</th>
<th>์นดํ
๊ณ ๋ฆฌ</th>
<th>์ฃผ์</th>
<th>๊ฐ์
์ผ์</th>
</tr>
</thead>
<tbody>
<%
while(rs.next()) {
%>
<tr>
<td>
<a href="./storeOne.jsp?storeNo=<%=rs.getInt("store_no")%>">
<%=rs.getString("store_name")%>
</a>
</td>
<td><%=rs.getString("store_category")%></td>
<td><%=rs.getString("store_address")%></td>
<td><%=rs.getString("store_begin")%></td>
</tr>
<%
}
%>
</tbody>
</table>
</div>
<div class="center">
<%
if(currentPage > 1) { // ์ฒซ ํ์ด์ง์์๋ ์ด์ ์ด ์ถ๋ ฅ๋๋ฉด ์๋๋ค
%>
<a href="./storeList.jsp?currentPage=<%=currentPage - 1%>">์ด์ </a>
<%
}
%>
<%=currentPage%>ํ์ด์ง<!-- ํ์ฌํ์ด์ง -->
<%
if(currentPage < lastPage) { // ๋ง์ง๋ง ํ์ด์ง์์๋ ๋ค์์ด ์ถ๋ ฅ๋๋ฉด ์๋๋ค
%>
<a href="./storeList.jsp?currentPage=<%=currentPage + 1%>">๋ค์</a>
<%
}
%>
</div>
</body>
</html>
๐ ์ถ๋ ฅ
์ด์ ๋ณด๋ค ์ค๋ mariadb๋ฅผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ๊ณผ ๋ ๊ฐ๊น์์ง ๊ธฐ๋ถ์ด ๋ค์๋ค. ๋ง์ง๋ง ๊ณผ์ ๋ ์ค๋ ๋ฐฐ์ด ๋ด์ฉ์ ํ ๋๋ก ๋ค์ ๋ณต์ตํ๋ ๋๋์ผ๋ก ์ฐจ๊ทผ์ฐจ๊ทผ ํด๋ณด๋ ํ์คํ ๊ธฐ์ต์ ๋ ์ค๋ ๋จ์๋ค. ๋ด๊ฐ ์ํ๋๋๋ก ํ๋์ฉ ํ๋์ฉ ๊ตฌํ๋๋ ๊ธฐ๋ถ์ด ์ ๋ง ์ข์๋ค!๐