본문 바로가기

개발언어/Java

서블릿(Servlet)이란

 예전에 호기심으로 웹에 대해 공부를 시작하며 처음 JSP를 접하게 됐는데 그땐 그냥 관심일  뿐이어서 깊게 공부하지 않았었습니다.

그러다 최근 이직을 하며, 프로그래밍 내에서 분야가 완전 바뀌게 되어서 스스로 정리할 필요성을 느껴 처음부터 제대로 정리하고 가자는 생각에 글을 쓰게 되네요.

일단 처음으로 JSP를 공부하며 자주 접했던 용어인 Servlet에 대해 정리하고 넘어갈까 합니다.




자바 서블릿(Java Servlet)


 자바 서블릿(Java Servlet)은 자바를 사용하여 웹페이지를 동적으로 생성하는 서버측 프로그램 혹은 그 사양을 말하며, 흔히 "서블릿"이라 불린다. 자바 서블릿은 웹 서버의 성능을 향상하기 위해 사용되는 자바 클래스의 일종이다. 서블릿은 JSP와 비슷한 점이 있지만, JSP가 HTML 문서 안에 JAVA 코드를 포함하고 있는 반면, 서블릿은 자바 코드 안에 HTML을 포함하고 있다는 차이점이 있다. - 위키백과


 자세히 찾아보기 위해 일단 위키백과의 내용부터 찾아 봤는데, 위키백과 치곤 생각보다 바로 이해돼서 놀랬습니다.  

그래도 일단 좀 더 세세하게 파고들어 보겠습니다. 



첫번째, 웹페이지를 동적으로 생성 


 웹페이지를 분류하는 방법중에 한가지는 정적인 웹페이지(Static Web Page)와 동적인 웹페이지(Dynamic Web Page) 입니다. 정적인 웹페이지는 서버에서 미리 저장된 파일을 요청에 따라 그대로 전달해주는 방식을 말합니다. 이 경우 페이지는 서버의 어떤 데이터가 있느냐만 중요하고 그 데이터가 바뀌지 않는다면 항상 같은 웹페이지를 클라이언트에게  제공합니다. 그렇다면 동적인 웹페이지는 이와는 다르게 클라이언트의 요청을 해석한 후 그에 맞게 데이터를 가공하여 다시 클라이언트에게 보내줍니다. 즉 사용자의 상황, 시간, 요청등에 따라 달라지게 되는것입니다. 즉, 현재 저희가 사용하는 대부분의 프로그램은 동적 웹페이지라고 생각하시면 됩니다. 



두번째, JSP가 HTML 문서 안에 JAVA 코드를 포함하고 있는 반면, 서블릿은 자바 코드 안에 HTML을 포함하고 있다


 JSP의 일반적인 구조는 일반적으로 HTML 파일 내부에서 모든것을 호출하는 구조입니다. HTML 파일 안에 JAVA 코드를 <% %>와 같은 방식으로 호출하거나 단순히 참조형식으로 불러올 수도 있는 구조입니다. 반면 서블릿은 클라이언트의 요청에 대한 응답을 자바코드(get혹은 Post)로 받아서 처리를 한 후 이를 토대로 HTML 파일을 만들어 결과로 전달해주는 구조입니다.      





 두 내용을 조합해 보면 클라이언트에 대한 요청을 Java코드로 처리하여 상황에 맞게 동적으로 Html파일을 만들어 돌려준다 정도로 정리가 가능할 것 같습니다. Java는 이러한 역할을 하는 메소드를 모아서 클래스화 하고 API로 만들었고 이를 Servlet 이라고 부르면 이 API 가 모여있는 클래스가 HttpServlet 입니다.

 그러므로 서블릿을 사용하기 위해서는 HttpServlet 클래스를 상속 받아야 하며 이러한 규칙을 지켜서 만든 어플리케이션을 자바 서블릿이라고 부릅니다.


 하지만 이러한 서블릿은 구현의 면이라던가 사용하는 면에서 불편한 점이 여럿 존재하는데 이러한 단점을 보완하기 위해서 좀 더 쉬운 방식으로 전체적인 프로그램을 구현해 이를 다시 서블릿 형태로 바꿔주는 것이 JSP 입니다.