๐ HttpServletRequest
โ
์ญํ
HTTP ์์ฒญ ๋ฉ์ธ์ง
POST /save HTTP/1.1
Host: localhost:8080
Content-Type: application/x-www-form-urlencoded
username=kim&age=20
- ์๋ธ๋ฆฟ์ ๊ฐ๋ฐ์๊ฐ HTTP ์์ฒญ ๋ฉ์ธ์ง๋ฅผ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ํ์ฑํด์ค
- ๊ทธ ๊ฒฐ๊ณผ๋ฅผ HttpServletRequest ๊ฐ์ฒด์ ๋ด์์ ์ ๊ณต
- + ๋ถ๊ฐ๊ธฐ๋ฅ
- ์์ ์ ์ฅ์ ๊ธฐ๋ฅ
- ์ ์ฅ: request.setAttribute(name, value)
- ์กฐํ: request.getAttribute(name)
- ์ธ์
๊ด๋ฆฌ ๊ธฐ๋ฅ
- request.getSession(create: true)
- ์์ ์ ์ฅ์ ๊ธฐ๋ฅ
๐ HTTP ์์ฒญ ๋ฉ์ธ์ง ์ ๋ฌ (ํด๋ผ์ด์ธํธ → ์๋ฒ)
โ GET - ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ
- /url?username=hello&age=20
- ๋ฉ์ธ์ง ๋ฐ๋ ์์ด, URL์ ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ์ ๋ฐ์ดํฐ๋ฅผ ํฌํจํด์ ์ ๋ฌ
- e.g. ๊ฒ์, ํํฐ, ํ์ด์ง ๋ฑ์์ ๋ง์ด ์ฌ์ฉํ๋ ๋ฐฉ์
โ POST - HTML Form
- content-type: application/x-www-form-urlencoded
- ๋ฉ์ธ์ง ๋ฐ๋์ ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ ํ์์ผ๋ก ์ ๋ฌ username=hello&age=20
- e.g. ํ์ ๊ฐ์ , ์ํ ์ฃผ๋ฌธ
โ HTTP ๋ฉ์ธ์ง ๋ฐ๋์ ๋ฐ์ดํฐ๋ฅผ ์ง์ ๋ด์์ ์์ฒญ
- HTTP API์์ ์ฃผ๋ก ์ฌ์ฉ
- ๋ฐ์ดํฐ ํ์์ ์ฃผ๋ก JSON์ ์ฌ์ฉ
- POST, PUT, PATCH์์ ์ฃผ๋ก ์ฌ์ฉ
๐ ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ ์กฐํ ๋ฉ์๋
String username = request.getParameter("username"); //๋จ์ผ ํ๋ผ๋ฏธํฐ ์กฐํ
Enumeration<String> parameterNames = request.getParameterNames(); //ํ๋ผ๋ฏธํฐ ์ด๋ฆ๋ค
๋ชจ๋ ์กฐํ
Map<String, String[]> parameterMap = request.getParameterMap(); //ํ๋ผ๋ฏธํฐ๋ฅผ Map
์ผ๋ก ์กฐํ
String[] usernames = request.getParameterValues("username"); //๋ณต์ ํ๋ผ๋ฏธํฐ ์กฐํ
- GET- ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ ๋ฐฉ์๊ณผ POST - HTML Form์ ํ๋ผ๋ฏธํฐ ํ์์ด ๊ฐ๊ธฐ ๋๋ฌธ์ ๊ฐ์ ์กฐํ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค.
- ํ๋ผ๋ฏธํฐ ์ด๋ฆ์ ํ๋์ด๊ณ , ์ค๋ณต ๊ฐ์ด ์์ ๋๋ getParameter() ๋์ getParameterValues()๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
โป์ฐธ๊ณ โป
์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ ํ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ๋๋ HTTP ๋ฉ์ธ์ง ๋ฐ๋๋ฅผ ์ฌ์ฉํ์ง ์๊ธฐ ๋๋ฌธ์ content-type์ด ์๋ ๋ฐ๋ฉด, HTML From ํ์์ผ๋ก ์ ๋ฌํ ๊ฒฝ์ฐ HTTP ๋ฉ์ธ์ง ๋ฐ๋์ ๋ฐ์ดํฐ๋ฅผ ํฌํจํด์ ๋ณด๋ด๊ธฐ ๋๋ฌธ์ content-type์ ์ง์ ํด์ฃผ์ด์ผ ํ๋ค. (application/x-www-form-urlencoded)
๐ API ๋ฉ์ธ์ง ๋ฐ๋ - ๋จ์ ํ ์คํธ
- content-type: text/plain
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletInputStream inputStream = request.getInputStream();
String messageBody = StreamUtils.copyToString(inputStream, StandardCharsets.UTF_8);
System.out.println("messageBody = " + messageBody);
response.getWriter().write("ok");
}
- HTTP ๋ฉ์ธ์ง ๋ฐ๋์ ๋ฐ์ดํฐ๋ฅผ InputStream์ ์ฌ์ฉํด์ ์ง์ ์ฝ์ ์ ์์
- inputStream์ byte ์ฝ๋๋ฅผ ๋ฐํํ๊ธฐ ๋๋ฌธ์ charset์ ์ง์ ํด์ฃผ์ด์ผ ํจ
๐ API ๋ฉ์ธ์ง ๋ฐ๋ - JSON
- content-type: application/json
JSON ํ์์ผ๋ก ํ์ฑํ๊ธฐ ์ํ ๊ฐ์ฒด
@Getter @Setter
public class HelloData {
private String username;
private int age;
}
private ObjectMapper objectMapper = new ObjectMapper();
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletInputStream inputStream = request.getInputStream();
String messageBody = StreamUtils.copyToString(inputStream, StandardCharsets.UTF_8);
System.out.println("messageBody = " + messageBody);
HelloData helloData = objectMapper.readValue(messageBody, HelloData.class);
System.out.println("helloData.username = " + helloData.getUsername());
System.out.println("helloData.age = " + helloData.getAge());
response.getWriter().write("ok");
}
- JSON ๊ฒฐ๊ณผ๋ฅผ ํ์ฑํด์ ์ฌ์ฉํ ์ ์๋ ์๋ฐ ๊ฐ์ฒด๋ก ๋ณํํ๊ธฐ ์ํด์๋ Jackson ๊ฐ์ JSON ๋ณํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ถ๊ฐํด์ ์ฌ์ฉํด์ผ ํจ. Spring MVC๋ฅผ ์ ํํ๋ฉด ๊ธฐ๋ณธ์ผ๋ก Jackson ๋ผ์ด๋ธ๋ฌ๋ฆฌ (ObjectMapper)๋ฅผ ์ ๊ณต
๊ฐ์ ๋งํฌ
์คํ๋ง MVC 1ํธ - ๋ฐฑ์๋ ์น ๊ฐ๋ฐ ํต์ฌ ๊ธฐ์ - ์ธํ๋ฐ | ๊ฐ์
์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ ๋ ํ์ํ ๋ชจ๋ ์น ๊ธฐ์ ์ ๊ธฐ์ด๋ถํฐ ์ดํดํ๊ณ , ์์ฑํ ์ ์์ต๋๋ค. ์คํ๋ง MVC์ ํต์ฌ ์๋ฆฌ์ ๊ตฌ์กฐ๋ฅผ ์ดํดํ๊ณ , ๋ ๊น์ด์๋ ๋ฐฑ์๋ ๊ฐ๋ฐ์๋ก ์ฑ์ฅํ ์ ์์ต๋๋ค., -
www.inflearn.com
'Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Spring] MVC 1ํธ (4) - HTTP ์๋ต ๋ฐ์ดํฐ (0) | 2022.03.29 |
---|---|
[Spring] MVC 1ํธ (2) - ์๋ธ๋ฆฟ (0) | 2022.03.28 |
[Spring] MVC 1ํธ (1) - ์น ์ ํ๋ฆฌ์ผ์ด์ ์ดํด (0) | 2022.03.28 |