[์Šคํ”„๋ง MVC] - 3. HTTP ์š”์ฒญ ๋ฐ์ดํ„ฐ ( GET / POST / API )

2023. 2. 12. 13:47ยทSpring/Spring MVC

 

HTTP ์š”์ฒญ ๋ฐ์ดํ„ฐ

 

 

HTTP ์š”์ฒญ ๋ฉ”์‹œ์ง€๋ฅผ ํ†ตํ•ด ํด๋ผ์ด์–ธํŠธ์—์„œ ์„œ๋ฒ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์ž.

 

์ฃผ๋กœ ๋‹ค์Œ 3๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค.

 

 

 

GET - ์ฟผ๋ฆฌ ํŒŒ๋ผ๋ฏธํ„ฐ

 

/url?username=hello&age=20


๋ฉ”์‹œ์ง€ ๋ฐ”๋”” ์—†์ด, URL์˜ ์ฟผ๋ฆฌ ํŒŒ๋ผ๋ฏธํ„ฐ์— ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•ด์„œ ์ „๋‹ฌ ์˜ˆ) ๊ฒ€์ƒ‰, ํ•„ํ„ฐ, ํŽ˜์ด์ง•๋“ฑ์—์„œ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹

 

 

 

 

POST - HTML Form

 

content-type: application/x-www-form-urlencoded


๋ฉ”์‹œ์ง€ ๋ฐ”๋””์— ์ฟผ๋ฆฌ ํŒŒ๋ฆฌ๋ฏธํ„ฐ ํ˜•์‹์œผ๋กœ ์ „๋‹ฌ username=hello&age=20 ์˜ˆ) ํšŒ์› ๊ฐ€์ž…, ์ƒํ’ˆ ์ฃผ๋ฌธ, HTML Form ์‚ฌ์šฉ

 

 

 

 

HTTP message body์— ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ๋‹ด์•„์„œ ์š”์ฒญ

 

HTTP API์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉ, JSON, XML, TEXT

 

๋ฐ์ดํ„ฐ ํ˜•์‹์€ ์ฃผ๋กœ JSON ์‚ฌ์šฉ POST, PUT, PATCH

 

 

 

HTTP ์š”์ฒญ ๋ฐ์ดํ„ฐ - GET ์ฟผ๋ฆฌ ํŒŒ๋ผ๋ฏธํ„ฐ

 

์ฟผ๋ฆฌํŒŒ๋ผ๋ฏธํ„ฐ๋Š” URL์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด ?๋ฅผ ์‹œ์ž‘์œผ๋กœ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ์ถ”๊ฐ€ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” &๋กœ ๊ตฌ๋ถ„ํ•˜๋ฉด ๋œ๋‹ค.

 

http://localhost:8080/request-param?username=hello&age=20

 

URL์˜ ์ฟผ๋ฆฌ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌ

 

request.getParameterNames().asIterator()
        .forEachRemaining(paramName -> System.out.println(paramName + "=" + request.getParameter(paramName)));

 

[์ „์ฒด ํŒŒ๋ผ๋ฏธํ„ฐ ์กฐํšŒ] - getParameterNames()

 

asIterator() : ์ˆœํšŒ ํ•˜๋Š” Iterator ๋ฅผ ๋ฆฌํ„ด 

 

forEachRemaining() : ๋ชจ๋“  ์š”์†Œ๊ฐ€ ์ฒ˜๋ฆฌ๋˜๊ฑฐ๋‚˜ ์ ์—…์—์„œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ๊นŒ์ง€ ๋‚จ์€ ๊ฐ ์š”์†Œ์— ๋Œ€ํ•ด ์ง€์ •๋œ ์ž‘์—…์„ ์ˆ˜ํ–‰

 

 

์ดํ„ฐ๋ ˆ์ดํ„ฐ(Iterator) ๋ž€?

๋”๋ณด๊ธฐ

 

์ปฌ๋ ‰์…˜์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ ‘๊ทผํ•˜๋Š”๋ฐ ์‚ฌ์šฉ

 

์ปฌ๋ ‰์…˜์— ์ €์žฅ๋œ ์š”์†Œ๋“ค์„ ์ฝ์–ด์˜ค๋Š” ๋ฐฉ๋ฒ•์„ ํ‘œ์ค€ํ™”ํ•œ ๊ฒƒ. 

 

 

