** πJavaScript μ¬ν **
μ€μ μΉ μλΉμ€μ λ°λμ νμν JS ν΅μ¬ 3μμ:
π― μ΄λ²€νΈ μ²λ¦¬ + π¨ DOM μ‘°μ + π Ajax ν΅μ
μμ μ 리 + μ€λ¬΄ μμ + λ©΄μ λλΉ ν¬ν¨
π§© λͺ©μ°¨
- ν΅μ¬ κΈ°μ 3μμ κ°μ
- μ΄λ²€νΈ μ²λ¦¬λ?
- DOM μ‘°μμ΄λ?
- Ajax ν΅μ μ΄λ?
- μ€μ μμ : λκΈ μ
λ ₯ β μλ² μ μ‘
- λ©΄μ λλΉ ν΅μ¬ μμ½
- λ§λ¬΄λ¦¬ μμ½ + Notion μμ± ν
β
1. ν΅μ¬ κΈ°μ 3μμ κ°μ
κΈ°μ |
μ€λͺ
|
μ£Όμ λ©μλ |
π± μ΄λ²€νΈ μ²λ¦¬ |
μ¬μ©μ λμμ λ°μ (click, input λ±) |
.addEventListener() |
π DOM μ‘°μ |
HTML μμ μμ±/μμ /μμ |
.getElementById() , .innerHTML , .appendChild() |
π Ajax |
μλ²μ νμ΄μ§ μλ‘κ³ μΉ¨ μμ΄ λ°μ΄ν° μ£Όκ³ λ°κΈ° |
XMLHttpRequest , fetch() |
β
2. μ΄λ²€νΈ μ²λ¦¬λ?
νλͺ© |
μ€λͺ
|
μ μ |
λ²νΌ ν΄λ¦, μ
λ ₯ λ± μ¬μ©μ νλμ λ°μνλ λ‘μ§ |
μ¬μ© λͺ©μ |
μ¬μ©μ μΈν°νμ΄μ€(UI) λ°μ μ²λ¦¬ |
μ£Όμ μ΄λ²€νΈ |
click , input , submit , keydown λ± |
π μμ
<button id="btn">λλ¬λ³΄μΈμ</button>
<script>
document.getElementById("btn").addEventListener("click", function() {
alert("λ²νΌ ν΄λ¦λ¨!");
});
</script>
β
3. DOM μ‘°μμ΄λ?
νλͺ© |
μ€λͺ
|
μ μ |
JSλ‘ HTML μμλ₯Ό μ ννκ±°λ λ³κ²½νλ νμ |
μ¬μ© λͺ©μ |
λμ μΌλ‘ μμ μΆκ°/μμ /μμ κ°λ₯ |
κ΄λ ¨ API |
getElementById() , querySelector() , createElement() , innerHTML , value λ± |
π μμ
<div id="output"></div>
<script>
document.getElementById("output").innerHTML = "<strong>λ³κ²½λ ν
μ€νΈ!</strong>";
β
4. Ajax ν΅μ μ΄λ?
νλͺ© |
μ€λͺ
|
μ μ |
μΉ νμ΄μ§ μ 체 μλ‘κ³ μΉ¨ μμ΄ μλ²μ λ°μ΄ν° μ£Όκ³ λ°λ κΈ°μ |
κΈ°μ |
XMLHttpRequest , fetch() , jQuery.ajax() λ± |
μ¬μ© μ |
λκΈ λ±λ‘, κ²μ μλμμ±, μ’μμ μ²λ¦¬ λ± |
π fetch()λ₯Ό μ¬μ©ν Ajax μμ
fetch("server.jsp", {
method: "POST",
headers: {
"Content-Type": "application/x-www-form-urlencoded"
},
body: "content=λκΈλ΄μ©"
})
.then(response => response.text())
.then(result => {
console.log("μλ² μλ΅:", result);
});
β
5. μ€μ μμ : λκΈ μ
λ ₯ β Ajax μλ² μ μ‘
<input type="text" id="comment" />
<button id="sendBtn">λκΈ λ±λ‘</button>
<ul id="commentList"></ul>
<script>
document.getElementById("sendBtn").addEventListener("click", function() {
const content = document.getElementById("comment").value;
fetch("saveComment.jsp", {
method: "POST",
headers: {
"Content-Type": "application/x-www-form-urlencoded"
},
body: "content=" + encodeURIComponent(content)
})
.then(response => response.text())
.then(result => {
const li = document.createElement("li");
li.innerText = content;
document.getElementById("commentList").appendChild(li);
document.getElementById("comment").value = "";
});
});
</script>
<%@ page import="java.sql.*" %>
<%
String content = request.getParameter("content");
Connection conn = DB.getConnection();
String sql = "INSERT INTO comments(content) VALUES(?)";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, content);
ps.executeUpdate();
conn.close();
out.print("success");
%>
β
6. κΈ°μ λ©΄μ λλΉ ν΅μ¬ μμ½ π¬
μ§λ¬Έ |
μμ μ 리 |
μ΄λ²€νΈλ? |
μ¬μ©μμ νλ(ν΄λ¦, μ
λ ₯ λ±)μ JSκ° λ°μνλ ꡬ쑰 |
DOM μ‘°μμ΄λ? |
JSλ‘ HTML μμλ₯Ό μ μ΄νλ κΈ°μ |
Ajaxλ? |
νμ΄μ§ μλ‘κ³ μΉ¨ μμ΄ μλ²μ λ°μ΄ν° μ£Όκ³ λ°λ κΈ°μ |
fetch() μ₯μ μ? |
κ°κ²°νκ³ Promise κΈ°λ°μΌλ‘ λΉλκΈ° μ²λ¦¬ νΈλ¦¬ν¨ |
β
7. λ§λ¬΄λ¦¬ μμ½ π§
- π± μ΄λ²€νΈ μ²λ¦¬λ μ¬μ©μμμ μΈν°νμ΄μ€ ν΅μ¬
- π DOM μ‘°μμ λμ UI μμ± λ° λ°μμ λ΄λΉ
- π Ajax ν΅μ μ μλ²μ λΉ λ₯΄κ² λ°μ΄ν° κ΅ννλ ν΅μ¬ κΈ°μ
- β
3κ°μ§ κΈ°μ μ μλ‘ μ°κ²°ν΄μ μ¬μ©λ¨ (ex. λκΈ μμ€ν
)