본문 바로가기

BackEnd : Spring/Spring MVC

[Spring MVC] HelloServlet, HttpServletRequest

@ServletComponentScan // 서블릿 자동 등록  
@SpringBootApplication  
public class ServletApplication {
public static void main(String[] args) {
    SpringApplication.run(ServletApplication.class, args);
}
}

HelloServlet.java

package hello.servlet.basic;

import jakarta.servlet.ServletException;
import jakarta.servlet.ServletRequest;
import jakarta.servlet.ServletResponse;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;

import java.io.IOException;

@WebServlet(name = "helloServlet", urlPatterns = "/hello") //중복 있으면 안됨
public class HelloServlet extends HttpServlet {
    //단축키 ctrl+o
    @Override
    public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
        System.out.println("HelloServlet.service");
        //단축기 soutv
        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);
    }
}

@WebServlet : 서블릿 애노테이션

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

application.properties

logging.level.org.apache.coyote.http11=debug 

추가

서블릿 컨테이너 동작 방식

welcome 페이지 추가 - basic.html, index.html 추가

http://localhost:8080 호출시 index.html 페이지가 열리도록 함

HttpServletRequest

서블릿이 개발자가 http 요청 메시지를 편리하게 사용할 수 있도록 개발자 대신에 http 요청 메시지를 파싱하고,

그 결과를 HttpServletRequest 객체에 담아서 제공

HTTP 요청 메시지

 POST /save HTTP/1.1
 Host: localhost:8080
 Content-Type: application/x-www-form-urlencoded

 username=kim&age=20
 

START LINE : HTTP 메소드 ,URL, 쿼리 스트링, 스키마, 프로토콜

헤더 : 헤더 조회

바디 : form 파라미터 형식 조회, message body 데이터 직접 조회

@Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        printStartLine(request);
        printHeaders(request);
        printHeaderUtils(request);
        printEtc(request);
        response.getWriter().write("ok");
    }

printStartLine, printHeaders, printHeaderUtils, printEtc 함수를 이용하여 헤더 정보를 조회할 수 있다. <코드 생략>