스프링 MVC - 1편 - 프로젝트 생성 - Hello 서블릿
인프런 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술편을 학습하고 정리한 내용 입니다.
프로젝트 세팅
- 프로젝트 선택
- Project : Gradle
- Language : JAVA
- Spring Boot : 3.2.3
- Project Metadata
- Group : hello
- Artifact : servlet
- Name : servlet
- Package Name : hello.servlet
- Packaging :
War - Java : 21
- Dependencies :
Spring Web,Lombok
주의 : Jar 아니고 War, JSP 실행하기 위해 필요.

다음과 같이 세팅하고

메인도 켜보고

롬복도 세팅 Enable annotation processing 체크 해주고 (롬복 플러그인 설치 먼저)

빌드를 Gradle -> intelliJ IDEA 로 변경해서 속도도 좀 빠르게 해주면 세팅은 끝난다.
Hello 서블릿
스프링 부트 환경에서 서블릿 등록하고 사용해 보자.
참고
서블릿은 톰캣 같은 웹 애플리케이션 서버를 직접 설치하고, 그 위에 서블릿 코드를 클래스파일로 빌드해서 올린다음,
톰캣 서버를 실행하면 된다. 하지만 이 과정은 번거롭다.
스프링 부트는 톰캣 서버를 내장하고 있으므로, 톰캣 서버 설치 없이 편리하게 서블릿 코드를 실행할 수 있다.
스프링 부트 서블릿 환경 구성
@ServletComponentScan
스프링 부트는 서블릿을 직접 등록해서 사용할 수 있도록 @ServletComponentScan을 지원한다.
다음과 같이 추가하자.
hello.servlet.ServletApplcation
1
2
3
4
5
6
7
@ServletComponentScan // 서블릿 자동 등록
@SpringBootApplication
public class ServletApplication {
public static void main(String[] args) {
SpringApplication.run(ServletApplication.class, args);
}
}
서블릿 등록하기
hello.servlet.basic.HelloServlet
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@WebServlet(name = "helloServlet", urlPatterns = "/hello")
public class HelloServlet extends HttpServlet {
@Override
public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
System.out.println("HelloServlet.service");
System.out.println("request = " + request);
System.out.println("request = " + request);
String username = request.getParameter("username");
System.out.println("username = " + username);
response.setContentType("text/plane");
response.setCharacterEncoding("utf-8");
response.getWriter().write("hello " + username);
}
}
서블릿을 직접 사용한다는게 이런 의미인 것 같다…
정말 다시한번 스프링에 고마움을 느낀다 ㅋ;
암튼 /hello 로 들어오면 이 클래스가 동작 하게 되는 건데

다음과 같이 인터넷 창에서 잘 나오고, 내가 원하는 sout 도 잘 나가는 걸 볼 수 있다.
@WebServlet서블릿 에노테이션- name : 서블릿 이름
- urlPatterns : URL 매핑
HTTP 요청을 통해 매핑된 URL이 호출되면 서블릿 컨테이너는 다음 메서드를 실행한다.
protected void service(HttpServletRequest request, HttpServletResponse response)
- 웹 브라우저 실행
- http://localhost:8080/hello?username=world
- 결과 : hello world
- 콘솔 실행 결과
1
2
3
4
HelloServlet.service
request = org.apache.catalina.connector.RequestFacade@437c989c
request = org.apache.catalina.connector.RequestFacade@437c989c
username = kim
서블릿 컨테이너 동작 방식 설명
내장 톰캣 서버 생성

스프링 부트가 내장 톰캣 서버를 실행 해주고, 톰캣이 서블릿컨테이너를 생성 하면서 helloServlet을 등록
HTTP 요청, HTTP 응답 메세지

그럼 웹브라우저가 사진과 같이 요청을 가공해서 보내고, 서버는 사진과 같은 응답을 보내야 한다.
웹 애플리케이션 서버의 요청 응답 구조

request, respons 를 가져와서 helloServlet의 로직을 타서 response를 보내서 브라우저가 인식해서 화면이 출력 되게 된다.
웰컴 페이지 만들기

다음과 같은 위치에 index.html을 만들어 준다.
1
2
3
4
5
6
7
8
9
10
11
12
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<ul>
<li><a href="basic.html">서블릿 basic</a></li>
</ul>
</body>
</html>
다음과 같이 만들고 이제 같은 경로에 basic.html을 만들자
basic.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<!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>
이제 기본 세팅이 끝났다.
오늘 해본건 진짜 스프링이 얼마나 고마운 존재인지 느끼게 해주는 것 같다…
부트가 없었으면 이 하나 고치고 딸깍 하나 고치고 딸깍 이런것도 ㅋㅋ..
댓글남기기