asIterator() ๋ฉ”์„œ๋“œ

์ด ์—ด๊ฑฐ์— ํฌํ•จ ๋œ ์š”์†Œ๋“ค์„ ์ˆœํšŒ ํ•˜๋Š” Iterator๋ฅผ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.

 

Iterator ๋ฉ”์„œ๋“œ


boolean hasNex() ์ฝ์–ด ์˜ฌ ์š”์†Œ๊ฐ€ ๋‚จ์•„์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. ์žˆ์œผ๋ฉด true, ์—†์œผ๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
Object next() ๋‹ค์Œ ์š”์†Œ๋ฅผ ์ฝ์–ด ์˜จ๋‹ค.
next()๋ฅผ ํ˜ธ์ถœํ•˜๊ธฐ ์ „์— hasNext()๋ฅผ ํ˜ธ์ถœํ•ด์„œ ์ฝ์–ด ์˜ฌ ์š”์†Œ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ์•ˆ์ „ํ•˜๋‹ค.

 

 

Iterator ์ด๋ž‘ Enumeration ์€ ๊ฑฐ์˜ ๊ฐ™๋‹ค.

 

Iterator ์ด ์ตœ์‹  ๋ฒ„์ „์ด๊ณ , Enumeration ๊ตฌ๋ฒ„์ „์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

 

 

Iterator ์“ฐ๋Š” ๋ฐฉ๋ฒ•.

 

  • ์ปฌ๋ ‰์…˜์— iterator()๋ฅผ ํ˜ธ์ถœํ•ด์„œ iterator ๋ฅผ ๊ตฌํ˜„ํ•œ ๊ฐ์ฒด๋ฅผ ์–ป์–ด์„œ ์‚ฌ์šฉํ•œ๋‹ค.

 

List list = new ArrayList(); // ๋‹ค๋ฅธ ์ปฌ๋ ‰์…˜์œผ๋กœ ๋ณ€๊ฒฝํ•  ๋•Œ๋Š” ์ด ๋ถ€๋ถ„๋งŒ ๊ณ ์น˜๋ฉด ๋œ๋‹ค.
Iterator it = list.iterator(); // Iterator ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜.

while(it.hasNext()) { // ์ฝ์–ด์˜ฌ ์š”์†Œ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธ
		System.out.println(it.next()); // ๋‹ค์Œ ์š”์†Œ๋ฅผ ์ฝ์–ด์˜ด
}

 

 

 

 

System.out.println("[๋‹จ์ผ ํŒŒ๋ผ๋ฏธํ„ฐ ์กฐํšŒ]");
String username = request.getParameter("username");
System.out.println("username = " + username);

 

[๋‹จ์ผ ํŒŒ๋ผ๋ฏธํ„ฐ ์กฐํšŒ]  -  request.getParameter

 

 

 

System.out.println("[์ด๋ฆ„์ด ๊ฐ™์€ ๋ณต์ˆ˜ ํŒŒ๋ผ๋ฏธํ„ฐ ์กฐํšŒ]");
String[] usernames = request.getParameterValues("username");
for (String name : usernames) {
    System.out.println("name = " + name);
}

 

๋ณต์ˆ˜ ํŒŒ๋ผ๋ฏธํ„ฐ์—์„œ ๋‹จ์ผ ํŒŒ๋ผ๋ฏธํ„ฐ ์กฐํšŒ - request.getParameterValues

 

 

 

 

 

 

 

http://localhost:8080/request-param?username=hello&age=20&username=kim

 

 

 

request.getParameter() ๋Š” ํ•˜๋‚˜์˜ ํŒŒ๋ผ๋ฏธํ„ฐ ์ด๋ฆ„์— ๋Œ€ํ•ด์„œ ๋‹จ ํ•˜๋‚˜์˜ ๊ฐ’๋งŒ ์žˆ์„ ๋•Œ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

 

์ง€๊ธˆ์ฒ˜๋Ÿผ ์ค‘๋ณต์ผ ๋•Œ๋Š” request.getParameterValues() ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.


์ฐธ๊ณ ๋กœ ์ด๋ ‡๊ฒŒ ์ค‘๋ณต์ผ ๋•Œ request.getParameter() ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด request.getParameterValues() ์˜ ์ฒซ ๋ฒˆ์งธ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

 

 

