본문 바로가기
dev/Servlet

[Servlet] Servlet, ServletContainer

by dev_Step 2022. 1. 18.

CGI 란 Common Gateway Interface 라고하며, 웹서버와 프로그램 사이의 데이터를 주고받는 규칙입니다.

CGI 프로그램은 C언어나, C++, JAVA와 같은 컴파일 언어로 작성할수 있으며, Perl,PHP,Python, VBScript 등의 

스크립트 언어로도 작성할수 있다.

 

JAVA로 만든 CGI 프로그램을 Servlet이라고 부르며, Servlet은 웹서버와 직접 데이터를 주고 받는게 아닌 

Servlet Container 를 통해서 관리가 됩니다.

 

WebServer <--> Client 사이에 데이터를 서로 요청하고 응답을 

HTTP Request , Http Response 를 통해서 주고받습니다.

 

이때 Web Server는 Client에게서온 HTTP Requset를 Servlet Container 에게 전달해 줍니다.

-WebServer 는 정적인 요청에 의한 응답을 하거나 동적인 요청이 올경우 Servlet Container에게 요청을 전달

Servlet Container 가 요청에 대한 처리를위하여 Servlet을 생성하고, 초기화init() 하여 Service()를 실시 합니다.

요청자의 방식에 의해 doGet(), doPost() 방식으로 요청되어지고, 요청에 의해 처리된 결과는 다시 

WebServer 에 의해서 HTTP Response 응답을 통해서 Client 에게 전달됩니다.

 

이때 중요한것은 Servlet Container 의 역할인데.. 

보통WebServer + Servlet container(WebContainer) 를 Tomcat이라고 부르며 Web Application Server라고도 합니다.

Servlet Container 는 동적인처리가 가능함

 

이 Servlet Container 는  

web.xml 에 의하여 Client 가 어떤 URL을 요청했을때 어떤 Servlet 파일을 실행해 놓을것인지 맵핑을 해놓습니다.

Client 에 의해서 HTTP Request 가 오면,  Tomcat은 web.xml 에 의해서 맵핑된 Servlet (java->servlet)을 실행시킵니다.

(Servlet이 Servlet Container에 없을경우, Servlet이 생성되며 init()에 의해 초기화가 된다.(Tomcat이 stop되기 전까지 생성된 Servlet은 유지되며, Tomcat이 stop될경우 destroy() 함수에 의해 Servlet이 사라진다.))

Servlet의 구조는 HttpServlet 클래스를 상속하며, HTTP요청 메서드인 doGet(), doPost()를 오버라이딩(Service())

하고 있으며, 매개 변수로 HttpServletRequest, HttpServletResponse클래스를 갖고있습니다.

request의 경우는 클라이언트가 요청할때 함께 전송한 데이터들이 포함되어 있습니다.

-URL 파라미터(get), form에서 전송한데이터(post)

response의 경우 서버에서 클라이언트로 응답할 때 필요한 데이터들이 들어있음

-응답결과 상태코드 또는 클라이언트가 요청한 HTML문서(페이지)

Servlet을 통해서 응답할경우 HTML을 직접 작성하여 응답할경우 실수하거나, 사용하기 불편하기 때문에

HTML문서에 Java코드를 넣을수 있는 JSP를 통해서 페이지 응답을 실시합니다.

JSP는 MVC패턴에서 View에 해당합니다.

JSP/Servlet을 사용한다는 것은 "모든요청은 Servlet으로 받고 Client에게 응답할 페이지는 JSP를통해 작성한다입니다.

 

 

 

이는 web.xml 에 <welcome-file-list><welcome-file></welcom-file></welcome-file-list>

welcome file을 등록하지 않으면 / 루트 경로에 맵핑된 주소가 없기 때문에 404 에러가 발생한다.

HTML파일을 ,jsp 파일을 생성하여 welcome-file으로 등록해줘야한다.

 

 

welcome file 을 등록해준후 root에서도 페이지가 정상적으로 띄워지는것을 확인할 수 있습니다.

 

 

--https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html 페이지를 참고하였습니다.

'dev > Servlet' 카테고리의 다른 글

[Servlet] Servlet 특징2  (0) 2022.05.27
[Servlet] Servlet 특징  (0) 2022.05.27