Servlet
Servlet(서블릿)
자바 플랫폼에서 컴포넌트를 기반으로 한 웹 애플리케이션을 개발할 때 사용하는 핵심기술로,
동적인 웹 컨텐츠 생성을 가능하게 하는 기술이다.
JSP + 자바기술을 사용 가능하게 해 주는 기술로,
클라이언트 요청을 처리하고 그 결과를 다시 클라이언트에게 전송하는 Servlet 클래스의 구현 규칙을 지킨 자바 프로그램이다.
Servlet의 장점
1. 스레드를 기반으로 하므로 웹 애플리케이션 운영에 효율적이다.
2. 자바를 기반으로 하므로 자바 API를 모두 사용할 수 있다.
3. 운영체제나 하드웨어에 영향을 받지 않으므로, 한번 개발된 애플리케이션은 다양한 서버 환경에서도 실행이 가능하다.
4. 웹 애플리케이션에서 효율적인 자료 공유 방법을 제공한다.
Servlet Container (서블릿 컨데이너) - 서블릿을 관리한다.
: 서블릿 구조와 클라이언트 요청이 있을 때 처리하는 순서

① 웹 서버는 클라이언트 요청을 컨테이너로 전달한다. 컨테이너는 서블릿이 메모리에 있는지 확인하고 없을 경우,
클라이언트 요청을 처리할 서블릿을 생성해서 스레드로 처리한다.
② 서블릿은 JDBC를 이용해 데이터베이스에 접근할 수 있고, 별도로 제작된 자바 클래스를 통해 다양한 기능을 구현한다.
③ 서블릿에서 수행된 결과는 HTML형식으로 클라이언트에 전송된다.
웹 애플리케이션개발할 때 MVC패턴에서 서블릿(Servlet)을 사용하면 좋은 점
1. 컨텐츠와 비즈니스 로직을 분리할 수 있다.
2. 컨트롤러와 뷰의 역할 분담으로 인해 웹 디자이너와 개발자 간의 원활한 작업이 가능하다.
3. 유지보수가 수월하다.
4. 기능 확장이 용이하다.
5. 현재와 같이 프로그래머가 HTML, 자바스크립트, 스타일시트와 같은 복잡한 기술을 모두 알아야 할 필요는 없다.
6. JSP 페이지에 HTML,CSS, 자바스크립트 와 자바 소스 코드가 뒤섞이는 스파게티 소스를 막을 수 있다.
서블릿(Servlet)객체의 상속 구조
: 서블릿의 상속 구조와 클라이언트 요청이 있을 때 처리하는 순서

GET방식과 POST방식
■ GET 방식
* 서버에 있는 정보를 가져오기 위해 설계된 방법이다(예를 들어 HTML, 이미지 등을 웹 브라우저에서 가져오기)
* 서버로 전달할 수 있는 데이터 크기는 최대 1024바이트까지 가능하다.(사실 웹브라우저의 영향을 받는다.) •QUERY_STRING 환경변수를 통해서 서버로 전달되는데, 다음 형식을 따른다.
http://www.xxx.co.kr/servlet/login?id=hj&name=hong
* URL이 노출되기 때문에 보안 문제가 생길 수 있다.
■ POST 방식
* 서버로 정보를 올리기 위해 설계된 방법이다.(예를들어, HTML form에 입력한 내용을 서버로 전달하기(submit))
* 서버에 전달할 수 있는 데이터 크기는 제한이 없다.
* URL에는 파라미터가 표시되지 않는다.
서블릿 생명주기

■ 서블릿로딩:init() 메서드
클라이언트 요청이 들어오면 컨테이너는 해당 서블릿이 메모리에 있는지 확인한다.
해당 서블릿이 메모리에 없을 경우 서블릿을 메모리에 다시 적재 해야 하는데, 이때 서블릿의 init() 메서드가 호출되며 각종 초기화 작업을 수행한다.
■ 요청 처리 : service() 메서드
init() 메서드는 최초에 한번만 수행되고 이후 요청은 스레드로 실행되며 각각 service() 메서드를 통해 doGet()이나 doPost()로 분기된다. 이때 HttpServletRequest와 HttpServletResponse를 매개변수로 전달한다.
■ 서블릿종료 : destroy() 메서드
컨테이너로부터 서블릿 종료 요청이 있을 때 destroy() 메서드를 호출한다.
※참고
■ 비즈니스로직이란?
업무에 필요한 데이터 처리를 수행하는 응용 프로그램의 일부를 말한다.
이것은 데이터 입력, 수정, 조회 및 보고서 처리 등을 수행하는 루틴, 좀 더 엄밀히 말하면 보이는 것의 그 뒤에서 일어나는 각종 처리를 의미한다.
대개 클라이언트 프로그램은 사용자 인터페이스와 최소한의 비즈니스 로직으로 구성되며, 서버 프로그램은 대부분 비즈니스 로직만으로 되어 있다.