<< 학습 목표 >>
1. 두 가지 방법으로 웹 프로젝트를 실행시킬 수 있다.
2. 두 가지 방법으로 웹 프로젝트를 실행시키는 방법을 설명할 수 있다.
3. 서블릿 실행과 서블릿 호출을 설명할 수 있다.
서블릿(Servlet) 은 자바임
상속을 활용해서 자바 프로그램이 웹 프로그램이 되도록 한 것
서블릿은 자바 소스 파일 추가하듯 추가함
따라서 먼저 Java Resource 안에 src/main/java 안에 패키지를 추가하자
패키지 명은 Chapter02

Chapter02 패키지 안에 자바 소스 파일 추가하자
소스 파일명은 Ex01
일반적으로 자바 소스 파일을 만들 때는 [ public static void main ] 부분을 체크하지만 우리는 이제 일반 자바가 아니라 서블릿을 배울것이기 때문에 [ public static voidm main ] 은 체크하지 않음
public class Ex01 {
}
서블릿이 될 클래스를 추가했음
이 글의 맨 처음 서블릿은 상속을 사용해 자바 프로그램이 웹 프로그램이 되도록 한 것이니 Ex01 클래스명 옆에 extends HttpServlet 을 하자 그러면 Ex01은 이제 일반적인 자바 프로그램이 아닌 서블릿, 웹 프로그램이 된 것
import javax.servlet.http.HttpServlet;
public class Ex01 extends HttpServlet {
}
그 이후에 더 자세한 설명은 앞으로 할 것이니 지금은 따라 입력하자
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/ex01")
public class Ex01 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("Servlet 이제 시작합니다.");
System.out.println("사용자가 이 경로로 접근하면");
System.out.println("이 서블릿이 호출됩니다.");
System.out.println("서블릿이 호출되면 여기 있는 코드가 실행됩니다.");
}
}
여기까지 웹 프로젝트에 간단한 서블릿을 하나 따라 만들었음
Ex01 에 extends HttpServlet 이 붙지 않았다면 일반 자바 프로그램으로 일반 자바 프로그램은 이클립스 안에서 우클릭 -> Run As -> Java Application 을 눌러 실행시키지만 Ex01에 extends HttpServlet 을 붙여 서블릿으로 만들었음
서블릿은 서버가 실행시켜줄 수 있음
두 가지 방법으로 서블릿을 실행해볼텐데
1. C 드라이브 내 톰캣으로 서블릿을 실행
2. 이클립스 내 톰캣으로 서블릿을 실행
C 드라이브 내 톰캣으로 서블릿을 실행해보자
C 드라이브 내 톰캣으로 서블릿을 실행하려면 우선 웹 프로젝트를 war 형식으로 압축해야함
war 형식으로 압축하는 방법은 프로젝트 우클릭(1) -> Export(2) -> WAR file 클릭(3)

(1) 웹 프로젝트 명
(2) 프로젝트를 압축한 파일을 어디에 둘지 경로를 지정 : [ Browse ] (3) 을 눌러 바탕화면으로 지정하자
(4) 똑같은 이름의 파일이 있다면 덮어씌우기 : 체크
1 ~ 4까지 확인 후 [ Finish ] (5) 를 눌러 압축하자

이제 바탕화면을 보면 다음과 같이 war 압축 파일이 있을 것

이 압축 파일을 C 드라이브 내 톰캣 안에 webapps 로 이동시키자
이제 C 드라이브 내 톰캣을 실행시키자
[ 뒤로가기 ] -> bin 폴더로 이동 -> startup 더블클릭
톰캣이 실행될 때 webapps 폴더에 있는 war 파일을 인식해 압축을 풀고 웹 프로젝트를 실행시켜줌
눈이 좀 아프겠지만 cmd 창을 넓게 늘리고 자세히 봐보면 studyProject.war 을(를) 배치합니다. studyProject.war 의 배치가 [ ~~ ] 밀리초에 완료되었습니다. 메세지가 보일 것
이 메세지가 톰캣이 실행되면서 우리가 webapps 폴더에 넣어둔 war 파일을 인식해 압축을 풀고 웹 프로젝트를 실행시켜준 것

