Search
Duplicate

์š”์ฒญ ๋ฉ”์†Œ๋“œ

โ€ข
doGet()
โ€ข
doPost()
โ€ข
doPut()
โ€ข
doDelete()

HTTP ๋ฉ”์†Œ๋“œ ์ƒ์„ธ ์„ค๋ช…

๋ฉ”์†Œ๋“œ
์„œ๋ธ”๋ฆฟ ๋ฉ”์†Œ๋“œ
์šฉ๋„
๋ฐ์ดํ„ฐ ์ „๋‹ฌ
๋ณธ๋ฌธ(body)
ํŠน์ง•
GET
doGet()
์กฐํšŒ
URL ํŒŒ๋ผ๋ฏธํ„ฐ
X
URL ๊ธธ์ด์ œํ•œ, ๋ฏผ๊ฐํ•œ ์ •๋ณด ์ „๋‹ฌ ๊ธˆ์ง€
POST
doPost()
๋“ฑ๋ก
๋ณธ๋ฌธ์— ํฌํ•จ
O
form ์š”์ฒญ(๋“ฑ๋ก ์š”์ฒญ), ๋กœ๊ทธ์ธ
PUT
doPut()
์ˆ˜์ •
๋ณธ๋ฌธ์— ํฌํ•จ
O
๋น„๋™๊ธฐ ์š”์ฒญ
DELETE
doDelete()
์‚ญ์ œ
URL ํŒŒ๋ผ๋ฏธํ„ฐ
X (์ผ๋ถ€ํ—ˆ์šฉ)
์‚ญ์ œ ์š”์ฒญ ์ „ ํ™•์ธ ์ ˆ์ฐจ ํ•„์š”

MethodServlet ์ฝ”๋“œ ์˜ˆ์ œ

GET ๋ฉ”์†Œ๋“œ

URL ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ „๋‹ฌ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค.
// GET // - /method?name=๊น€์กฐ์€&age=20 // - ์š”์ฒญ ํŒŒ๋ผ๋ฏธํ„ฐ : name, age protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { // ์š”์ฒญ String name = request.getParameter("name"); int age = Integer.parseInt(request.getParameter("age")); System.out.println("name : " + name); System.out.println("age : " + age); // ์‘๋‹ต response.setContentType("text/html; charset=UTF-8"); PrintWriter writer = response.getWriter(); writer.println("<h1>name : " + name + "</h1>"); writer.println("<h1>age : " + age + "</h1>"); writer.flush(); // ์ถœ๋ ฅ ๋ฐ”๋กœ ๋ณด๋‚ด๊ธฐ } catch (Exception e) { System.err.println("ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค."); } }
Java
๋ณต์‚ฌ
์„ค๋ช…: request.getParameter()๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ URL ์ฟผ๋ฆฌ ํŒŒ๋ผ๋ฏธํ„ฐ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

POST ๋ฉ”์†Œ๋“œ

ํผ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณธ๋ฌธ(body)์— ํฌํ•จํ•˜์—ฌ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.
// POST // - /method // - body : username, password // * // Content-Type : application/x-www-form-urlencoded ๊ฒฝ์šฐ ํผ์š”์ฒญ์œผ๋กœ ์ธ์‹ํ•˜๊ณ  // request.getParameter()๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ๋ณธ๋ฌธ(body)์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค. // * // Content-Type : multipart/form-data ์˜ ๊ฒฝ์šฐ๋Š” // request.getParameter() ๋กœ ์ „๋‹ฌ๋œ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์—†๋‹ค!!! // request.getPart("file") ๋กœ ์ „๋‹ฌ๋œ ํŒŒ์ผ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€์•ผํ•œ๋‹ค. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // ์š”์ฒญ String username = request.getParameter("username"); String password = request.getParameter("password"); System.out.println("username : " + username); System.out.println("password : " + password); // ์‘๋‹ต response.setContentType("text/html; charset=UTF-8"); PrintWriter writer = response.getWriter(); writer.println("<h1>์•„์ด๋”” : " + username + "</h1>"); writer.println("<h1>๋น„๋ฐ€๋ฒˆํ˜ธ : " + password + "</h1>"); }
Java
๋ณต์‚ฌ
์„ค๋ช…: Content-Type์ด application/x-www-form-urlencoded์ธ ๊ฒฝ์šฐ request.getParameter()๋กœ ๋ณธ๋ฌธ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. multipart/form-data์˜ ๊ฒฝ์šฐ์—๋Š” request.getPart()๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

PUT ๋ฉ”์†Œ๋“œ

