HTTP 요청 메시지를 파싱 후 정보를 꺼내야 하는데, WAS는 번거로움을 방지하기 위해 미리 요청 메시지의 정보를 꺼내어 HttpServletRequest 객체에 저장해준다.
마찬가지로 응답을 위해 HTTP 응답 메시지에 일일이 기록해야하는데. 이 또한 WAS가 HttpServletResponse 객체로 미리 생성해준다.
서블릿의 비즈니스 로직을 구현할때는
편리하게 request 객체에서 요청 정보를 꺼내고, response 객체로 응답을 수행하면 된다.
//url : http:localhost:8080/example?name=kim&age=20
@WebServlet(name = "example", urlPatterns = "/example")
public class Example extends HttpServlet {
@Override
protected void service(HttpServletRequest request,
HttpServletResponse response) {
System.out.println("이름 = " + request.getParameter("name");
System.out.println("나이 = " + request.getParameter("age");
}
}
<html>
<head> ~~~ </head>
<body>
<form action = "/example" method = "post">
name : <input type = "text" name = "name" />
age : <input type = "text" name = "age" />
<button type = "submit">전송</button>
</form>
</body>
요청 시 전송 데이터는 쿼리 파라미터, HTML Form, HTTP API 방식이 있다. 쿼리파라미터는 헤더에 Form은 바디에 데이터가 담기며 수신 시에는 getParameter 로 값을 가져온다. JSON은 잭슨 라이브러리로 파싱해 사용한다.
protected void service() {
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
PrintWriter writer = reponse.getWriter();
writer.println("<html>");
writer.println("<body>");
writer.println(" <div>안녕</div>");
writer.println("</body>");
writer.println("</html>");
}
private ObjectMapper objectMapper = new ObjectMapper();
protected void service() {
HelloData data = new HelloData();
data.setName("kim");
data.setAge(20);
String result = objectMapper.writeValueAsString(data);
response.getWriter().write(result);
}
서버의 응답 전송 형식은 HTML 이나 JSON 을 사용한다. HTML을 주로 사용하는데 자바코드에서 일일이 응답 body에 HTML을 입력해야해서 매우 불편하다. 응답할 때 HTML 형식을 그대로 전송할 수 없을까? -> JSP를 사용하는 MVC 패턴의 등장
본 글은 김영한님의 "스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술" 강의내용 및 이해한 내용을 정리한 것입니다.
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1/dashboard