Spring/스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

[김영한 스프링] 03. Hello 서블릿

개발게발 2023. 6. 12. 22:29

Hello 서블릿

 

@ServletComponentScan

  - 스프링이 현재 패키지를 포함 하위 패키지를 다 찾아서 서블릿을 자동으로 서비스 등록

 

 

main/java/hello.servlet/basic/HelloServlet 생성

 

 

Ctrl + O 키로 재정의/구현할 메서드 선택 창을 띄운 후 service를 입력하여 열쇠모양으로 되어있는 service를 선택

 

HttpServlet

  - 서블릿이 웹상에서 HTTP 프로토콜을 이용해 서비스를 처리하기 위해 반드시 상속받아야 함

 

@WebServlet

  - 경로를 입력하면 알아서 톰캣서버가 찾아서 실행해줌

  • name : 서블릿 이름
  • urlPatterns : URL 매핑

 

 

ServletApplication 실행

 

 

localhost:8080/hello 접속

 

빈 화면이 정상

 

 

로그 정상적으로 찍힘

 

 

쿼리 파라미터를 보기 위해 getParameter 추가

 

 

localhost:8080/hello?username=kim

 

 

 

package hello.servlet.basic;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet(name = "helloServlet", urlPatterns = "/hello")
public class HelloServlet extends HttpServlet {
    
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("HelloServlet.service");
        System.out.println("request = " + request);
        System.out.println("response = " + response);
        
        String username = request.getParameter("username");
        System.out.println("username = " + username);
        
        response.setContentType("text/plain");
        response.setCharacterEncoding("utf-8");
        response.getWriter().write("hello " + username);
    }
}

response 추가

setContentType, setCharacterEncoding : 헤더

getWriter : 바디

 

 

 

 

 

HTTP 요청 메시지 로그로 확인하기

 

applocation.properties에 logging.level.org.apache.coyote.http11=debug 입력

 

 

 

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

 

내장 톰캣 서버 생성

 

 

HTTP 요청, HTTP 응답 메시지

 

 

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

 

welcome 페이지 추가

 

<!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/index.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>

main/webapp/basic.html 생성

 

 

 

출처 : https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1

 

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 인프런 | 강의

웹 애플리케이션을 개발할 때 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 MVC의 핵심 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., -

www.inflearn.com