JSON ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณธ๋ฌธ์— ํฌํ•จํ•˜์—ฌ ์ˆ˜์ • ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
// PUT // - /method // - ์ปจํ…์ธ  ํƒ€์ž… : JSON // - ์š”์ฒญ ๋ณธ๋ฌธ(body) // {"no" : "1", "title" : "์ œ๋ชฉ", "content" : "๋‚ด์šฉ"} protected void doPut(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // ์š”์ฒญ (JSON -> Map) ObjectMapper mapper = new ObjectMapper(); ServletInputStream sis = request.getInputStream(); Map<String, Object> map = mapper.readValue(sis, new TypeReference<Map<String, Object>>() {}); String no = (String) map.get("no"); String title = (String) map.get("title"); String content = (String) map.get("content"); System.out.println("no : " + no); System.out.println("title : " + title); System.out.println("content : " + content); // ์‘๋‹ต response.setContentType("text/html; charset=UTF-8"); PrintWriter writer = response.getWriter(); writer.println("<h1>no : " + no + "</h1>"); writer.println("<h1>title : " + title + "</h1>"); writer.println("<h1>content : " + content + "</h1>"); }
Java
๋ณต์‚ฌ
์„ค๋ช…: JSON ๋ฐ์ดํ„ฐ๋ฅผ ํŒŒ์‹ฑํ•˜๊ธฐ ์œ„ํ•ด Jackson ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ObjectMapper๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. request.getInputStream()์œผ๋กœ ๋ณธ๋ฌธ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ต๋‹ˆ๋‹ค.

DELETE ๋ฉ”์†Œ๋“œ

URL ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ „๋‹ฌ๋œ ์‹๋ณ„์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ญ์ œ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
// DELETE // - /method?no=10 protected void doDelete(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String noString = request.getParameter("no"); int no = 0; try { no = Integer.parseInt(noString); } catch (Exception e) { System.err.println("์œ ํšจํ•˜์ง€ ์•Š์€ ๋ฒˆํ˜ธ์ž…๋‹ˆ๋‹ค."); } response.setContentType("text/plain; charset=UTF-8"); PrintWriter writer = response.getWriter(); writer.println(no + "๋ฒˆ ๊ธ€์„ ์‚ญ์ œํ•˜์˜€์Šต๋‹ˆ๋‹ค."); }
Java
๋ณต์‚ฌ
์„ค๋ช…: URL ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์‚ญ์ œํ•  ๋Œ€์ƒ์˜ ๋ฒˆํ˜ธ๋ฅผ ๋ฐ›์•„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์‚ญ์ œ ์š”์ฒญ ์ „ ์‚ฌ์šฉ์ž์—๊ฒŒ ํ™•์ธ ์ ˆ์ฐจ๋ฅผ ๊ฑฐ์น˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค.

์ „์ฒด ์„œ๋ธ”๋ฆฟ ํด๋ž˜์Šค

package method; import java.io.IOException; import java.io.PrintWriter; import java.util.Map; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import jakarta.servlet.ServletException; import jakarta.servlet.ServletInputStream; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; @WebServlet("/method") public class MethodServlet extends HttpServlet { private static final long serialVersionUID = 1L; // GET protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { String name = request.getParameter("name"); int age = Integer.parseInt(request.getParameter("age")); System.out.println("name : " + name); System.out.println("age : " + age); response.setContentType("text/html; charset=UTF-8"); PrintWriter writer = response.getWriter(); writer.println("<h1>name : " + name + "</h1>"); writer.println("<h1>age : " + age + "</h1>"); writer.flush(); } catch (Exception e) { System.err.println("ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค."); } } // POST protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("username"); String password = request.getParameter("password"); System.out.println("username : " + username); System.out.println("password : " + password); response.setContentType("text/html; charset=UTF-8"); PrintWriter writer = response.getWriter(); writer.println("<h1>์•„์ด๋”” : " + username + "</h1>"); writer.println("<h1>๋น„๋ฐ€๋ฒˆํ˜ธ : " + password + "</h1>"); } // PUT protected void doPut(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ObjectMapper mapper = new ObjectMapper(); ServletInputStream sis = request.getInputStream(); Map<String, Object> map = mapper.readValue(sis, new TypeReference<Map<String, Object>>() {}); String no = (String) map.get("no"); String title = (String) map.get("title"); String content = (String) map.get("content"); System.out.println("no : " + no); System.out.println("title : " + title); System.out.println("content : " + content); response.setContentType("text/html; charset=UTF-8"); PrintWriter writer = response.getWriter(); writer.println("<h1>no : " + no + "</h1>"); writer.println("<h1>title : " + title + "</h1>"); writer.println("<h1>content : " + content + "</h1>"); } // DELETE protected void doDelete(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String noString = request.getParameter("no"); int no = 0; try { no = Integer.parseInt(noString); } catch (Exception e) { System.err.println("์œ ํšจํ•˜์ง€ ์•Š์€ ๋ฒˆํ˜ธ์ž…๋‹ˆ๋‹ค."); } response.setContentType("text/plain; charset=UTF-8"); PrintWriter writer = response.getWriter(); writer.println(no + "๋ฒˆ ๊ธ€์„ ์‚ญ์ œํ•˜์˜€์Šต๋‹ˆ๋‹ค."); } }
Java
๋ณต์‚ฌ