๋ฐ์ํ
์คํ๋ง ๋ถํธ์์ ์๋ธ๋ฆฟ ์ฌ์ฉํ๊ธฐ
@ServletComponentScan
@WebServlet(name = "helloServlet", urlPatterns = "/hello")
protected void service(HttpServletRequest request, HttpServletResponse response)
: HTTP ์์ฒญ์ ํตํด ๋งคํ๋ URL์ด ํธ์ถ๋๋ฉด ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ ๋ค์ ๋ฉ์๋๋ฅผ ์คํ
HTTP ์์ฒญ ๋ฐ์ดํฐ๋ก ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ๋ฐฉ๋ฒ
1. GET - ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ
/url?username=hello&age=20
String username = request.getParameter("username"); //๋จ์ผ ํ๋ผ๋ฏธํฐ ์กฐํ
Enumeration<String> parameterNames = request.getParameterNames(); //ํ๋ผ๋ฏธํฐ ์ด๋ฆ๋ค ๋ชจ๋ ์กฐํ
Map<String, String[]> parameterMap = request.getParameterMap(); //ํ๋ผ๋ฏธํฐ๋ฅผ Map์ผ๋ก ์กฐํ
String[] usernames = request.getParameterValues("username"); //๋ณต์ ํ๋ผ๋ฏธํฐ ์กฐํ
๋ณต์ ํ๋ผ๋ฏธํฐ์์ ๋จ์ผ ํ๋ผ๋ฏธํฐ ์กฐํ
request.getParameterValues()
๋ฅผ ์ฌ์ฉ. ํ๋ผ๋ฏธํฐ ์ด๋ฆ์ด ์ค๋ณต์ผ ๋ request.getParameter()
๋ฅผ ์ฌ์ฉํ๋ฉด request.getParameterValues()
์ ์ฒซ ๋ฒ์งธ ๊ฐ์ ๋ฐํํ๋ค.
2. POST - HTML Form
- content-type: application/x-www-form-urlencoded
- ๋ฉ์์ง ๋ฐ๋์ ์ฟผ๋ฆฌ ํ๋ฆฌ๋ฏธํฐ ํ์์ผ๋ก ์ ๋ฌ โก๏ธ username=hello&age=20
- ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ ํ์์์ ์ฌ์ฉํ request.getParameter()๋ฅผ ์ฌ์ฉํด์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ฉด ๋๋ค.
์ฐธ๊ณ : content-type์ HTTP ๋ฉ์์ง ๋ฐ๋์ ๋ฐ์ดํฐ ํ์์ ์ง์ ํ๋ค.
GET URL ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ ํ์์ผ๋ก ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ๋๋ HTTP ๋ฉ์์ง ๋ฐ๋๋ฅผ ์ฌ์ฉํ์ง ์๊ธฐ ๋๋ฌธ์ content-type์ด ์๋ค.
POST HTML Form ํ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ฉด HTTP ๋ฉ์์ง ๋ฐ๋์ ํด๋น ๋ฐ์ดํฐ๋ฅผ ํฌํจํด์ ๋ณด๋ด๊ธฐ ๋๋ฌธ์ ๋ฐ๋์ ํฌํจ๋ ๋ฐ์ดํฐ๊ฐ ์ด๋ค ํ์์ธ์ง content-type์ ๊ผญ ์ง์ ํด์ผ ํ๋ค. ์ด๋ ๊ฒ ํผ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ํ์์ application/x-www-form-urlencoded ๋ผ ํ๋ค
3. HTTP message body
- HTTP API์์ ์ฃผ๋ก ์ฌ์ฉ. ์ฃผ๋ก JSON ํ์์ผ๋ก ๋ฐ์ดํฐ ์ ๋ฌ
ServletInputStream inputStream = request.getInputStream();
String messageBody = StreamUtils.copyToString(inputStream, StandardCharsets.UTF_8);
// json์ผ๋ก ์จ ๊ฒฝ์ฐ. ๊ฐ์ฒด๋ก ๋ฐ๋ก ๋งคํ๊ฐ๋ฅ
HelloData helloData = objectMapper.readValue(messageBody, HelloData.class);
์ฐธ๊ณ : inputStream์ byte ์ฝ๋๋ฅผ ๋ฐํํ๋ค. byte ์ฝ๋๋ฅผ ์ฐ๋ฆฌ๊ฐ ์ฝ์ ์ ์๋ ๋ฌธ์(String)๋ก ๋ณด๋ ค๋ฉด ๋ฌธ์ํ(Charset)๋ฅผ ์ง์ ํด์ฃผ์ด์ผ ํ๋ค.
์ฐธ๊ณ : JSON ๊ฒฐ๊ณผ๋ฅผ ํ์ฑํด์ ์ฌ์ฉํ ์ ์๋ ์๋ฐ ๊ฐ์ฒด๋ก ๋ณํํ๋ ค๋ฉด Jackson, Gson ๊ฐ์ JSON ๋ณํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ถ๊ฐํด์ ์ฌ์ฉํด์ผ ํ๋ค. ์คํ๋ง ๋ถํธ๋ก Spring MVC๋ฅผ ์ ํํ๋ฉด ๊ธฐ๋ณธ์ผ๋ก Jackson ๋ผ์ด๋ธ๋ฌ๋ฆฌ( ObjectMapper )๋ฅผ ํจ๊ป ์ ๊ณตํ๋ค.
HttpServletResponse
- ๋จ์ ํ
์คํธ ์๋ต
writer.println("ok")
- HTML ์๋ต
//Content-Type: text/html;charset=utf-8
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
PrintWriter writer = response.getWriter();
writer.println("<html>");
writer.println("<body>");
writer.println(" <div>์๋
?</div>");
writer.println("</body>");
writer.println("</html>");
- HTTP API - Message Body JSON ์๋ต
//Content-Type: application/json
response.setHeader("content-type", "application/json");
response.setCharacterEncoding("utf-8");
String result = objectMapper.writeValueAsString(data);
๐ Reference
๋ฐ์ํ