이 cmd 창은 닫으면 안됨 그러면 서버가 꺼짐
다시 톰캣 폴더에서 [ 뒤로가기 ] -> webapps 폴더로 가보면 studyProject 폴더가 보이는 것도 알 수 있음
한번 studyProject 폴더 안으로 들어가보자
그러면 우리가 이클립스에서 봤던 것과는 좀 다른 구조로 되어있다는 걸 알 수 있음
개발할 때의 프로젝트 구조와 실행될 때의 프로젝트 구조는 다름
실행될 때의 프로젝트 구조까지는 알 필요가 없음 다르다는 것만 기억하고 있으면 됨
여기서 ! 중요한 점 ! 일반적인 자바 프로그램은 실행시키면 그 안에 적어둔 소스 코드가 바로 실행되지만 서블릿은 실행시켰다고 서블릿 안에 적어둔 소스 코드가 바로 실행되진 않음
서블릿 안에 적어둔 소스 코드가 실행되려면 서블릿에 접근해야함
서블릿에 접근할 수 있는 방법은 여러 가지가 있지만 웹 브라우저로 접근해보자
웹 브라우저 내 주소표시줄에 http://localhost:8080/studyProject/ex01 입력해 서블릿에 접근하자
서블릿에 접근한다 라고도 하지만 서블릿을 호출한다 라고도 표현함

이렇게 접근했는데 아래와 같은 화면이 보인다면 톰캣의 포트 번호를 바꾼 분일 것
localhost: 다음에 있는 8080 을 바꾼 포트 번호로 지정해주자
포트 번호를 바꾸지 않았다면 오타가 없는지 확인해볼 것
( 그래도 여전히 아래와 같은 화면이 보이면 댓글 남겨주세요. )


서블릿이 제대로 호출됬다면 아래와 같이 흰 화면만 보임
우리가 서블릿 안에 Sysout 으로 몇 줄의 문장을 적어뒀음
서블릿이 제대로 호출됬다면 흰 화면이 보이면서 cmd 창에 그 몇 줄의 문장이 출력됨
cmd 창을 확인해보자

어떤 메세지가 출력됬는데 아쉽게도 한글이 깨져보임
이 부분은 그냥 넘어가자
서블릿이 호출됬기 때문에 서블릿 안에 적어둔 소스 코드가 동작해 문장이 출력됬음
해당 주소로 여러번 접근해보면 그럴 때 마다 서블릿이 호출되므로 cmd 창에 문장이 출력된다는 걸 알 수 있음

여기까지 C 드라이브 내 톰캣으로 서블릿을 실행시키고 서블릿에 접근해봤음
C 드라이브 내 톰캣으로 서블릿을 실행시키는 방법은?
( 아래 드레그를 하면 답이 보입니다. )
1. 웹 프로젝트를 war 형식으로 압축한다.
2. war 파일을 톰캣의 webapps 폴더로 이동시킨다.
3. 톰캣을 실행시킨다.
이제 cmd 창을 닫아 서버를 끄자
이번에는 똑같은 프로젝트를 이클립스 내 톰캣으로 서블릿을 실행해보자
이클립스에서 [ Servers ] 탭(1) -> 서버 우클릭(2) -> [ Add and Remove ] 클릭(3)

studyProject 더블클릭 혹은 studyProject 클릭 후 [ Add > ] 버튼 클릭(1) -> [ Finish ] 클릭(2)

