스프링 MVC 1편 (백엔드 웹 개발 핵심 기술)

Ch02. 서블릿 - Hello 서블릿

webmaster 2022. 3. 2. 11:15
728x90
    • 프로젝트 생성

프로젝트 생성

스프링 부트 서블릿 환경 구성

  • 서블릿 등록 에노테이션 추가

스프링이 자동으로 해당 어노테이션이 있는 하위 패키지의 서블릿을 등록시켜 준다.

  • 서블릿 생성하기

서블릿 생성

  • WAS 서버가 request, response 객체를 생성해 준다.
  • 쉽게 QueryParmeter 를 가지고 올 수 있고, response에 데이터를 넣기 쉽다.
  • @WebServlet 서블릿 애노테이션
    • name: 서블릿 이름
    • urlPatterns: URL 매핑
  • Http 요청 메시지 로그 남기기
    • application.properties에 해당 프로퍼티 추가 
logging.level.org.apache.coyote.http11=debug

Http 요청마다 로그를 찍을 수 있다.

  • 운영서버에 이렇게 모든 요청 정보를 다 남기면 성능 저하가 발생할 수 있다. 개발 단계에서만 적용하자.

서블릿 컨테이너 동작 방식 설명

  • 초기

Tomcat이 서블릿 컨테이너를 통해 서블릿을 생성해 준다.

  • 웹 애플리케이션 서버의 요청 응답 구조

생성된 서블릿이 Request, reponse를 가지고 실행하고 종료한다.

  • HTTP 응답에서 Content-Length는 웹 애플리케이션 서버가 자동으로 생성해준다.

welcome 페이지 추가

  • index.html
    • main/webapp/index.html 추가
    • localhost8080 , localhost8080/index 호출 시 자동으로 해당 페이지가 열린다
<!DOCTYPE html>
<html>
<head>
 <meta charset="UTF-8">
 <title>Title</title>
</head>
<body>
<ul>
 <li><a href="basic.html">서블릿 basic</a></li>
</ul>
</body>
</html>
  • main/webapp/basic.html
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<ul>
  <li>hello 서블릿
    <ul>
      <li><a href="/hello?username=servlet">hello 서블릿 호출</a></li>
    </ul>
  </li>
  <li>HttpServletRequest
    <ul>
      <li><a href="/request-header">기본 사용법, Header 조회</a></li>
      <li>HTTP 요청 메시지 바디 조회
        <ul>
          <li><a href="/request-param?username=hello&age=20">GET -
            쿼리 파라미터</a></li>
          <li><a href="/basic/hello-form.html">POST - HTML Form</a></
          li>
          <li>HTTP API - MessageBody -> Postman 테스트</li>
        </ul>
      </li>
    </ul>
  </li>
  <li>HttpServletResponse
    <ul>
      <li><a href="/response-header">기본 사용법, Header 조회</a></li>
      <li>HTTP 응답 메시지 바디 조회
        <ul>
          <li><a href="/response-html">HTML 응답</a></li>
          <li><a href="/response-json">HTTP API JSON 응답</a></li>
        </ul>
      </li>
    </ul>
  </li>
</ul>
</body>
</html>

 

 

728x90