JSP (Java Server Page)
서블릿 기술을 확장 시켜(기존에 불편함을 개선하여) 웹환경에서 손쉬운 개발을 하기위하여 만든 기술
Version
JSP 1.1, 1.2, 2.0, 2.1, 2.2
Servlet 2.2, 2.3, 2.4, 2.5, 3.0
JSP/Servlet 버젼은 웹 컨테이너 (WAS, 웹 애플리케이션 서버) 에서 지원하는 버젼을 확인 해야 함
(톰켓의 경우 이곳에서 확인 가능 http://tomcat.apache.org/whichversion.html)
자바의 웹 애플리케이션을 구현하기 위해 작성해야 하는 코드로, 이 서블릿은 웹 컨테이너를 통해 생성되고, 실행되며,
소멸하게 됩니다. 클라이언트 (사용자)의 요청과 응답을 처리하는 클래스 입니다.
JSP는 서블릿이 되더라 -> http://cafe.naver.com/buldon/1047
웹 컨테이너란 (WebContainer)?
서블릿 클래스 또는 JSP 파일을 실행하기 위한 실행 환경을 제공하는 역할을 하고, 요청을 처리한 후 응답을 내보내 웹서버에 전달하는 기능을 제공해줍니다.
(JDK가 설치되어 있어야 웹 컨테이너를 설치할 수 있죠)
WAS (Web Application Server) 라고도 합니다.
웹 컨테이너의 종류
Tomcat, Resin, WebLogic, Jeus, Jetty, WebSphere, JBOSS 등
웹 서버란 (WebServer)?
클라이언트/서버 모델과 웹의 HTTP를 사용하여 웹 페이지가 들어 있는 파일을 사용자들에게 제공
웹서버와 웹 컨테이너 동작원리
서블릿라이프사이클(Servlet Life Cycle,생명주기및동작원리)
서블릿 관련 클래스 다이어그램
서블릿 클래스 구현 (클래스다이어그램의 맨 하단에 있는 서블릿 클래스)
web.xml 에 서블릿 정보 설정
서블릿 클래스
웹 브라우저의 결과 보기
요청시 마다 1씩 증가하는 모습을 볼 수 있습니다.
서블릿 클래스에 멤버변수로 선언되어 있는 num 변수의 값이 모든 요청에 대해 공유하게 됩니다.
서블릿 클래스는 싱글톤 입니다. 즉, 기존에 객체가 메모리에 존재한다면 그 객체를 다시 돌려줍니다.
init, doGet, doPost, destroy 를 오버라이딩 한 후 서블릿 클래스를 만들었습니다.
순서로 보자면
2. init() 메소드 호출
3. 서블릿클래스 Thread 생성 후 service() 메소드 호출
(service() 메소드는 부모클래스인 HttpServlet에 존재)
4. service() 메소드내에서 오버라이드한 자식클래스의 doGe을 호출 (POST 요청시 doPost 호출)
부모클래스에서 자식클래스 메소드 호출 -> http://ufx.kr/blog/407
여기서 init() 메소드는 최초요청시 한번만 호출 됩니다.
destroy() 메소드 또한 한번만 호출되며, 컨테이너 종료될 때, 타임아웃 되었을 때, class 내용이 변경되었을 때 호출 됩니다.