** πŸ“ŒJavaScript 심화 **

μ‹€μ „ μ›Ή μ„œλΉ„μŠ€μ— λ°˜λ“œμ‹œ ν•„μš”ν•œ JS 핡심 3μš”μ†Œ:

🎯 이벀트 처리 + 🎨 DOM μ‘°μž‘ + 🌐 Ajax 톡신

μ™„μ „ 정리 + 싀무 μ˜ˆμ‹œ + λ©΄μ ‘ λŒ€λΉ„ 포함


🧩 λͺ©μ°¨

  1. 핡심 기술 3μš”μ†Œ κ°œμš”
  2. 이벀트 μ²˜λ¦¬λž€?
  3. DOM μ‘°μž‘μ΄λž€?
  4. Ajax ν†΅μ‹ μ΄λž€?
  5. μ‹€μ „ 예제: λŒ“κΈ€ μž…λ ₯ β†’ μ„œλ²„ 전솑
  6. λ©΄μ ‘ λŒ€λΉ„ 핡심 μš”μ•½
  7. 마무리 μš”μ•½ + 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 μ„œλ²„ 전솑


πŸ“„ comment.jsp

<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>

πŸ“„ saveComment.jsp (μ„œλ²„ μ €μž₯ 처리)

<%@ 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. 마무리 μš”μ•½ πŸ§