이 과정을 통해 이클립스 내 서버에 프로젝트를 넣은 것
잠깐 여기까지 서버에 프로젝트를 넣는 과정을 비교해보자
1. C 드라이브 내 톰캣에 프로젝트를 넣을 때 : 프로젝트를 war 형식으로 압축한다 -> war 파일을 톰캣의 webapps 폴더로 옮김
2. 이클립스 내 톰캣에 프로젝트를 넣을 때 : [ Servers ] 탭 -> 서버 우클릭 -> [ Add and Remove ] -> 프로젝트 더블클릭
넣는 과정부터 차이가 있는데 특히나 1번 방법의 경우에는 프로젝트가 약간만 바뀌어도 매번 같은 작업을 해야함
그러나 2번 방법의 경우에는 프로젝트가 얼마나 바뀌든 상관 없이 할 게 없음
개발을 하면 서블릿을 많이 만들게 되고 또 많이 수정하게 됨 1번 방법으로 한다면 그 만큼 계속 옮기는 작업을 반복해줘야하지만 2번 방법으로 한다면 할 게 없기 때문에 개발 속도가 빨라짐
그래서 우리는 그리고 개발자들이 개발을 할 때는 2번의 방법으로 배우고, 개발함
그리고 나서 개발자들이 개발을 완료한 프로젝트를 사람들이 이용할 수 있도록 서비스할 때는 1번의 방법으로 서비스 함
다시 본론으로 돌아가서 이제 이클립스 내 서버에 프로젝트를 옮겼으니 이클립스 내 서버를 실행시키자
[ Servers ] 탭 -> 서버 우클릭 -> start (1)

서버를 실행시키고 나서 서버가 [ started, Synchronized ] 상태인걸 확인하자

여기까지 이클립스 내 톰캣으로 서블릿을 실행시켰음
서블릿을 실행시키는 방법이 두 가지가 있는 것이지 서블릿을 호출하는 방법이 두 가지가 있는건 아님
톰캣으로 서블릿을 실행시켰으니 앞서 해봤던 방법대로 웹 브라우저 내 주소표시줄에 http://localhost:8080/studyProject/ex01 입력해 서블릿을 호출해보자
그러면 역시나 브라우저 상에서는 흰 화면만 나오고 이클립스 내 Console 을 보면 서블릿 내 적어둔 소스 코드가 실행되 문장이 출력됬을 것

여기까지! 길었던 서블릿을 두 가지 방법으로 실행시켜봤음
마지막으로 정리를 한번 해보자
서블릿을 실행하는 방법은 두 가지 방법이 있음
1. C 드라이브 내 톰캣으로 서블릿을 실행 : 실제 개발자가 되서 접하는 실행 방법으로 개발이 끝난 웹 프로젝트를 서비스할 때 사용하는 방법
2. 이클립스 내 톰캣으로 서블릿을 실행 : 개발자가 되기 위해 공부할 때 접하는 실행 방법
실제 개발자가 되면 두 가지 방법 모두를 사용해 서블릿을 실행시키고 취업 준비생일 때는 2번 방법만 사용해 서블릿을 실행시킴
개발자도 우선 개발을 하고 테스트를 해야하니까 빠르게 개발하고 테스트를 하기 위해 2번 방법으로 개발 & 테스트를 하고 개발 & 테스트가 다 끝나면 사람들이 이용할 수 있도록 서비스를 해야하니까 1번의 방법으로 서비스를 함
참고로 이렇게 개발이 끝난 웹 프로젝트를 사람들이 이용할 수 있도록 서비스한다는걸 "배포한다" 라고 함
서블릿을 실행한다는건 서블릿이 호출될 수 있도록 준비하는 한다는 것
서블릿을 호출해야 서블릿 안에 있는 코드가 동작함
'Servlet + JSP > Serlvet-Chapter02' 카테고리의 다른 글
| Chapter02. 서블릿 추가 & 등록, 실행, 요청(호출) (0) | 2023.02.24 |
|---|---|
| Chapter02. 서블릿 추가, 등록, 실행, 요청(호출) (0) | 2023.02.24 |
| Chapter02. 서버, URL, 포트 (0) | 2023.02.24 |
| Chapter02. 용어 정의 (0) | 2023.02.24 |
| Chapter02. 웹 프로젝트의 구조 이해와 웹 프로젝트 만들기 (0) | 2023.02.23 |