Hello servlet

shinyeongwoon·2022년 12월 24일
0

spring MVC

목록 보기
2/32

spring boot 환경에서 서블릿 등록하고 사용해 보자

🤞 참고 )
servlet은 tomcat 같은 web application server(was)를 직접 설치하고, 그 위에 servlet 코드를 클래스 파일로 빌드해서 올린다음, tomcat server를 실행하면 된다. 하지만 이 과정은 매우 번거로움
spring boot는 tomcat server를 내장하고 있으므로, 톰캣 서버 설치 없이 편리하게 servlet 코드를 싱핼할 수 있다.

@ServletCompoentScan

spring boot는 servlet을 직접 등록해서 사용할 수 있도록 @ServletComponentScan을 지원한다.

경로) main > java > hello > servlet1 ..> Servelt1.Application

package hello.servlet1;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;

@ServletComponentScan //서블릿 자동 등록
@SpringBootApplication
public class Servlet1Application {

	public static void main(String[] args) {
		SpringApplication.run(Servlet1Application.class, args);
	}

}

Servlet 등록하기

처음으로 실제 동작하는 Servlet 코드를 등록

  1. servlet1 pakage에 basic pakaget 만들기
  2. HelloServlet class 만들기
package hello.servlet1.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;

/** 서블릿 애노테이션
 * name : servlet 이름
 * urlPatterns : URL Mapping
 */
@WebServlet(name = "HelloServlet", urlPatterns = "/hello")
public class HelloServlet extends HttpServlet {

    /**
     * HTTP 요청을 통해 Mapping 된 URL이 호출되면 Servlet 컨테이너는 아래 메소드를 실행 한다
     */
    @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);

    }
}

웹 브라우저 실행 : http://localhost:8080/hello?username=world
결과 : hello world

HTTP request Message log로 확인하기

application.properties 에 다음 설정을 추가

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

서버를 재 시작하고, 재요청 해보면 서버가 받은 HTTP 요청 메세지를 출력하는 것을 확인할 수 있다.

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

0개의 댓글