JSP(JavaServer Pages)

 

JSP(JavaServer Pages)란, 서버 측에서 동적 웹 페이지를 생성하기 위한 웹 프로그래밍 기술 중 하나이다. 

JSP는 HTML, CSS, JavaScript 등의 웹 프론트엔드 기술과 함께 사용될 수 있으며, Java 코드를 사용하여 동적으로 HTML 문서를 생성할 수 있다.

 


JSP와 서블릿


JSP는 서블릿과 밀접한 관련이 있다. JSP 페이지는 서블릿 코드로 변환되고, 서블릿으로 컴파일되어 실행된다.

JSP는 서블릿과 비교하여 웹 애플리케이션 개발을 더욱 쉽게 만들어준다. JSP는 HTML 문서 안에 Java 코드를 포함시킬 수 있으므로, 서블릿처럼 별도의 자바 파일을 생성할 필요가 없다. 또한 JSP는 HTML과 같은 마크업 언어를 사용하기 때문에, 웹 디자이너들도 쉽게 이해하고 작업할 수 있다.



JSP와 서블릿 모두 자바를 사용하여 웹 애플리케이션을 개발할 수 있지만, 각각의 한계점이 존재한다.

JSP의 경우, 복잡한 로직이나 데이터베이스 연동 등 서버 측에서 처리해야 하는 작업이 많아지면 코드가 복잡해지고 유지보수가 어려워진다. 또한, JSP 페이지를 수정하면 서블릿 코드가 다시 생성되기 때문에 서버 부하가 커질 수 있다.

서블릿의 경우, 자바 코드를 직접 작성하기 때문에 복잡한 로직이나 데이터베이스 연동 등을 처리하기에 적합하다. 그러나 HTML과 같은 마크업 언어를 사용할 수 없기 때문에, 서버 측에서 동적인 웹 페이지를 만드는 작업이 어렵다. 또한, 서블릿도 JSP와 마찬가지로 서버 부하가 커질 수 있다.

 

 


 

JSP와 서블릿의 동작

 

 

자바와 서블릿으로 이루어진 웹 컨테이너는 클라이언트로부터 HTTP 요청을 받아 처리하고, 그에 따라 HTTP 응답을 생성하여 반환한다. 이러한 웹 컨테이너는 대개 다음과 같은 구성요소를 포함한다.

 

  • 웹 서버: 클라이언트와의 HTTP 통신을 처리하는 서버. 대표적인 웹 서버로는 Apache, Nginx, IIS 등이 있다.
  • 웹 컨테이너: HTTP 요청을 받아 처리하는 자바 애플리케이션 서버. 대표적인 웹 컨테이너로는 Tomcat, Jetty, Glassfish 등이 있다.
  • 서블릿: 웹 컨테이너에서 실행되는 자바 클래스로, HTTP 요청을 처리하고 HTTP 응답을 생성하는 역할을 한다. 서블릿은 웹 애플리케이션의 비즈니스 로직을 구현하는 자바 코드를 포함할 수 있다.
  • 자바 코드: 서블릿을 비롯한 웹 애플리케이션의 로직을 구현하는 자바 코드이다. 이 코드는 클라이언트로부터의 HTTP 요청을 처리하고, HTTP 응답을 생성한다.
  • HTML, CSS, JavaScript: 웹 애플리케이션의 프론트엔드를 구현하는 마크업 언어와 스타일링 언어, 그리고 클라이언트 측에서 실행되는 스크립트 언어이다.

 

웹 컨테이너는 WAS(Web Application Server)의 하위 개념으로, 웹 애플리케이션을 실행하기 위한 서버이다.
대부분의 WAS에는 웹 컨테이너와 함께 EJB 컨테이너, JMS(Message Queue), JDBC 등 다양한 서비스가 포함되어 있다.
웹 컨테이너는 주로 웹 애플리케이션의 동적인 콘텐츠 생성을 위한 서블릿(Servlet)과 JSP(JavaServer Pages)를 실행하는 역할을 한다. 반면에 WAS는 웹 컨테이너 뿐만 아니라, EJB(Enterprise JavaBean) 컨테이너를 제공하여 비즈니스 로직을 처리하고, JMS(Message Queue)를 이용한 비동기 메시지 처리 등 다양한 기능을 제공한다.
따라서, WAS는 웹 컨테이너를 포함한 더 많은 기능을 제공하는 개념으로, 웹 애플리케이션의 전체적인 처리를 담당한다. 하지만, 일반적으로 웹 애플리케이션의 개발 및 배포를 위해서는 웹 컨테이너만으로도 충분하게 사용된다.


위에 대한 내용은 요즘에는 거의 이용하지 않는 방식이고 스프링(Spring) 프레임워크와 같은 다양한 웹 프레임워크가 등장하여, 개발자들은 이를 활용하여 보다 효율적인 웹 애플리케이션 개발을 할 수 있게 되어있으니, 개념만 이해하면 될 것 같다.

 

 

관련소스 : Git : https://github.com/ShinHenry/Basic-Servlet-Project.git

 

GitHub - ShinHenry/Basic-Servlet-Project: SpringBoot 기반 Servlet 프로젝트

SpringBoot 기반 Servlet 프로젝트. Contribute to ShinHenry/Basic-Servlet-Project development by creating an account on GitHub.

github.com

 

+ Recent posts