Servlet과 JSP

윤현우·2023년 2월 15일
0
post-thumbnail

오늘은 자바 웹 기술의 기초가 되는 Servlet과 Jsp에 대해 공부한 것에 대해 복습을 해보겠다.

Servlet

Servlet 발전과정

인터넷이 발달 되기 전에는 대부분의 웹 페이지가 정적인 페이지로 이루어져 있었다.

데이터간의 통신이 활발하지 않고 페이지를 들어가 다른페이지를 넘어가면 모두가 같은 화면을 보는 환경이었다.

--> 클라이언트가 웹 페이지를 요청하면 Web Server( 예시: NGINX, APACHE )으로부터 정적 웹 페이지(또는 사진, 영상)을 받아 클라이언트에게 보여준다.

시간이 지나 인터넷이 발전해 가며, 사람들은 본인의 아이디 같은 자신이 필요한 데이터가 필요했던 것이다.

그럴려면 웹페이지에서 데이터를 주고 받아야 하는데,

Servlet이 그 역할을 해주는 것이다.

Servlet이란, 웹 기반의 요청에 대한 동적인 처리가 가능한 하나의 클래스이다.

웹페이지에서의 데이터 간 전송 및 요청은 Http API로 이동이 된다.
(Web Application Server: 애플리케이션 로직(데이터 요청 및 응답)을 사용하는 서버를 이용하여 이동)( 예시: tomcat )

Servlet은 웹 개발에서 데이터간 이동을 도와주는 역할이다.


Servlet의 특징

Servlet이란

클라이언트의 요청을 처리하고, 그 결과를 반환하는 Servlet 클래스의 구현 규칙을 지킨 자바 웹 프로그래밍 기술

Servlet 특징

  • 자바 소스코드 속에 HTML코드가 들어가는 형태

  • Server Side에서 돌아가는 Java Program

  • 클라이언트의 요청에 대해 동적으로 작동하는 웹 어플리케이션 컴포넌트

  • html을 사용하여 요청에 응답한다.

  • Java Thread를 이용하여 동작한다.

  • MVC 패턴에서 Controller로 이용된다.

  • HTTP 프로토콜 서비스를 지원하는 javax.servlet.http.HttpServlet 클래스를 상속받는다.

  • UDP보다 처리 속도가 느리다.

  • HTML 변경 시 Servlet을 재컴파일해야 하는 단점이 있다.


Servlet 동작 방식

  • 사용자(클라이언트)가 URL을 입력하면 HTTP Request가 Servlet Container로 전송합니다.

  • 요청을 전송받은 Servlet Container는 HttpServletRequest, HttpServletResponse 객체를 생성합니다.

  • web.xml을 기반으로 사용자가 요청한 URL이 어느 서블릿에 대한 요청인지 찾습니다.

  • 해당 서블릿에서 service메소드를 호출한 후 클리아언트의 GET, POST여부에 따라 doGet() 또는 doPost()를 호출합니다.

  • doGet() or doPost() 메소드는 동적 페이지를 생성한 후 HttpServletResponse객체에 응답을 보냅니다.

  • 응답이 끝나면 HttpServletRequest, HttpServletResponse 두 객체를 소멸시킵니다.


Servlet 예

이처럼 필요한 요청받은 데이터를 받고 응답한 후, HTML코드를 자바로 작성하였다.

Servlet에서 Jsp로

Servlet을 이용하여 웹 페이지를 만드려다 보니 자바로 HTML코드를 작성해야되고, 유지보수 하기 어렵다 보니, 요번에는 HTML코드안에 자바 코드를 넣는 JSP가 새로 탄생하게 되었다.


JSP

JSP의 특징

JSP란,

Java 언어를 기반으로 하는 Server Side 스크립트 언어

JSP도 똑같이 데이터의 요청 및 응답을 받아 웹 페이지로 보여주는 도구이다.

JSP 특징

  • HTML 코드에 Java 코드를 넣어 동적인 웹 페이지를 생성하는 웹 어플리케이션 도구

    • JSP를 통해 정적인 HTML과 동적으로 생성된 contents(HTTP 요청 파라미터)를 혼합하여 사용할 수 있다.
    • 즉, 사용자가 입력한 contents에 맞게 동적인 웹 페이지를 생성한다.
  • Servlet 기술의 확장

    • Servlet를 보완한 스크립트 방식 표준
    • Servlet의 모든 기능 + 추가적인 기능
  • jsp 확장자

  • Client 요청에 동적으로 작동하고 응답은 html을 이용

  • jsp파일은 .java 파일로 변환되고 컴파일을 거쳐서 .class 파일로 변환되어 실행

    (index.jsp 파일이 index_jsp.java로 변환되고 index_jsp.class 로 변환)


JSP 예

이렇게 HTML코드 안에 자바 코드가 들어가 데이터 요청 및 응답을 받는다.

But..

JSP는 HTML 생성에 대한 것은 편리하지만, 비즈니스 로직까지 너무 많은 역할 담당을 하게 된다.

그래서 결국 웹페이지와 비즈니스 로직이 합쳐져 수천, 수만 줄의 코드가 생성되게 되고, 결국 유지보수가 힘들어지게 되었다.


그래서..

이러한 단점들 때문에 클라이언트에게 보여지는 뷰는 JSP가, 데이터 로직은 Servlet을 사용하면서, 각각의 장점을 살려 부분을 나누었다. 이것이 MVC 패턴이 되시겠다.

jsp는 아직도 si회사나 전자정부프레임워크를 보면 자주 사용되는 것을 볼 수 있다.

그리고 나에게는 Servlet은 스프링을 배우려면 공부를 해야하는 필수 사항처럼 느껴진다.

Servlet을 공부하게 되면 저절로 JSP도 공부하게 된다고 한다.

그래도 스프링과 자바를 공부하면서 Servlet과 JSP를 모르는 나에게 웹 개발 배경이 이런식으로 돌아갔구나라는 것을 알게되었다.


정리

스프링과 자바를 공부하는데 Servlet과 JSP를 알아야된다는 사람들이 많아서 기본 배경과 지식을 알고 공부하려 했지만, 인터넷에 내가 원하는 배경지식이 잘 나와있지 않았다.(사실 구글링을 잘 못하긴 함ㅋㅋ) 적당한 정보를 알고 공부하는 것이 아무것도 모르고 공부하는 것보다 낫다고 생각하는 나에게 지금한 복습은 좋은 공부였다고 생각한다. 다른 사람들도 이 포스트를 보고 Servlet과 JSP에 대한 배경지식을 알아갔으면 좋겠다.

profile
개발자가 되는 그날까지

0개의 댓글