본문 바로가기
대덕인재개발원/고급 자바

Servlet

by from_minjoo 2024. 5. 28.

 

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() 메서드를 호출한다.


 

※참고

  비즈니스로직이란?

업무에 필요한 데이터 처리를 수행하는 응용 프로그램의 일부를 말한다.

이것은 데이터 입력, 수정, 조회 및 보고서 처리 등을 수행하는 루틴, 좀 더 엄밀히 말하면 보이는 것의 그 뒤에서 일어나는 각종 처리를 의미한다.

대개 클라이언트 프로그램은 사용자 인터페이스와 최소한의 비즈니스 로직으로 구성되며, 서버 프로그램은 대부분 비즈니스 로직만으로 되어 있다.