** ๐ JSP + Ajax ์ฐ๋ **
JSP์์ ๋น๋๊ธฐ Ajax ์์ฒญ์ ๋ฐ์ JSON์ผ๋ก ์๋ตํ๋ ์ ์ฒด ํ๋ฆ
์๋ฒ โ ํด๋ผ์ด์ธํธ ํต์ ๊ตฌ์กฐ + ์ค์ ์์ ์์ ์ ๋ฆฌ
๐งฉ ๋ชฉ์ฐจ
- ๊ฐ๋ ์ ๋ฆฌ
- ์ ์ฒด ํ๋ฆ๋
- Ajax ๊ตฌ์ฑ์์ ํต์ฌ
- ํด๋ผ์ด์ธํธ(fetch) โ ์๋ฒ(JSP) ์์ฒญ ๊ตฌ์กฐ
- ์๋ฒ(JSP) โ JSON ์๋ต ์ฒ๋ฆฌ
- ์ค์ ์์ (๋๊ธ ๋ชฉ๋ก ์กฐํ)
- ๊ธฐ์ ๋ฉด์ ๋๋น ํต์ฌ ์์ฝ
- ๋ง๋ฌด๋ฆฌ ์์ฝ + Notion ์์ฑ ํ
โ 1. ๊ฐ๋ ์ ๋ฆฌ
ํญ๋ชฉ | ์ค๋ช |
---|---|
Ajax | ํ์ด์ง ์ ์ฒด ์๋ก๊ณ ์นจ ์์ด ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ฐฉ์ (Asynchronous JS + XML) |
JSON | ์๋ฒ์ ํด๋ผ์ด์ธํธ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋ ์ฌ์ฉํ๋ ๋ํ์ ์ธ ๊ฒฝ๋ ๋ฐ์ดํฐ ํฌ๋งท |
JSP ์ญํ | ํด๋ผ์ด์ธํธ ์์ฒญ ์ฒ๋ฆฌ โ DB ์กฐํ โ JSON ์๋ต ์์ฑ |
โ 2. ์ ์ฒด ํ๋ฆ๋
[1] fetch() โ /getComment.jsp ๋น๋๊ธฐ ์์ฒญ
โฌ
[2] JSP์์ DB ์กฐํ ํ JSON ๋ฐฐ์ด ์์ฑ
โฌ
[3] ํด๋ผ์ด์ธํธ fetch().then(result โ ํ๋ฉด ์ถ๋ ฅ)
โ 3. Ajax ๊ตฌ์ฑ์์ ํต์ฌ
์์ | ์ค๋ช |
---|---|
์์ฒญ ๋ฐฉ์ | fetch() ๋๋ XMLHttpRequest (POST , GET ) |
์๋ต ํ์ | text , HTML , JSON ๋ฑ |
์๋ฒ ์๋ต ์ฒ๋ฆฌ | .then(res => res.json()) , .then(res => res.text()) |
โ 4. ํด๋ผ์ด์ธํธ ์์ฒญ ๊ตฌ์กฐ (fetch)
fetch("getComment.jsp")
.then(response => response.json())
.then(data => {
console.log("๋ฐ์ ๋๊ธ ๋ชฉ๋ก:", data);
});
fetch()
๋ ๊ธฐ๋ณธ์ ์ผ๋ก GET ๋ฐฉ์response.json()
์ผ๋ก ์๋ต์ JSON์ผ๋ก ๋ณํ
โ 5. ์๋ฒ ์๋ต ๊ตฌ์กฐ (JSP โ JSON ์๋ต)
๐ getComment.jsp
<%@ page contentType="application/json; charset=UTF-8" %>
<%@ page import="java.sql.*, java.util.*, org.json.simple.JSONArray, org.json.simple.JSONObject" %>
<%
JSONArray arr = new JSONArray();
Connection conn = DB.getConnection();
String sql = "SELECT * FROM comments ORDER BY id DESC";
PreparedStatement ps = conn.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
while (rs.next()) {
JSONObject obj = new JSONObject();
obj.put("id", rs.getInt("id"));
obj.put("content", rs.getString("content"));
obj.put("regdate", rs.getString("regdate"));
arr.add(obj);
}
conn.close();
out.print(arr.toJSONString()); // JSON ๋ฐฐ์ด๋ก ์๋ต
%>
โ ์ ์ฝ๋๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด json-simple ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ lib ํด๋์ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
โ 6. ์ค์ ์์ : ๋๊ธ ๋ชฉ๋ก ๋ถ๋ฌ์ค๊ธฐ
๐ index.jsp
<button id="loadBtn">๋๊ธ ๋ถ๋ฌ์ค๊ธฐ</button>
<ul id="commentList"></ul>
<script>
document.getElementById("loadBtn").addEventListener("click", function () {
fetch("getComment.jsp")
.then(response => response.json())
.then(list => {
const ul = document.getElementById("commentList");
ul.innerHTML = "";
list.forEach(comment => {
const li = document.createElement("li");
li.innerText = comment.content + " (" + comment.regdate + ")";
ul.appendChild(li);
});
});
});
</script>
โ 7. ๊ธฐ์ ๋ฉด์ ๋๋น ํต์ฌ ์์ฝ ๐ฌ
์ง๋ฌธ | ์์ ์ ๋ฆฌ |
---|---|
Ajax๋? | ํ์ด์ง๋ฅผ ์๋ก๊ณ ์นจํ์ง ์๊ณ ์๋ฒ์ ํต์ ํ๋ ๋ฐฉ์ |
fetch์ JSP๋ ์ด๋ป๊ฒ ์ฐ๋๋๋์? | JS์์ fetch() โ JSP์์ DB ์ฒ๋ฆฌ ํ JSON ์๋ต |
JSON์ด๋? | ๋ฐ์ดํฐ๋ฅผ ํค-๊ฐ ํ์์ผ๋ก ์ฃผ๊ณ ๋ฐ๋ ๊ฒฝ๋ ํฌ๋งท |
JSP์์ JSON ์๋ต์ ๋ง๋ค๋ ค๋ฉด? | JSONArray + JSONObject ์กฐํฉ ์ฌ์ฉ + contentType ์ค์ |
โ 8. ๋ง๋ฌด๋ฆฌ ์์ฝ ๐ง
- ๐ Ajax ํ๋ฆ: fetch() โ JSP โ DB โ JSON ์๋ต โ JS ์ถ๋ ฅ
- ๐ JSP๋ ์๋ฒ ์ธก์์ DB ์กฐํ ํ JSON์ ์์ฑํ๋ ์ญํ
- ๐ฆ ํด๋ผ์ด์ธํธ๋
.then(response.json())
์ผ๋ก ์๋ต ์ฒ๋ฆฌ - โ ์ค๋ฌด์์๋ ๋๊ธ, ์๋ฆผ, ๊ฒ์ ์๋์์ฑ ๋ฑ์ ํ์ ์ฌ์ฉ๋จ