강의 출처 https://www.youtube.com/playlist?list=PLq8wAnVUcTFVOtENMsujSgtv2TOsMy8zd
01 - 학습 안내
02 - 웹 서버 프로그램이란
- 스프링이 제공하는 프론트 컨트롤러 라이브러리(=dispatcher)를 통해서 컨트롤러를 만들 수 있음
- url 요청이 왔을 때 알맞는 컨트롤러에 배분해주는 역할
- 과거에는 톰캣의 web.xml 또는 url-mapping을 해주거나 어노테이션 설정을 했었는데
- 그 내용이 *-.servlet.xml로 들어가게 된 것
03 - 웹 서버 프로그램과 Servlet
(?)
- server application
: 동적으로 문서를 만드는 코드들
그걸 실행하게 해주는 환경 2가지
1. Web Server
2. WAS (web appliacation server)
웹서버에 사용자가 요구하는 내용의 코드를 실행하고, 실행된 결과를 보여주게 하는 어떤 것
- 자바 웹 개발을 위해 사용하는 대표적인 WAS: 톰캣 9 (Web server 기능도 포함되어있음: 웹문서를 제공해줌)
그리고 이 WAS에서 실행될 수 있도록 하는 그런 server application
servlet
요청에 따라 서버에 의해 찾아지는 코드들, 근데 서버 어플리케이션은 그 때 그 때 파편화된 애가 실행되고 끝나버림.
이렇게 조각나 있는 서버 어플리케이션 = servlet
- tomcat은 web+was?
web(nginx, apache...), was(tomcat....)를 보통 따로 둠
- 하지만, 자바 기반으로 서블릿이나 JSP로 웹 서비스를 만들어서 운영할 때는 tomcat이 web,was 를 한번에 처리하는 것으로 가능
- 물론, PHP나 장고 같은 다양한 WAS 를 함께 이용하여 웹 서비스를 운영하려면 웹서버를 별도로 운영해야함
05 - 톰캣 9 웹문서 추가해보기
톰캣 웹서버 원리
웹서버는 예약되어있는 어떤 특정 폴더root
가 있고,
이 특정 폴더에 문서를 저장하고 nana.txt
그거를 다른 원격에 있는 컴퓨터의 브라우저를 통해서 (아마 톰캣 서버?)
서버 주소localhost:8080
와 함께 리소스의 이름nana.txt
을 입력해주면 페이지를 돌려주는구나.
06 - Context 사이트 추가하기
- 규모가 큰 경우에는 이렇게 context 를 이용해서 팀을 나눠서 만드는 경우도 많다
07 - 처음으로 서블릿 프로그램 만들어보기
Servlet( Server Application Let)
기능별로 코드가 나눠져있어서 필요에 따라서 필요한 기능의 코드를 실행할 수 있게되어있는 형태
- 사용자(클라이언트 어플리케이션)이 웹서버, was이라는 환경을 통해
- notice/list를 달라고 요청하면 list라는 서블릿만 실행하고
- edit을 달라고 하면 edit이라는 서블릿만 실행하게 되는 것
- 다른 것들은 로드 되지 않음
- 왜냐면, 수 많은 조각(기능)들이 있는데 모든 기능이 다 사용되지 않기 때문에 어쩌다가 요청이 들어오면 그것만 사용하기위해
- 그래서, 효율성을 위해서 웹이라는 환경에서 사용되는 그런 Server 프로그램이다 보니까 필요에 따라 로드될 수 있도록 다 조각나 있음
→ Servlet( Server서버 Application어플리케이션 Let조각)
그럼 어떻게 만들 것이냐?
Service라고 하는 이름의 함수를 통해서 만든다.
문제는, java 실행 클래스 파일과 다른 점은void ???
는 main()
함수가 아님
- 모든 class 들은 WAS에 의해 로드되고 실행되고 결과 돌려줌
class ???
만으로는 인식할 수 없음
- 약속되어있는 interface 또는 추상클래스로 인식
: HttpServlet
라는 추상클래스의 자료형식으로 WAS가 servlet을 참조하게 되고, 그 servlet이 호출하는 정해져있는 void ???
클래스 함수를 인식
그렇게 HttpServlet
을 통해 약속되어있는 걸 따라 void service를 쓰게 됨
- 그렇게 해서 만들어진 이런 클래스의 경우는 이름따라 Nana 서블릿이라고 함
- 서블릿
HttpServlet
을 상속받고 있는 모든 구현 클래스는 다 서블릿 클래스가 되기 때문에
이클립스 없이 서비스 함수 만들어보기
08 - 서블릿 객체 생성과 실행 방법
- web-inf안의 클래스 파일(자바 서버 어플리케이션)을 사용자가 직접 호출해서 실행하는 것이 아님
서블릿이 실행되는 방식
자바 서버 어플리케이션에 있는 내용은 WAS나 웹서버(톰캣)만 알고있으면 됨
- 자바 서버 어플리케이션에 있는 프로그램을 실행해주는 건 내가(WAS나 웹서버) 해줄테니 사용자는 어떤 걸 원하는지 말을 해다오
- 사용자는 /edit라는 이름으로 요청
- 그럼 해당 url이름으로 매핑된 Servlet 코드를 찾아서 실행해줌
순서
단, web-inf는 절대 외부에서 접근할 수 있는 위치가 아니라 안됨
web.xml로 매핑
이어서 서버 콘솔말고 화면에 출력해볼 것 : HttpServletResponse를 통해
09 - 서블릿(Servlet) 문자열 출력
웹에서 입력, 출력이란
Servlet이라는 것은, 자바 웹 프로그래밍으로 만드는 방식
- 웹이 담당하고 있는 것은 = UI
- 입력, 출력을 담당하는 부분이 웹으로 바뀌는 것
- 즉, 웹이라고 하는 것은
- 서버에서 클라이언트로 전달되는(원격으로 데이터를 보내는) 형태를 말하는 것
- 또는, 클라이언트로부터 입력을 받을 수 있는(원격으로부터 입력을 받는) 방법을 다루는 것
그걸 해주는 HttpServletRequest, Response
service 함수는 2개의 인자를 전해주고 있음
HttpServletRequest
객체: 서블릿을 만들 때 필요한 요청 도구
HttpServletResponse
객체: 서블릿을 만들 때 필요한 응답(출력) 도구
얘네를 통해 기존에 자바에서 사용했던 것과 똑같이 만들 수 있지만, 입출력을 web으로 할 수 있다는 차이!
10 - 웹 개발을 위한 이클립스 IDE 준비하기
근데 수정사항을 앞처럼 생으로 반영하려면...
- 메모장 소스코드 고치고, ter에서 컴파일 다시하고, 배포도 다시하고, 서버도 다시 실행해야하고, 브라우저 띄워서 주소도 다시 입력해야함
이걸 쉽게 할 수 있게하는 통합 개발 환경인 이클립스를 이용하는 것
프로젝트를 만드는 건, 서블릿 코드가 만들어지는 게 아니라
서블릿 코드를 만들고 실행하기 위한 여러 정보가 만들어지기 위한 환경이 되는 것
그 중 하나가, 실행환경 Target Runtime
톰캣을 사용할 거지만, 물론 was(서블릿을 실행해주는 것)가 톰캣만 있는 것은 아님