HTTP ์š”์ฒญ ๋ฐ์ดํ„ฐ - POST HTML Form

 

<form action="/request-param" method="post">
    username: <input type="text" name="username" />
    age: <input type="text" name="age" />
    <button type="submit">์ „์†ก</button>
</form>

 

HTML์˜ Form์„ ์‚ฌ์šฉํ•ด์„œ ํด๋ผ์ด์–ธํŠธ์—์„œ ์„œ๋ฒ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†ก

 

content-type์€ HTTP ๋ฉ”์‹œ์ง€ ๋ฐ”๋””์˜ ๋ฐ์ดํ„ฐ ํ˜•์‹์„ ์ง€์ •ํ•œ๋‹ค.

 

 

 

content-type: application/x-www-form-urlencoded

 

ํผ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š” ํ˜•์‹์„ application/x-www-form-urlencoded

 

message body: username=hello&age=20

 

 

 


> GET URL ์ฟผ๋ฆฌ ํŒŒ๋ผ๋ฏธํ„ฐ ํ˜•์‹์œผ๋กœ ํด๋ผ์ด์–ธํŠธ์—์„œ ์„œ๋ฒ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•  ๋•Œ๋Š”

 

HTTP ๋ฉ”์‹œ์ง€ ๋ฐ”๋””๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— content-type์ด ์—†๋‹ค.

 

 


> POST HTML Form ํ˜•์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋ฉด

 

HTTP ๋ฉ”์‹œ์ง€ ๋ฐ”๋””์— ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•ด์„œ ๋ณด๋‚ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ”๋””์— ํฌํ•จ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์–ด๋–ค ํ˜•์‹์ธ์ง€ content-type์„ ๊ผญ ์ง€์ •ํ•ด์•ผ ํ•œ๋‹ค.

 

์ด๋ ‡๊ฒŒ ํผ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š” ํ˜•์‹์„ application/x-www-form-urlencoded ๋ผ ํ•œ๋‹ค.

 

 

HTTP ์š”์ฒญ ๋ฐ์ดํ„ฐ - API ๋ฉ”์‹œ์ง€ ๋ฐ”๋”” - ๋‹จ์ˆœ ํ…์ŠคํŠธ

 

HTTP message body์— ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ๋‹ด์•„์„œ ์š”์ฒญ

 

HTTP ์š”์ฒญ ๋ฐ์ดํ„ฐ์— ๋ฉ”์‹œ์ง€ ๋ฐ”๋””์— ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ์‹ค์–ด์„œ ์„œ๋ฒ„์— ์ „์†ก

 

๋จผ์ € ๊ฐ€์žฅ ๋‹จ์ˆœํ•œ ํ…์ŠคํŠธ ๋ฉ”์‹œ์ง€๋ฅผ HTTP ๋ฉ”์‹œ์ง€ ๋ฐ”๋””์— ๋‹ด์•„์„œ ์ „์†กํ•˜๊ณ , ์ฝ์–ด๋ณด์ž.

 

 

 

ServletInputStream inputStream = request.getInputStream();
String messageBody = StreamUtils.copyToString(inputStream, StandardCharsets.UTF_8);

 

HTTP ๋ฉ”์‹œ์ง€ ๋ฐ”๋””์˜ ๋ฐ์ดํ„ฐ๋ฅผ InputStream์„ ์‚ฌ์šฉํ•ด์„œ ์ง์ ‘ ์ฝ์„ ์ˆ˜ ์žˆ๋‹ค.

 

getInputStream() :  byte ์ฝ”๋“œ๋ฅผ ๋ฐ˜ํ™˜

 

 

StreamUtils.copyToString() : ๋ฌธ์ž์—ด๋กœ ๋ฐ˜ํ™˜ 

 

์ฝ”๋“œ๋ฅผ ์šฐ๋ฆฌ๊ฐ€ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ž(String)๋กœ ๋ณด๋ ค๋ฉด ๋ฌธ์žํ‘œ (Charset)๋ฅผ ์ง€์ •ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

 

์—ฌ๊ธฐ์„œ๋Š” UTF_8 Charset์„ ์ง€์ •ํ•ด์ฃผ์—ˆ๋‹ค.

 

 

 

 

Postman ์œผ๋กœ ํ…Œ์ŠคํŠธ 

 

 

content-type: text/plain


message body:
hello


๊ฒฐ๊ณผ: messageBody = hello

 

 

 

 

 

 

