본문 바로가기

Spring Boot/4. SpringMVC part1

3. 서블릿(Servlet) - HttpServletRequest, HttpServletResponse

간단한 서블릿 소스코드를 보겠다.

@WebServlet(name = "helloServlet", urlPatterns = "/hello")
public class HelloServlet extends HttpServlet {

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String username = request.getParameter("username");
        System.out.println("username = " + username);
        response.setContentType("text/plain");
        response.setCharacterEncoding("utf-8");
        response.getWriter().write("hello world " + username);
    }
}
  1. @WebServlet
    • name : 서블릿 Bean객체의 이름
    • urlPatterns : URL 매핑주소 값
  2. protected void service() : 서블릿 컨테이너는 해당 메소드를 실행시킨다.
  3. HttpServletRequest, HttpServletResponse : HTTP요청 정보와 응답정보를 활용할 수 있다.

* 서블릿을 활용한 Servlet 동작 개념 및 HTTP요청 흐름

was 구동시 Servlet 생성 과정

1. 스프링 부트를 실행하게 되면 스프링부트는 내장되어 있는 Tomcat서버를 실행시킨다.

2. 톰캣서버는 내부에 Servlet컨테이너기능을 가지고 있다.

3. 서블릿 컨테이너는 위 코드와 같이 정의된 서블릿들을 객체화 시켜 생성한다.(위 소스에서는 helloServlet이라는 이름으로 생성된다.) 

WAS 요청 흐름

 

4. 서블릿 객체가 생성된 was서버는 HTTP요청을 기다리다가, 요청이 들어오게 되면

5. Request, Response객체를 생성한 후

6. Servlet을 호출해주고

7. 작업을 완료한 후

8. Tomcat서버가 Response객체를 만든 후 Client에 반환해 준다.

 

 

* HttpServletRequest

HttpServletRequest는 HTTP요청 메세지를 편리하게 조회할 수 있게 해준다

 

Http 요청메세지는 주로 3가지 방식을 사용한다ㅣ

  1. GET - 쿼리파라미터 방식
    • /url?membername=kang?age=20
    • 메세지 바디 없이, URL 자체에 쿼리파라미터에 데이터를 포함시킨다.
  2. POST - HTML Form 방식
    • content-type: application/x-www.form-urlencoded 이어야 한다.
    • 메세지 바디(url X)에 쿼리파라미터 형식으로 전달한다
    • POST /save HTTP/1.1
      HOST 127.0.0.1:8080
      Content-Type: application/x-www.form-urlencoded

      membername=kang&age=20
  3. HTTP message body에 직접 데이터를 넣어 요청하는 방식
    • HTTP API에 주로 사용하며 주로 JSON형태로 쓰인다.
    • POST HTTP/1.1
      HOST 127.0.0.1:8080/call-json
      Content-Type: application/json

      {
            "membername": "kang",
            "age":20
      }

 

* HttpServletResponse

  1. HTTP 응답메세지 생성
    1. HTTP응답 코드 설정
    2. 헤더 생성
    3. 바디 생성
      1. 단순 텍스트 응답
        1. writer.pringln("ok")
      2. HTML응답
        1. writer.pringln("<html>") writer.pringln("<body>") ~~~~
      3. JSON응답
        1. {"membername": kang, "age": 20}
  2. 편의 기능제공
    1. Content-Type
    2. Cookie
    3. Redirect

'Spring Boot > 4. SpringMVC part1' 카테고리의 다른 글

4. MVC패턴  (0) 2021.06.01
2-3. CSR , SSR  (0) 2021.06.01
2-2 Web 동시요청, 멀티쓰레드  (0) 2021.06.01
2-1. 서블릿(Servlet)  (0) 2021.06.01
1. Web Application 이란?  (0) 2021.06.01