** ๐Ÿ“ŒServlet ๊ธฐ์ดˆ ์™„์ „ ์ •๋ฆฌ**

JSP์™€ ํ•จ๊ป˜ ์›น์‚ฌ์ดํŠธ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ํ•ต์‹ฌ ๋กœ์ง ์ฒ˜๋ฆฌ์ž

doGet, doPost, URL ๋งคํ•‘, ์‹ค์ „ ์˜ˆ์ œ์™€ ๊ธฐ์ˆ  ๋ฉด์ ‘๊นŒ์ง€ ์ปค๋ฒ„!


๐Ÿงฉ ๋ชฉ์ฐจ

  1. Servlet์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€?
  2. JSP์™€ Servlet์˜ ์ฐจ์ด
  3. Servlet์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ
  4. doGet() vs doPost() ์ฐจ์ด
  5. Servlet URL ๋งคํ•‘ ๋ฐฉ๋ฒ•
  6. ์‹ค์ „ ์˜ˆ์ œ (ํผ ์ž…๋ ฅ โ†’ Servlet ์ฒ˜๋ฆฌ)
  7. ๊ธฐ์ˆ  ๋ฉด์ ‘ ๋Œ€๋น„ ์š”์•ฝ
  8. ๋งˆ๋ฌด๋ฆฌ ์ •๋ฆฌ + Notion ์ž‘์„ฑ ํŒ

โœ… 1. Servlet์ด๋ž€?

ํ•ญ๋ชฉ ์„ค๋ช…
์ •์˜ Java ์ฝ”๋“œ๋กœ ์ž‘์„ฑ๋œ ์›น ์š”์ฒญ ์ฒ˜๋ฆฌ ์ „๋‹ด ํด๋ž˜์Šค
์—ญํ•  ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ(Request)์„ ๋ฐ›์•„ โ†’ ์ฒ˜๋ฆฌ โ†’ ์‘๋‹ต(Response) ๋ฐ˜ํ™˜
์‚ฌ์šฉ ์œ„์น˜ JSP์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ (JSP๋Š” View, Servlet์€ Controller)

โœ… 2. JSP vs Servlet ์ฐจ์ด์ 

ํ•ญ๋ชฉ JSP Servlet
์œ„์น˜ View (์ถœ๋ ฅ์šฉ) Controller (์ฒ˜๋ฆฌ์šฉ)
์ฝ”๋“œ HTML ์•ˆ์— Java ์‚ฝ์ž… Java ์•ˆ์— HTML ์ƒ์„ฑ
์‚ฌ์šฉ ๋ชฉ์  ํ™”๋ฉด ๊ตฌ์„ฑ, ์ถœ๋ ฅ ๋‹ด๋‹น ์ž…๋ ฅ๊ฐ’ ์ฒ˜๋ฆฌ, ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง

โœ… 3. Servlet์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ

@WebServlet("/hello") // URL ๋งคํ•‘
public class HelloServlet extends HttpServlet {
  protected void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {

    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();
    out.println("<h1>Hello Servlet!</h1>");
  }
}

โœ… 4. doGet() vs doPost() ์ฐจ์ด

ํ•ญ๋ชฉ doGet() doPost()
์‚ฌ์šฉ ์‹œ์  ์ฃผ์†Œ ์ง์ ‘ ์ž…๋ ฅ, ๋งํฌ ํด๋ฆญ Form ์ „์†ก (method=โ€postโ€)
๋ณด์•ˆ์„ฑ ๋‚ฎ์Œ (URL์— ๋…ธ์ถœ๋จ) ๋†’์Œ (๋ณธ๋ฌธ์— ์ˆจ๊ฒจ์ง)
์šฉ๋„ ์กฐํšŒ, ๊ฒ€์ƒ‰ ๋กœ๊ทธ์ธ, ํšŒ์›๊ฐ€์ž…, ๋ฏผ๊ฐ ๋ฐ์ดํ„ฐ

๐Ÿง  Servlet์€ get ์š”์ฒญ โ†’ doGet(), post ์š”์ฒญ โ†’ doPost() ์ž๋™ ํ˜ธ์ถœ๋จ


โœ… 5. URL ๋งคํ•‘ ๋ฐฉ๋ฒ• (์–ด๋…ธํ…Œ์ด์…˜ ๊ธฐ๋ฐ˜)

@WebServlet("/save") // ์‚ฌ์šฉ์ž๊ฐ€ /save ๋กœ ์ ‘๊ทผ ์‹œ ์‹คํ–‰๋จ
public class SaveServlet extends HttpServlet { ... }

๐Ÿงฉ ๋‹ค์–‘ํ•œ ๋งคํ•‘ ์˜ˆ์‹œ

๋งคํ•‘ ์ฃผ์†Œ ์˜๋ฏธ
/hello /hello๋กœ ์š”์ฒญ ์‹œ ์‹คํ–‰
/user/login ๊ณ„์ธตํ˜• URL๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
/board/write.do ํ™•์žฅ์ž ํฌํ•จ ๋งคํ•‘๋„ ๊ฐ€๋Šฅ

โœ… 6. ์‹ค์ „ ์˜ˆ์ œ ํ๋ฆ„ ๐ŸŽฏ

๐Ÿ“„ form.jsp (์‚ฌ์šฉ์ž ์ž…๋ ฅ ํ™”๋ฉด)

<form action="save" method="post">
  ์ด๋ฆ„: <input type="text" name="name" /><br />
  <input type="submit" value="์ „์†ก" />
</form>

๐Ÿ“„ SaveServlet.java (ํผ ์ฒ˜๋ฆฌ Servlet)

@WebServlet("/save")
public class SaveServlet extends HttpServlet {
  protected void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {

    request.setCharacterEncoding("UTF-8");
    String name = request.getParameter("name");

    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();
    out.println("<h2>์ž…๋ ฅํ•œ ์ด๋ฆ„: " + name + "</h2>");
  }
}

โœ… ์‹คํ–‰ ํ๋ฆ„

  1. ์‚ฌ์šฉ์ž๊ฐ€ form.jsp์—์„œ ์ด๋ฆ„ ์ž…๋ ฅ ํ›„ ์ „์†ก
  2. /save ์ฃผ์†Œ๋กœ ์š”์ฒญ โ†’ SaveServlet์˜ doPost() ์‹คํ–‰
  3. ์ž…๋ ฅ๊ฐ’ ์ฒ˜๋ฆฌ ํ›„ ๊ฒฐ๊ณผ HTML ์ถœ๋ ฅ

โœ… 7. ๊ธฐ์ˆ  ๋ฉด์ ‘ ๋Œ€๋น„ ํ•ต์‹ฌ ์š”์•ฝ

์งˆ๋ฌธ ์š”์  ์š”์•ฝ
Servlet์ด๋ž€? ์›น ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” Java ํด๋ž˜์Šค (Controller ์—ญํ• )
JSP์™€์˜ ์ฐจ์ด๋Š”? JSP๋Š” ์ถœ๋ ฅ, Servlet์€ ๋กœ์ง ์ฒ˜๋ฆฌ
doGet vs doPost ์ฐจ์ด๋Š”? doGet์€ URL ๋…ธ์ถœ, doPost๋Š” ๋ณด์•ˆ์„ฑ ๋†’์Œ
URL ๋งคํ•‘์€ ์–ด๋–ป๊ฒŒ ํ•˜๋‚˜์š”? @WebServlet("/์ฃผ์†Œ") ์–ด๋…ธํ…Œ์ด์…˜ ์‚ฌ์šฉ

โœ… 8. ๋งˆ๋ฌด๋ฆฌ ์š”์•ฝ ๐Ÿง