HTTP ์š”์ฒญ ๋ฐ์ดํ„ฐ - API ๋ฉ”์‹œ์ง€ ๋ฐ”๋”” - JSON

 

 

์ด๋ฒˆ์—๋Š” HTTP API์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๋Š” JSON ํ˜•์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•ด๋ณด์ž.

 

 

 

 

 

 

 

 

 

public class HelloData {

    private String username;
    private int age;

 

JSON ํ˜•์‹์œผ๋กœ ํŒŒ์‹ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ๊ฐ์ฒด๋ฅผ ํ•˜๋‚˜ ์ƒ์„ฑ

 

 

 

 

JSON ๊ฒฐ๊ณผ๋ฅผ ํŒŒ์‹ฑํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ž๋ฐ” ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•˜๋ ค๋ฉด

 

Jackson, Gson ๊ฐ™์€ JSON ๋ณ€ํ™˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•ด์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

 

private ObjectMapper objectMapper = new ObjectMapper();

 

์Šคํ”„๋ง ๋ถ€ํŠธ๋กœ Spring MVC๋ฅผ ์„ ํƒํ•˜๋ฉด ๊ธฐ๋ณธ์œผ๋กœ Jackson ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ( ObjectMapper )๋ฅผ ํ•จ๊ป˜ ์ œ๊ณตํ•œ๋‹ค.

 

 

 

# ์ฐธ๊ณ  : ObjectMapper (JSON ํŒŒ์‹ฑ)

๋”๋ณด๊ธฐ

 

ObjectMapper

 

ObjectMapper๋ฅผ ์ด์šฉํ•˜๋ฉด JSON์„ Java ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜

 

๋ฐ˜๋Œ€๋กœ Java ๊ฐ์ฒด๋ฅผ JSON ๊ฐ์ฒด๋กœ serialization ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

Java Object → JSON

 

Java ๊ฐ์ฒด๋ฅผ JSON์œผ๋กœ serialization ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ObjectMapper์˜ writeValue() ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•œ๋‹ค.

 

// Java Object ->  JSON
        Person person = new Person("zooneon", 25, "seoul");
        try {
            objectMapper.writeValue(new File("src/person.json"), person);
        } catch (IOException e) {
            e.printStackTrace();
        }

์œ„์™€ ๊ฐ™์ด ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ JSON์„ ์ €์žฅํ•  ํŒŒ์ผ๊ณผ ์ง๋ ฌํ™”์‹œํ‚ฌ ๊ฐ์ฒด๋ฅผ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค.

 

JSON → Java Object

 

JSON ํŒŒ์ผ์„ Java ๊ฐ์ฒด๋กœ deserialization ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ObjectMapper์˜ readValue() ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•œ๋‹ค.

 

// JSON -> Java Object
        String json = "{\"name\":\"zooneon\",\"age\":25,\"address\":\"seoul\"}";
        try {
            Person deserializedPerson = objectMapper.readValue(json, Person.class);
            System.out.println(deserializedPerson);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }

์œ„์™€ ๊ฐ™์ด ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ JSON ํ˜•ํƒœ์˜ ๋ฌธ์ž์—ด or ๊ฐ์ฒด์™€ ์—ญ์ง๋ ฌํ™” ์‹œํ‚ฌ ํด๋ž˜์Šค๋ฅผ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค.

 

 

 

# ์ถœ์ฒ˜

