-
์๋ธ๋ฆฟ ServletSpring 2022. 4. 18. 12:27
๐ก ์๋ธ๋ฆฟ
- ์๋ฒ ์ชฝ์์ ์คํ๋๋ฉด์ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ฐ๋ผ ๋์ ์ผ๋ก ์๋น์ค๋ฅผ ์ ๊ณตํ๋ ์๋ฐ ํด๋์ค
- ์๋ฒ์์ ์คํ๋๋ค๊ฐ ์น ๋ธ๋ผ์ฐ์ ์์ ์์ฒญ์ ํ๋ฉด ํด๋น ๊ธฐ๋ฅ์ ์ํ ํ, ์น ๋ธ๋ผ์ฐ์ ์ ๊ฒฐ๊ณผ๋ฅผ ์ ์กํ๋ค
- MVC ํจํด์์ Controller๋ก ์ด์ฉ๋๋ค
- html์ ์ฌ์ฉํด ์์ฒญ์ ์๋ตํ๋ค
@WebServlet(name = "helloServlet", urlPatterns = "/hello") public class HelloServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) . . . }
* @WebServelt : ์๋ธ๋ฆฟ ์ ๋ ธํ ์ด์
- name : ์๋ธ๋ฆฟ ์ด๋ฆ
- urlPatterns : URL ๋งคํ
* HTTP ์์ฒญ์ ํตํด ๋งคํ๋ URL์ด ํธ์ถ๋๋ฉด์ ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ service() ๋ฉ์๋๋ฅผ ์คํํ๋ค
* HttpServeltRequest, HttpServeltResponse ๊ฐ์ฒด๋ค์ด HTTP ์์ฒญ ๋ฉ์์ง, HTTP ์๋ต ๋ฉ์์ง๋ฅผ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ๋๋ก
๋์์ฃผ๋ ๊ฐ์ฒด๋ค
๐ก HttpServletRequest
- ์๋ธ๋ฆฟ์ด HTTP ์์ฒญ ๋ฉ์์ง๋ฅผ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก HTTP ์์ฒญ ๋ฉ์์ง๋ฅผ ํ์ฑํ ๊ฒฐ๊ณผ๋ฅผ
HttpServletRequest ๊ฐ์ฒด์ ๋ด์์ ์ ๊ณตํ๋ค
* ํ์ฑ : ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํด ๊ฐ๊ณตํ๋ค
- ์์ ์ ์ฅ์ : ํด๋น HTTP ์์ฒญ์ด ์์๋ถํฐ ๋๋ ๋ ๊น์ง ์ ์ง๋๋ ์์ ์ ์ฅ์ ๊ธฐ๋ฅ
์ ์ฅ : request.setAttribute(name, value)
์กฐํ : request.getAttribute(name)
๐ HTTP ์์ฒญ ๋ฐ์ดํฐ
- HTTP ์์ฒญ ๋ฉ์์ง๋ฅผ ํตํด ํด๋ผ์ด์ธํธ-> ์๋ฒ๋ก ๋ฐ์ดํฐ ์ ๋ฌํ๋ ๋ฐฉ๋ฒ
๐ GET - ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ
: /url?username=hello&age=20 <- ์ ๋ฌ ๋ฐ์ดํฐ : username = hello, age = 20
: ๋ฉ์์ง ๋ฐ๋ ์์ด, URL์ ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ์ ๋ฐ์ดํฐ๋ฅผ ํฌํจํด์ ์ ๋ฌ
: ex) ๊ฒ์, ํํฐ, ํ์ด์ง ๋ฑ
* ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ๋ URL์ ๋ค์๊ณผ ๊ฐ์ด ? ๋ฅผ ์์์ผ๋ก ๋ณด๋ผ ์ ์๋ค. ์ถ๊ฐ ํ๋ผ๋ฏธํฐ๋ & ๋ก ๊ตฌ๋ถํ๋ฉด ๋๋ค.
//๋จ์ผ ํ๋ผ๋ฏธํฐ ์กฐํ String username = request.getParameter("username"); //ํ๋ผ๋ฏธํฐ ์ด๋ฆ๋ค ๋ชจ๋ ์กฐํ Enumeration<String> parameterNames = request.getParameterNames(); //ํ๋ผ๋ฏธํฐ๋ฅผ Map์ผ๋ก ์กฐํ Map<String, String[]> parameterMap = request.getParameterMap(); //๋ณต์ ํ๋ผ๋ฏธํฐ ์กฐํ String[] usernames = request.getParameterValues("username");
* request.getParameter() ๋ ํ๋์ ํ๋ผ๋ฏธํฐ ์ด๋ฆ์ ๋ํด์ ๋จ ํ๋์ ๊ฐ๋ง ์์ ๋ ์ฌ์ฉํด์ผ ํ๋ค.
: ๋ณต์ ํ๋ผ๋ฏธํฐ์์ ๋จ์ผ ํ๋ผ๋ฏธํฐ ์กฐํ
ex) username=hello&username=kim
=> request.getParameterValues() ์ ์ฒซ ๋ฒ์งธ ๊ฐ์ ๋ฐํ
๐ POST - HTML Form
: content-type: application/x-www-form-urlencoded
: ๋ฉ์์ง ๋ฐ๋์ ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ ํ์์ผ๋ก ์ ๋ฌ username=hello&age=20
: ex) ํ์ ๊ฐ์ , ์ํ ์ฃผ๋ฌธ, HTML Form ์ฌ์ฉ
* request.getParameter() ๋ GET URL ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ ํ์๋ ์ง์ํ๊ณ , POST HTML Form ํ์๋ ๋ ๋ค ์ง์ํ๋ค
๐ HTTP message body์ ๋ฐ์ดํฐ๋ฅผ ์ง์ ๋ด์์ ์์ฒญ
: HTTP API์์ ์ฃผ๋ก ์ฌ์ฉ JSON, XML, TEXT
: ๋ฐ์ดํฐ ํ์์ ์ฃผ๋ก JSON ์ฌ์ฉ : POST, PUT, PATCH
* JSON ์ฌ์ฉํ ๋ ๊ฐ์ฒด๋ก ๋ฐ๊ฟ์ ์ฌ์ฉํ๋ค
: HTTP ๋ฉ์์ง ๋ฐ๋์ ๋ฐ์ดํฐ๋ฅผ InputStream์ ์ฌ์ฉํด ์ง์ ์ฝ์ ์ ์๋ค
๐ก HttpServletResponse
- HTTP ์๋ต ๋ฉ์์ง ์์ฑ
๐ HTTP ์๋ต ๋ฐ์ดํฐ
๐ ๋จ์ ํ ์คํธ ์๋ต
- response.getWriter().write("ok");
๐ HTML ์๋ต
- HTTP ์๋ต์ผ๋ก HTML์ ๋ฐํํ ๋๋ content-type์ text/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 - MessageBody JSON ์๋ต
@WebServlet(name = "responseJsonServlet", urlPatterns = "/response-json") public class ResponseJsonServlet extends HttpServlet { private ObjectMapper objectMapper = new ObjectMapper(); @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //Content-Type: application/json response.setHeader("content-type", "application/json"); response.setCharacterEncoding("utf-8"); HelloData data = new HelloData(); data.setUsername("kim"); data.setAge(20); //{"username":"kim","age":20} String result = objectMapper.writeValueAsString(data); response.getWriter().write(result); } }
* application/json ์ ์คํ์ utf-8 ํ์์ ์ฌ์ฉํ๋๋ก ์ ์๋์ด ์๋ค => application/json ์ด๋ผ๊ณ ์ฌ์ฉ
'Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
MVC ํจํด (0) 2022.04.18 JSP (0) 2022.04.18 ๋ฉ์์ง, ๊ตญ์ ํ (0) 2022.04.18 ์น ์์คํ ๊ตฌ์ฑ, ์๋ธ๋ฆฟ, ๋ฉํฐ ์ฐ๋ ๋ (0) 2022.04.13 ๋น ์ค์ฝํ (0) 2022.04.13