Servlet 과 JSP
동적 HTML을 구성하는 방법은 여러가지가 있다
Perl ,
PHP ,
JSP나 Servlet을 사용하기도 한다
자바가 가진 네트워크 프로그램에서 장점이나, 프로그램의 깔끔함은 저주받은 I/O 성능에 비해 아주 대단하다 할 수 있으므로 JSP나 Servlet을 이용하지 않을 이유가 없다
JSP를 이해하기 위해서는 Servlet을 먼저 이해해야 한다
Servlet은 동적으로 HTML을 생성하는 자바 프로그램이라고 볼 수 있다.
서블릿은 동작 원리가 정해져 있다
메모리에 최초 로딩 될 때 수행 되어져야 하는 내용의 것들이 init()에 작성되고,
실제 Client에 제공하는 서비스 내용이 Service()에 작성되며, 메모리에서 해제 될 때 수행 되어지는 것들이 destroy()에 작성 된다
서블릿의 init()과 destroy()에서 하는 일은 고정적인 일이다
모든 서블릿에 대해서 공통적으로 수행하는 일들이기 때문에 기본 Servlet class에서 위 메소드는 정의 되어 있다
Client의 요청에 따라 실제 서비스를 해야 하는 것은 요구에 따라 다 다르기 때문에 service() 메소드는 따로 프로그래머가 정의를 해야 한다
사용자 2명이 동시에 서버에 요청을 보내면, service를 수행하는 쓰레드가 2개 만들어져 동작한다
그런데, 자바코드로 HTML Page를 만들어 내면 코드 내부의 HTML이 직관적이지 못하다는 문제가 생긴다
테이블을 만들기 위해 for문과 print문이 반복되는 것은 그래도 이해 할 만 하지만,
조금 더 복잡한 테이블의 경우 코드 사이즈가 길어지더라도 HTML 코드로 만들었을 때가 오히려 더 직관적으로 이해하기 쉽다
JSP는 이런 문제점을 해결하기 위한 대안이라고 할 수 있다
그러므로 짐작하는 바와 같이 JSP는 자바 코드와 HTML 코드를 함께 쓸 수 있게 되어 있다
JSP는 기본적으로 HTML 코드에 바탕을 두고 있고, 자바 코드를 삽입할 수 있는 영역을 할당 해준다고 보는 편이 쉽다
디자이너나 퍼블리셔가 표현하고자 하는 페이지 형태는 HTML 코드를 이용해 만든다
그리고 동적으로 바뀌는 부분들만 개발자가 자바 코드를 이용해 페이지에 작업한다
이것이 JSP를 사용하는 목적이다
JSP Container (웹 컨테이너의 한 부류==웹로직, 톰캣)는 JSP 페이지를 바로 이해하지는 못한다
JSP Container는 Servlet만 이해 할 수 있으며, JSP 파일에 대해서는 사전에 Servlet Class로 변환하는 과정을 거친다
위에서 설명한 Servlet 동작 원리와 함께 정리하면 JSP Container는 JSP 파일이 변경이 되었거나 새로 만들어져서 Servlet Class로 변환해야 하는지를 확인하고, 그런 경우 Servlet Class로 변환한 뒤 메모리에 적재한다
메모리에 적재될 때 최초 init() 메소드를 수행하고 요청에 따라서 servlet() 메소드가 쓰레드로 요청을 수행한다. 메모리에 해제되면서 destroy() 메소드를 수행한다
http://www.thinkonweb.com/jspbook/lecture/Chapter03.pdf - 참조
'Server Enterprise > Doc' 카테고리의 다른 글
URI Encoding (0) | 2013.02.17 |
---|---|
객체지향 프로그래밍(object-oriented programming) 캡슐화(Encapsulation) (0) | 2013.01.08 |
EJB (Enterprise JavaBean)에 관해 주저리. (0) | 2013.01.05 |
J2EE (Java 2 Enterprise Edition) (0) | 2013.01.05 |
웹서버와 웹컨테이너, 웹 어플리케이션 서버에 관한 고찰 (0) | 2013.01.05 |