 https://velog.io/@zooneon/Java-ObjectMapper%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%98%EC%97%AC-JSON-%ED%8C%8C%EC%8B%B1%ED%95%98%EA%B8%B0

 

 

HelloData helloData = objectMapper.readValue(messageBody, HelloData.class);
System.out.println("helloData.username = " + helloData.getUsername());
System.out.println("helloData.age = " + helloData.getAge());

 

JSON ํŒŒ์ผ์„ Java ๊ฐ์ฒด๋กœ deserialization ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ObjectMapper์˜ readValue() ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•œ๋‹ค.

 

 

 

 

 

 

 

 

 

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1/dashboard 

 

์Šคํ”„๋ง MVC 1ํŽธ - ๋ฐฑ์—”๋“œ ์›น ๊ฐœ๋ฐœ ํ•ต์‹ฌ ๊ธฐ์ˆ  - ์ธํ”„๋Ÿฐ | ๊ฐ•์˜

์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ๋•Œ ํ•„์š”ํ•œ ๋ชจ๋“  ์›น ๊ธฐ์ˆ ์„ ๊ธฐ์ดˆ๋ถ€ํ„ฐ ์ดํ•ดํ•˜๊ณ , ์™„์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์Šคํ”„๋ง MVC์˜ ํ•ต์‹ฌ ์›๋ฆฌ์™€ ๊ตฌ์กฐ๋ฅผ ์ดํ•ดํ•˜๊ณ , ๋” ๊นŠ์ด์žˆ๋Š” ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๋กœ ์„ฑ์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค., -

www.inflearn.com

 

์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'Spring > Spring MVC' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[์Šคํ”„๋ง MVC] - 6. MVC ํŒจํ„ด - ์ ์šฉ , ํ•œ๊ณ„  (0) 2023.02.13
[์Šคํ”„๋ง MVC] - 5. ์„œ๋ธ”๋ฆฟ๊ณผ JSP์˜ ํ•œ๊ณ„ / MVC ํŒจํ„ด์˜ ๋“ฑ์žฅ  (0) 2023.02.13
[์Šคํ”„๋ง MVC] - 4. HTTP ์‘๋‹ต ๋ฐ์ดํ„ฐ ( ํ…์ŠคํŠธ / HTML / API )  (1) 2023.02.12
[์Šคํ”„๋ง MVC] - 2. ์„œ๋ธ”๋ฆฟ ๋“ฑ๋กํ•˜๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ  (0) 2023.02.11
[์Šคํ”„๋ง MVC] - 1. ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ดํ•ด  (0) 2023.02.11
'Spring/Spring MVC' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [์Šคํ”„๋ง MVC] - 5. ์„œ๋ธ”๋ฆฟ๊ณผ JSP์˜ ํ•œ๊ณ„ / MVC ํŒจํ„ด์˜ ๋“ฑ์žฅ
  • [์Šคํ”„๋ง MVC] - 4. HTTP ์‘๋‹ต ๋ฐ์ดํ„ฐ ( ํ…์ŠคํŠธ / HTML / API )
  • [์Šคํ”„๋ง MVC] - 2. ์„œ๋ธ”๋ฆฟ ๋“ฑ๋กํ•˜๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ
  • [์Šคํ”„๋ง MVC] - 1. ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ดํ•ด
hello_u
hello_u
  • hello_u
    ๐Ÿ˜œ
    hello_u
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๐Ÿ˜œ (345)
      • Hardware (2)
        • BMC (2)
      • Spring (109)
        • Spring ์ž…๋ฌธ (20)
        • Spring ๊ธฐ๋ณธ (27)
        • Spring MVC (18)
        • Spring DB (22)
        • Spring JPA ๊ธฐ๋ณธ (16)
        • Spring JPA ํ™œ์šฉ (6)
      • Develop (27)
        • DB (8)
        • JAVA (4)
        • Web (2)
        • Python (7)
        • OSS (2)
        • Git (2)
        • API (2)
      • Algorithm (155)
        • CodeUp ๊ธฐ์ดˆ (44)
        • ํŒŒ์ด์ฌ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ (64)
        • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (4)
        • SWEA (30)
        • Softeer (10)
        • BOJ (2)
      • CS (9)
        • ์ปดํ“จํ„ฐ์ผ๋ฐ˜ (3)
        • ์šด์˜์ฒด์ œ (3)
        • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (0)
        • ์ •๋ณดํ†ต์‹  (1)
        • ์ž๋ฃŒ๊ตฌ์กฐ (1)
        • ์†Œํ”„ํŠธ์›จ์–ด ๊ณตํ•™ (1)
        • ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด (0)
        • ์ตœ์‹  ๋””์ง€ํ„ธ, ์ผ๋ฐ˜์ƒ์‹ (0)
      • ์ž๊ฒฉ์ฆ (41)
        • ์ •๋ณด๋ณด์•ˆ๊ธฐ์‚ฌ (9)
        • ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ (22)
        • ๋ฆฌ๋ˆ…์Šค๋งˆ์Šคํ„ฐ 1๊ธ‰ (3)
        • SQLD (7)
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
hello_u
[์Šคํ”„๋ง MVC] - 3. HTTP ์š”์ฒญ ๋ฐ์ดํ„ฐ ( GET / POST / API )
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”