Programing_Java
[Servlet] ์๋ธ๋ฆฟ์ ํ์ฉํ ๋น๋๊ธฐ ๊ฒ์ํ ์ ๋ ฌ – JSON ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ฐ ํ์ด์ง๋ค์ด์ ๊ตฌํ ๐ ๋ณธ๋ฌธ
[Servlet] ์๋ธ๋ฆฟ์ ํ์ฉํ ๋น๋๊ธฐ ๊ฒ์ํ ์ ๋ ฌ – JSON ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ฐ ํ์ด์ง๋ค์ด์ ๊ตฌํ ๐
Joyfullyever 2025. 3. 29. 17:29๐ ์๋ธ๋ฆฟ์ ์ด์ฉํ ๋น๋๊ธฐ ๊ฒ์ํ ์ ๋ ฌ ๊ธฐ๋ฅ ๊ตฌํ
์ ๋ ฌํ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ ๋, ํ์ด์ง๋ฅผ ์๋ก๊ณ ์นจํ์ง ์๊ณ ๋น๋๊ธฐ(Async) ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒ์ด ์ผ๋ฐ์
BoardComboOrderServlet์ ์ด์ฉ, ๊ฒ์๊ธ ๋ฐ์ดํฐ๋ฅผ JSON ํ์์ผ๋ก ํด๋ผ์ด์ธํธ์ ๋ฐํ,
์ต์ ์, ์ค๋๋์, ์ธ๊ธฐ์ ์ ๋ ฌ ๋ฐ ํ์ด์ง๋ค์ด์ ์ฒ๋ฆฌ
๐ ์ฃผ์ ๊ธฐ๋ฅ
โ
๋น๋๊ธฐ ์์ฒญ ์ฒ๋ฆฌ (AJAX์ ํจ๊ป ๋์)
โ
๊ฒ์ํ ๋ฐ์ดํฐ ์ ๋ ฌ (์ต์ ์, ์ค๋๋์, ์ธ๊ธฐ์)
โ
ํ์ด์ง๋ค์ด์
๊ธฐ๋ฅ ๊ตฌํ (๋๋ณด๊ธฐ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ ๋ก๋)
โ
JSON ํ์์ผ๋ก ๋ฐ์ดํฐ ์๋ต (View์์ ์ฝ๊ฒ ์ฒ๋ฆฌ ๊ฐ๋ฅ)
๐ ์ฝ๋ ๋ถ์ – ํต์ฌ ๋ก์ง ์ค๋ช
1๏ธโฃ View์์ ์ ๋ ฌ ์กฐ๊ฑด๊ณผ ํ์ด์ง ์ ๋ณด ์ ๋ฌ
View๋ AJAX ์์ฒญ์ ํตํด ์ ๋ ฌ ์กฐ๊ฑด๊ณผ ํ์ด์ง ์ ๋ณด๋ฅผ ์๋ฒ๋ก ์ ๋ฌ → ์๋ธ๋ฆฟ์์ request.getParameter()๋ก ๋ฐ์ ์ฒ๋ฆฌ
// ํด๋ผ์ด์ธํธ์์ ์ ๋ฌํ ์ ๋ ฌ ์กฐ๊ฑด
String orderCondition = request.getParameter("boardOrderCondition");
System.out.println("๋ฐฑ๋จ ๋์ฐฉ ์ฌ๋ถ: " + orderCondition);
// ํด๋ผ์ด์ธํธ์์ ๋ณด๋ธ ํ์ด์ง ๋ฒํธ์ ๋ณด์ฌ์ค ๋ฐ์ดํฐ ๊ฐ์
int boardPageNumber = Integer.parseInt(request.getParameter("boardPageNumber"));
int boardContentCount = Integer.parseInt(request.getParameter("boardContentCount"));
System.out.println("๋๋ณด๊ธฐ ํ์: [" + boardPageNumber + "]");
System.out.println("๋ณด์ฌ์ค ๋ฐ์ดํฐ ์: [" + boardContentCount + "]");
// View AJAX ์์
$.ajax({
url: "/BoardComboOrderServlet",
method: "GET",
data: {
boardOrderCondition: "ORDERUPTODATE", // ์ต์ ์ ์ ๋ ฌ
boardPageNumber: 1,
boardContentCount: 10
},
success: function(response) {
console.log(response); // ์๋ฒ์์ ๋ฐ์ JSON ๋ฐ์ดํฐ
}
});
2๏ธโฃ ํ์ด์ง๋ค์ด์ ์ฒ๋ฆฌ – ์์ ์ธ๋ฑ์ค ๊ณ์ฐ
View์์ ํ์ฌ ํ์ด์ง ๋ฒํธ์ ํ ํ์ด์ง์ ๋ณด์ฌ์ค ๋ฐ์ดํฐ ๊ฐ์๋ฅผ ์ ์ก, ์๋ฒ๋ startIndex๋ฅผ ๊ณ์ฐํ์ฌ ์ ์ ํ ๋ฐ์ดํฐ ๋ฒ์๋ฅผ ์ค์
// ํ์ด์ง๋ค์ด์
์ ์ํ ์์ ์ธ๋ฑ์ค ๊ณ์ฐ
int startIndex = (boardPageNumber - 1) * boardContentCount;
System.out.println("์์ ์ธ๋ฑ์ค ๋ฒํธ: [" + startIndex + "]");
• ๋๋ณด๊ธฐ ๋ฒํผ์ ๋๋ฅผ ๋๋ง๋ค ๋ค์ ํ์ด์ง์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋๋ก ๊ตฌํ
3๏ธโฃ ๋ฐ์ดํฐ ์กฐํ ๋ฐ JSON ๋ณํ
DB์์ ๊ฐ์ ธ์จ ๋ฐ์ดํฐ๋ฅผ JSON ํ์์ผ๋ก ๋ณํํ์ฌ ํด๋ผ์ด์ธํธ์ ์๋ต
BoardComboDAO boardComboDAO = new BoardComboDAO();
ArrayList<BoardComboDTO> boardComboDatas = boardComboDAO.selectAll(boardComboDTO);
if (boardComboDatas == null) {
boardComboDatas = new ArrayList<>();
}
JSONArray boardComboArray = new JSONArray();
for (BoardComboDTO boardCombo : boardComboDatas) {
JSONObject boardComboObject = new JSONObject();
boardComboObject.put("boardComboNumber", boardCombo.getBoardComboNumber());
boardComboObject.put("memberName", boardCombo.getMemberName());
boardComboObject.put("boardComboTitle", boardCombo.getBoardComboTitle());
boardComboObject.put("boardComboViewCount", boardCombo.getBoardComboViewCount());
boardComboObject.put("boardComboLikedCount", boardCombo.getBoardComboLikedCount());
boardComboObject.put("boardComboRegisterDate", boardCombo.getBoardComboRegisterDate().toString());
boardComboArray.add(boardComboObject);
}
// JSON ๋ฐ์ดํฐ ์๋ต
response.getWriter().write(boardComboArray.toJSONString());
// View๊ฐ ๋ฐ๋ JSON ์๋ต
[
{
"boardComboNumber": 1,
"memberName": "ํ๊ธธ๋",
"boardComboTitle": "์ค๋์ ์ถ์ฒ ์กฐํฉ",
"boardComboViewCount": 150,
"boardComboLikedCount": 23,
"boardComboRegisterDate": "2025-03-30 14:25:00"
},
{
"boardComboNumber": 2,
"memberName": "์ด์์ ",
"boardComboTitle": "์ต๊ณ ์ ๊ฐ์ฑ๋น ์ฝค๋ณด",
"boardComboViewCount": 98,
"boardComboLikedCount": 10,
"boardComboRegisterDate": "2025-03-29 10:10:00"
}
]
โจ ๊ฐ์ ํ ๊ธฐ๋ ํจ๊ณผ
โ ๋น๋๊ธฐ ๋ฐฉ์์ผ๋ก UX ํฅ์
• ํ์ด์ง ์๋ก๊ณ ์นจ ์์ด AJAX ์์ฒญ์ผ๋ก ๋น ๋ฅด๊ฒ ๋ฐ์ดํฐ ๋ก๋ ๊ฐ๋ฅ
• ๋๋ณด๊ธฐ ๋ฒํผ ํด๋ฆญ ์ ์ถ๊ฐ ๋ฐ์ดํฐ ๋ถ๋ฌ์ค๊ธฐ
โ ์ ์ง๋ณด์์ฑ๊ณผ ํ์ฅ์ฑ ์ฆ๊ฐ
• ์ ๋ ฌ ์กฐ๊ฑด์ด ์ถ๊ฐ๋ ๊ฒฝ์ฐ, if-else ๊ตฌ๋ฌธ๋ง ์ถ๊ฐํ๋ฉด ์๋ก์ด ์ ๋ ฌ ๋ฐฉ์ ์ถ๊ฐ ๊ฐ๋ฅ
• JSON ํฌ๋งท์ ์ฌ์ฉํ์ฌ ๋ค์ํ ํด๋ผ์ด์ธํธ์ ์ฐ๋ ๊ฐ๋ฅ
โ ์๋ฒ ๋ถํ ๊ฐ์
• ํ์ํ ๋ฐ์ดํฐ๋ง ๊ฐ์ ธ์ค๋ ํ์ด์ง๋ค์ด์ ์ฒ๋ฆฌ๋ฅผ ํตํด ๋ถํ์ํ DB ์ฟผ๋ฆฌ ์คํ ๋ฐฉ์ง
• ํด๋ผ์ด์ธํธ์์ ํ์ํ ๋ถ๋ถ๋ง ์์ฒญํ์ฌ ๋ถํ์ํ ํธ๋ํฝ ๊ฐ์
๐ ๊ฒฐ๋ก : ๋น๋๊ธฐ ๋ฐฉ์์ผ๋ก ํจ์จ์ ์ธ ๊ฒ์ํ ์ ๋ ฌ ๊ตฌํ
์๋ธ๋ฆฟ์ ํ์ฉํ์ฌ ๋น๋๊ธฐ ๊ฒ์ํ ์ ๋ ฌ๊ณผ ํ์ด์ง ๊ธฐ๋ฅ์ ๊ตฌํ
๋น๋๊ธฐ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ฌ์ฉ์ ๊ฒฝํ(UX)์ ๊ฐ์ , ์๋ฒ ๋ถํ ๊ฐ์, ์ ์ง๋ณด์ ์ฉ์ด
๋ ์ต์ ํ๋ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์๋๋ฅผ ๊ฐ์ ํ๋ ๋ฐฉ๋ฒ ๊ณ ๋ฏผ