Tomcat은 JSP 환경을 포함하고 있는 Servlet 컨테이너


Servlet과 jsp를 이용하여 로직을 처리한다


웹서버와 WAS는 이 처럼 동적데이터를 처리해주는 웹컨테이너의 유무 차이라고 보면 된다 


WAS = 웹 서버 + 웹 컨테이너

이미지 출처: http://gap85.tistory.com/45


사용자 요청(웹 브라우저) -> 웹 서버 -> WAS(동적 처리) -> 웹 서버 -> 사용자 응답 메세지(웹 브라우저)


웹 서버에서 JSP를 요청하면 톰캣에서는 JSP 파일을 서블릿으로 변환하여 컴파일을 수행하고, 서블릿의 수행결과를 웹 서버에서 전달하게 된다. 



출처: http://unabated.tistory.com/


Servlet이란

Servlet은 웹에서 JAVA 프로그래밍을 구현하기 위해 탄생 함.



서블릿(Servlet)

 - 자바 플랫폼에서 컴포넌트를 기반으로 한 웹 애플리케이션을 개발할 때 사용하는 핵심 기술.

   이러한 서블릿을 이용하면 웹 애플리케이션 확장이 용이하고 플랫폼에 독립적인 개발이 가능하다.

 - 쉽게 말하면 "클라이언트의 요구를 받아 그에 대한 처리를 한 후, 결과를 되돌려주는 서버 모듈"이다.


서블릿의 장점

1) 스레드를 기반으로 하기 때문에 웹 애플리케이션 운영에 효율적이다.

2) 자바를 기반으로 하므로 자바 API를 모두 사용할 수 있다.


웹 애플리케이션 개발시 서블릿 이용의 장점

1) 컨텐츠와 비즈니스 로직을 분리

2) 컨트롤러와 뷰 역할 분담으로 인해 웹 디자이너와 개발자간의 원활한 작업이 가능.

3) 유지보수가 수월, 기능 확장이 용이하다.

4) 현재와 같이 프로그래머가 HTML, 자바스크립트, 스타일 시트와 같은 복잡한 기술을 모두 알아야 할

    필요는 없다.

5) JSP에 HTML, CSS, 자바스크립트와 자바 소스 코드가 뒤섞이는 문제를 막는다.


동작 과정
1) 웹 서버는 클라이언트 요청을 컨테이너로 전달한다. 컨테이너는 서블릿이 메모리에 있는지 확인하고 없을시
   클라이언트 요청을 처리할 스레드를 생성해서 처리한다.
2) 서블릿은 JDBC를 이용해 데이터베이스에 접근할 수 있고, 별도로 제작된 자바 클래스를 통해 다양한 기능을 구현한다.
3) 서블릿에서 수행된 결과는 HTML 형식으로 클라이언트에 전달된다.

서블릿(Servlet)도 하나의 자바프로그램이긴 한데, 서블릿의 주된 업무는 사용자에게 정보를 입력받아 적절한 HTML 문서를 돌려주는 역할을 한다. 이러한 일을 하는 프로그램을 자바로 구현한 것이다. 사용자의 입력에 따라서 다른 HTML문서를 만들어내므로 동적인 HTML 문서를 구현할 수가 있게 된 것이다.

서블릿 규칙은 꽤 복잡하다. 따라서 이를 좀 더 쉽게 프로그래밍하기 위하여 나온 것이 JSP이다. JSP 문서를 실행시켜면 이 문서가 자동적으로 서블릿으로 컴파일되어 실행되게 된다.


이미지 출처: http://wiki.gurubee.net/pages/viewpage.action?pageId=26740202

.jsp -> .java -> .class -> .jsp


Servlet Container란

Servlet을 실행하고 생명주기를 관리하는 역할을 한다.

멀티 스레딩을 지원하여 클라이언트의 다중 요청을 알아서 처리해준다.

대표적인 Conatainer에는 Tomcat, jetty, jboss 등이 있다



출처: http://wan00ny.tistory.com/11

웹 개발을 배우다보면 Spring or JSP의 환경설정을 할때 web.xml파일을 자주 사용합니다.


web.xml파일에서 서블릿의 url mapping과 같은 간단한 환경 설정부터 복잡한 환경설정까지 모두 가능합니다.


그래서 XML이 무엇이고 어디에서 사용하는지 궁금해졌습니다.


대부분 그저 Spring에 xml파일이 있고,  그 파일을 이용해서 Spring 환경설정을 한다. ! 


이정도로 끝내지만, 좀 더 파고들면 XML은 문서로써 사용할 수 있고 파서로써도 사용할 수 있습니다.


아래 링크의 설명도 조금 부족하지만, 나중에 책을 구입하여 자세하게 알아봐야할 것 같습니다.



http://itstory07.tistory.com/125

사실 모델1, 모델2의 차이점은 Servlet의 사용 유무라고 해도 과언이 아니다. 하지만, 처음 웹개발을 공부하던 당시를 생각해보면


왜 JSP와 Servlet을 같이 사용하며, 각각의 차이는 무엇인가? 라는 물음에 정확한 답을 찾기 어려웠다.


하지만 최근 다시 복습을 하는 과정에서 나의 궁금증을 해결해 줄 수 있는 좋은 사이트를 찾았다.


http://anster.tistory.com/128


이런 소중한 자료를 남기고, 공유해주는 많은 프로그래머 분들에게 감사하다.


나도 제대로 된 개발자가 된다면 내가 알고 있는 많은 지식들을 공유하고 알려주고싶다.


그 날이 올때까지 블로그 운영을 꾸준히 해야겠다.


+ Recent posts