자바 서블릿

서블렛 JSP 파일의 수명. **자바 서블릿**(Java Servlet)은 자바를 사용하여 웹페이지를 동적으로 생성하는 서버측 프로그램 혹은 그 사양을 말하며, 흔히 "서블릿"이라 불린다. 자바 서블릿은 웹 서버의 성능을 향상하기 위해 사용되는 '자바 클래스'의 일종이다. 서블릿은 JSP와 비슷한 점이 있지만, JSP가 HTML 문서 안에 자바 코드를 포함하고 있는 반면, 서블릿은 자바 코드 안에 HTML을 포함하고 있다는 차이점이 있다. 자바 서블릿은 자바 EE 사양의 일부분으로, 주로 이 기능을 이용하여 쇼핑몰이나 온라인 뱅킹 등의 다양한 웹 시스템이 구현되고 있다. 비슷한 기술로는 펄 등을 이용한 CGI, PHP를 아파치 웹 서버 프로세스에서 동작하게 하는 mod_php, 마이크로소프트사의 IIS에서 동작하는 ASP 등이 있다. CGI는 요청이 있을 때마다 새로운 프로세스가 생성되어 응답하는 데 비해, 자바 서블릿은 외부 요청마다 프로세스보다 가벼운 스레드로써 응답하므로 보다 가볍다. 또한, 자바 서블릿은 자바로 구현되므로 다양한 플랫폼에서 동작한다.
# 버전의 역사
자바 서블릿 API는 1996년 5월 자바원 콘퍼런스에서 처음 공식 발표되었다.url-status=deadaccess-date=2020-08-20 콘퍼런스 발표 이후 약 2개월 째 되던 날, 자바소프트 웹사이트에 최초 공개 구현체가 만들어졌다. 이것은 최초 알파 버전의 자바 웹 서버(Java Web Server, JWS. 코드명 *Jeeves*)url-status=dead였으며 1997년 6월 5일 최종 제품화되었다.url-status=dead 서블릿1 사양은 Pavni Diwanji가url-status=dead 썬 마이크로시스템즈에서 일하는 동안 개발한 것으로, 버전 1.0은 1997년 6월 완성되었다. 버전 2.2를 기점으로 이 사양은 자바 커뮤니티 프로세스를 통해 개발되었다. {| class="wikitable" |+ 자바 서블릿 API 역사 ! 서블릿 API 버전 !! 발표 !! 자바 플랫폼!! 중요한 변화 |- | 서블릿 4.0 ||2017년 9월|| JavaEE 8 || HTTP/2 |- | 서블릿 3.1 || 2013년 5월 || JavaEE 7 || 비차단 방식의 I/O, HTTP 프로토콜 업그레이드 구조 |- | 서블릿 3.0 || 2009년 1월 || JavaEE 6, JavaSE 6 || JSR 315, Ajax 대응 비동기 지원, 어노테이션에 의한 개발편의성, web.xml 없는 개발 및 배포 |- | 서블릿 2.5 || 2005년 9월 || JavaEE 5 , J2SE 5.0 || JSR 154, Requires J2SE 5.0, supports annotations |- | 서블릿 2.4 || 2003년 11월|| J2EE 1.4, J2SE 1.3|| JSR 154, web.xml uses XML Schema |- | 서블릿 2.3 || 2001년 8월|| J2EE 1.3, J2SE 1.2 || Addition of `Filter`s |- | 서블릿 2.2 || 1999년 8월|| J2EE 1.2, J2SE 1.2 || Becomes part of J2EE, introduced independent web applications in .war files |- | 서블릿 2.1 || 1998년 11월 || 미규정 || First official specification, added `RequestDispatcher`, `ServletContext` |- | 서블릿 2.0 || || JDK 1.1 || Part of Java Servlet Development Kit 2.0 |- | 서블릿 1.0 ||1997년 6월|| || |}
# 아파치 톰캣 호환정보
* en Apache Tomcat * en Tomcat is a free, open-source implementation of Java Servlet and JavaServer Pages technologies developed under the Jakarta project at the Apache Software Foundation. Sun adapts and integrates the Tomcat code base into the J2EE Reference Implementation. Tomcat is available for commercial use under the ASF license from the Apache web site in both binary and source versions. * 4.X Release Build : Tomcat 4 is an implementation of the Java Servlet 2.3 specification. * 3.3 Release Build : Tomcat 3.3 is an implementation of the Java Servlet 2.2 specification. * en Tomcat is available at the Jakarta binary downloads page. * Tomcat 3 supports the Servlet 2.2 and JSP 1.1 specifications with minimum Java Version 1.1. * Tomcat 4 supports the Servlet 2.3 and JSP 1.2 specifications with minimum Java Version 1.3. * Tomcat 5 supports the Servlet 2.4 and JSP 2.0 specifications with minimum Java Version 1.4. * Tomcat 6 supports the Servlet 2.5 and JSP 2.1 specifications with minimum Java Version 1.5. * Tomcat 7 supports the Servlet 3.0 and JSP 2.2 specifications with minimum Java Version 1.6.
# 예제
import java.io.IOException; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ServletLifeCycleExample extends HttpServlet { private int count; @Override public void init(ServletConfig config) throws ServletException { super.init(config); getServletContext().log("init() called"); count = 0; } @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { getServletContext().log("service() called"); count++; response.getWriter().write("Incrementing the count: count = " + count); } @Override public void destroy() { getServletContext().log("destroy() called"); } }