์คํ๋ง MVC 1ํธ์ ๊ฐ์ ๋ด์ฉ์ ์ ๋ฆฌํ ํฌ์คํ ์ ๋๋ค.
HttpServletRequest
์์ ํฌ์คํ
์์ ์๋ธ๋ฆฟ์ ๊ฐ๋ฐ์๊ฐ ์์ฒญ ๋ฐ ์๋ต ์ ๋ณด๋ฅผ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ์ง์ํ๋ฉฐ, ์ด๋ WAS๊ฐ HTTP ์์ฒญ ์ ์์ฒญ ๋ฐ ์๋ต ๊ฐ์ฒด๋ฅผ ์๋ก ๋ง๋ ๋ค ์๋ธ๋ฆฟ ๊ฐ์ฒด๋ฅผ ํธ์ถํ๋ ๊ณผ์ ์ ๊ฑฐ์น๋ค๋ ๊ฒ์ ์ค๋ช
ํ์๋ค.
์๋ธ๋ฆฟ์ ๊ฐ๋ฐ์๊ฐ HTTP ์์ฒญ ๋ฉ์์ง๋ฅผ ํธ๋ฆฌํ๊ฒ ์ด์ฉํ ์ ์๋๋ก ๊ฐ๋ฐ์ ๋์ ์์ฒญ ๋ฉ์์ง๋ฅผ ํ์ฑ ํ๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ HttpServletRequest๋ผ๋ ๊ฐ์ฒด์ ๋ด์์ ์ ๊ณตํ๋๋ฐ, ํด๋น ๊ฐ์ฒด๋ฅผ ์ด์ฉํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ ๋ณด๋ฅผ ํธ๋ฆฌํ๊ฒ ์กฐํํ ์ ์๋ค.
1. Start Line: HTTP ๋ฉ์๋, URL, ์ฟผ๋ฆฌ ์คํธ๋ง, ํ๋กํ ์ฝ
2. ํค๋: ํค๋ ์กฐํ
3. ๋ฐ๋: form ํ๋ผ๋ฏธํฐ ํ์ ์กฐํ, ๋ฉ์์ง ๋ฐ๋ ๋ฐ์ดํฐ ์ง์ ์กฐํ
๋ฟ๋ง ์๋๋ผ ๋ค์ ๊ธฐ๋ฅ๋ ๋ถ๊ฐ์ ์ผ๋ก ํจ๊ป ์ ๊ณตํ๋ค.
1. ์์ ์ ์ฅ์ ๊ธฐ๋ฅ: ํด๋น HTTP ์์ฒญ์ด ์์๋ถํฐ ๋๋ ๋๊น์ง ์ ์ง๋๋ ์ ์ฅ์๋ก, setAttribute()
์ getAttribute()
๋ฉ์๋ ์ด์ฉ
2. ์ธ์
๊ด๋ฆฌ ๊ธฐ๋ฅ: getSession()
๋ฉ์๋ ์ด์ฉ
HTTP ์์ฒญ ๋ฐ์ดํฐ
HTTP ์์ฒญ ๋ฉ์์ง๋ฅผ ํตํด ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ๋ฐฉ๋ฒ ์ค ํฌ๊ฒ 3๊ฐ์ง ๋ฐฉ๋ฒ์ ์ด์ฉํ๋ค.
1. GET - ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ
2. POST - HTML Form
3. HTTP ๋ฉ์์ง ๋ฐ๋์ ๋ฐ์ดํฐ๋ฅผ ์ง์ ๋ด์์ ์์ฒญ
HTTP ์์ฒญ ๋ฐ์ดํฐ - GET ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ
๋ฉ์์ง ๋ฐ๋ ์์ด URL์ ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ๋ฅผ ์ฌ์ฉํด์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ๋ฐฉ์์ผ๋ก, ๊ฒ์/ํํฐ/ํ์ด์ง ๋ฑ์์ ์ฃผ๋ก ์ฌ์ฉํ๋ ๋ฐฉ์์ด๋ค.
์ด์ฉ
http://localhost:8080?userName=kim&age=20
์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ๋ URL์ ?๋ฅผ ์์ ๊ธฐํธ๋ก ํ๊ณ , ํ๋ผ๋ฏธํฐ๋ฅผ ์ถ๊ฐํ ๊ฒฝ์ฐ &๋ฅผ ์ด์ฉํ๋ฉด ๋๋ค.
์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ์ HttpServletRequest
์๋ฒ์์๋ HttpServletRequest๊ฐ ์ ๊ณตํ๋ ๋ค์ ๋ฉ์๋๋ฅผ ํตํด ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ๋ฅผ ํธ๋ฆฌํ๊ฒ ์กฐํํ ์ ์๋ค.
(์๋ ์ฝ๋์ request๋ HttpServletRequest ํ์
์ ์์ฒญ ๊ฐ์ฒด์ด๋ค.)
String userName = request.getParameter("userName"); //๋จ์ผ ํ๋ผ๋ฏธํฐ ์กฐํ
String[] userNames = request.getParameterValues("userName") //๋ณต์ ํ๋ผ๋ฏธํฐ ์กฐํ
Enumeration<String> paramNames = request.getParameterNames(); //ํ๋ผ๋ฏธํฐ ์ด๋ฆ ๋ชจ๋ ์กฐํ
Map<String, String[]> paramMap = request.getParameterMap(); //ํ๋ผ๋ฏธํฐ๋ฅผ Map์ผ๋ก ์กฐํ
๋ณต์ ํ๋ผ๋ฏธํฐ ์กฐํ์ ๊ฒฝ์ฐ userName=hello&userName=kim๊ณผ ๊ฐ์ด ํ๋ผ๋ฏธํฐ ์ด๋ฆ์ ํ๋์ธ๋ฐ ์ค๋ณต๋ ๊ฐ์ด ์์ ๋ ์ฌ์ฉํ๋ค. ์ด๋ฌํ ์ผ์ด์ค๊ฐ ํํ์ง๋ ์์ง๋ง, ๋ง์ฝ ๋ณต์ ํ๋ผ๋ฏธํฐ๋ฅผ ์ด์ฉํ๋ค๋ฉด ์ค๋ณต์์ ์ธ์งํ๊ณ ํด๋น ๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ผ๊ฒ ๋ค๋ ์ธ์ง๋ฅผ ํ๊ณ ์์ด์ผ ํ๋ค. (๋ง์ฝ getParameter()
๋ฅผ ์ด์ฉํ๊ฒ ๋๋ฉด getParameterValues()
์ ์ฒซ ๋ฒ์งธ ๊ฐ์ ๋ฐํํ๋ค.)
HTTP ์์ฒญ ๋ฐ์ดํฐ - POST HTML Form
HTML์ ํผ์ ์ด์ฉํด ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ๋ฐฉ์์ผ๋ก, ์ฃผ๋ก ํ์ ๊ฐ์
/์ํ ์ฃผ๋ฌธ ๋ฑ์์ ์ฌ์ฉํ๋ ๋ฐฉ์์ด๋ค.
์ด์ฉ
input ํ๊ทธ์ name ์ต์
๊ฐ์ผ๋ก 'userName', 'age'๋ฅผ ๊ฐ๋ ํผ์ ํตํด POST ์์ฒญ์ ๋ณด๋ธ๋ค๊ณ ๊ฐ์ ํด๋ณด์.
์ด๋ HTTP ๋ฉ์์ง์ ๋ค์ด๊ฐ๋ content-type์ application/x-www-form-urlencoded ํ์์ ๊ฐ์ง๊ณ , message body๋ userName=kim&age=20์ด๋ผ๋ ๊ฐ์ ๋ด๊ณ ์๋ค.
ํด๋น ๋ฐฉ๋ฒ์ ๊ฒฝ์ฐ์๋ request.getParameter()
๋ฉ์๋๋ฅผ ์ด์ฉํ ์ ์๋๋ฐ, ๋ฉ์์ง ๋ฐ๋์ ๋ด๊ธด userName=kim&age=20์ด GET ๋ฐฉ์๊ณผ ๋์ผํ๊ธฐ ๋๋ฌธ์ ์๋ฒ ์
์ฅ์์๋ ๊ตฌ๋ถ ์์ด ๋ฐ์ดํฐ๋ฅผ ์กฐํํ ์ ์๋ ๊ฒ์ด๋ค.
HTTP ์์ฒญ ๋ฐ์ดํฐ - API ๋ฉ์์ง ๋ฐ๋
HTTP message body์ ๋ฐ์ดํฐ๋ฅผ ์ง์ ๋ด์ ์์ฒญํ๋ ๋ฐฉ์์ผ๋ก, HTTP API์์ ์ฃผ๋ก ์ฌ์ฉํ๋ฉฐ ๋ฐ์ดํฐ ํ์์ ๋๊ฐ JSON์ ์ด์ฉํ๋ค.
JSON ํ์ ์ ์ก
POST http://localhost:8080/request-body-json
content-type: application/json
message body: {"userName" : "kim", "age" : 20}
์์ ๊ฐ์ ์์ฒญ์ด ๋์ฐฉํ ๊ฒฝ์ฐ ์๋ฒ์์๋ JSON ํ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ํ์ฑํด์ผ ํ๋๋ฐ, ์๋ฐ ๊ฐ์ฒด๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณํํ๊ธฐ ์ํด์๋ JSON ๋ณํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ถ๊ฐํด์ ์ฌ์ฉํด์ผ ํ๋ค. ์คํ๋ง ๋ถํธ๋ก Spring MVC๋ฅผ ์ ํํ๋ฉด ๊ธฐ๋ณธ์ผ๋ก Jackson์ด๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(ObjectMapper)๋ฅผ ํจ๊ป ์ ๊ณตํ๋ค. ํด๋น ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ฉ์๋๋ฅผ ์ด์ฉํ๋ฉด ๋ฐ๋์ ๋ด์ฉ์ ์ํ๋ ํด๋์ค์ ๊ฐ์ฒด๋ก ํ์ฑ์ด ๊ฐ๋ฅํ๋ค.
HttpServletResponse
HttpServletRequest์ ๋ง์ฐฌ๊ฐ์ง๋ก ์๋ธ๋ฆฟ์ ์๋ต ๋ฉ์์ง์ ๊ฒฐ๊ณผ๋ฅผ HttpServletResponse๋ผ๋ ๊ฐ์ฒด์ ๋ด์ ์ ๊ณตํ๋ฉฐ, HttpServletResponse์ ์ญํ ์ ๋ค์๊ณผ ๊ฐ๋ค.
1. HTTP ์๋ต ๋ฉ์์ง ์์ฑ (์๋ต์ฝ๋ ์ง์ , ํค๋ ์์ฑ, ๋ฐ๋ ์์ฑ)
2. ํธ์ ๊ธฐ๋ฅ ์ ๊ณต (content-type ๋ฐ ์ธ์ฝ๋ฉ ํ์
์ง์ , cookie ์์ฑ, redirect ์ ์ก)
HTTP ์๋ต ๋ฐ์ดํฐ
HTTP ์๋ต ๋ฉ์์ง๋ ์ฃผ๋ก ๋ค์ ๋ด์ฉ์ ๋ด์์ ์ ๋ฌํ๋ค.
1. ๋จ์ ํ
์คํธ ์๋ต
2. HTML ์๋ต
3. HTTP API - message body JSON ์๋ต
HTTP ์๋ต ๋ฐ์ดํฐ - HTML
HTTP ์๋ต์ผ๋ก HTML์ ๋ฐํํ ๋๋ content-type์ text/html๋ก ์ง์ ํด์ผ ํ๋๋ฐ, ์๋์ ๊ฐ์ด ์์ฑํ ์ ์๋ค.
(์๋ ์ฝ๋์ response๋ HttpServletResponse ํ์
์ ์๋ต ๊ฐ์ฒด์ด๋ค.)
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
HTTP ์์ฒญ ๋ฐ์ดํฐ - API JSON
HTTP ์๋ต์ผ๋ก JSON์ ๋ฐํํ ๋๋ content-type์ application/json์ผ๋ก ์ง์ ํด์ผ ํ๋๋ฐ, ์ด๋ Jackson ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ ๊ณตํ๋ objectMapper.writeValueAsString()
์ ์ฌ์ฉํ๋ฉด ๊ฐ์ฒด๋ฅผ JSON ํ์์ผ๋ก ๋ณ๊ฒฝํ ์ ์๋ค.
๋ํ application/json์ ์คํ์ utf-8 ํ์์ ์ฌ์ฉํ๋๋ก ์ ์๋์ด ์๊ธฐ ๋๋ฌธ์, charset=utf-8๊ณผ ๊ฐ์ ์ถ๊ฐ ํ๋ผ๋ฏธํฐ๋ฅผ ์ง์ํ์ง ์๋๋ค. ๋ฐ๋ผ์ application/json์ผ๋ก๋ง ์ฌ์ฉํ๋ฉด ๋๋ค.
'Language & Framework > Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์คํ๋ง MVC] MVC ํ๋ ์์ํฌ ๋ง๋ค๊ธฐ (0) | 2023.01.28 |
---|---|
[์คํ๋ง MVC] ์๋ธ๋ฆฟ/JSP/MVC ํจํด (0) | 2023.01.23 |
[์คํ๋ง MVC] ์น ์ ํ๋ฆฌ์ผ์ด์ ์ดํด (0) | 2023.01.21 |
[์คํ๋ง ํต์ฌ ์๋ฆฌ] ๋น ์ค์ฝํ (0) | 2023.01.12 |
[์คํ๋ง ํต์ฌ ์๋ฆฌ] ๋น ์๋ช ์ฃผ๊ธฐ ์ฝ๋ฐฑ (0) | 2023.01.10 |