Servlet 1 - Servlet 기본

Dec 29, 2022

4 mins read

스프링 백앤드 공부를 하기위해 인프런 강의를 듣기 시작했다.
정리 안해두면 다 까먹으니 시간이 걸리더라도 기록을 해봄. (이론 말고 실습 위주)
스프링 MVC, 웹 백앤드를 익히기 위해 제일 기본이 되는 서블릿부터 시작해서 점점 올라갈 예정.

[서블릿 프로젝트 생성]

  • https://start.spring.io 사이트에서 아래와같이 Project, Project Metadata, Dependencies를 세팅하고
    GENERATE를 누르면 기본 프로젝트를 생성해서 파일로 내려준다. (servlet.zip 받은 파일 내용)

start_spring_io

servlet_zip

  • 이클립스에 Import 하기 : Import Project > Gradle > Project root Directory 에서 위에 받은 기본 프로젝트 선택하고 프로젝트 생성.
    프로젝트 Import 하면서 이클립스 버전 업데이트, Eclipse용 Spring Boot 버전업 다 해줬다.
    이클립스용 JAVA 17 버전 사용 함.

eclipse_import_1

eclipse_import_2

eclipse_import_3

  • main 에서 Run as > Spring Boot App 으로 실행시키면 Spring Boot 내장 WAS(tomcat)이 구동된다.

run_as

spring_run_app

[기본 서블릿 만들어보기]

  • hello.servlet 아래 basic 패키지를 하나 만든 후 서블릿을 생성해본다.
package hello.servlet.basic;

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

@WebServlet(name = "HelloServlet", urlPatterns = "/hello") //서블릿 name:서블릿이름, urlPatterns:URL매핑 (겹치면 안됨)
public class HelloServlet extends HttpServlet{

	//위 서블릿이 호출되면 아래 service가 자동 실행된다.
	@Override
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//super.service(req, resp);
		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와 request에 어떤 값이 담겨서 통신되는지 찍어볼수 있다.

hello_servlet

  • 브라우저 요청 결과

hello_aroong

  • 스프링 부트 application.properties를 세팅하면 http header등 자세한 요청메시지 로그도 볼 수 있다.
logging.level.org.apache.coyote.http11=debug

application_properties_log

[Welcome 페이지 만들기]

  • main아래 webapp폴더를 만들고 index.html을 만들어두면 서블릿 이름 없이 http://localhost:8080/ 로만 들어왔을 때 index페이지가 뜬다.

main_index

index_html