서블릿과 동일하게 웹 애플리케이션에서 동적 컨텐츠를 만들기 위해 제공되는 기술이다.
서블릿으로 변환되어 실행되므로 변환 후 서블릿 객체와 동일하게 서블릿 컨테이너에 의해 생성되고 관리된다.
서블릿이 자바 코드 사이에 HTML 디자인이 포함되는 구조라면, JSP는 반대로 HTML 디자인 사이에 필요한 만큼의 자바 코드가 추가되는 구조다.
결국 JSP는 서블릿보다 좀 더 디자인 친화적인 기술이며, 유지보수 과정에서 디자인 변경이 수월하다.
또한 JSP는 web.xml 파일에 등록하거나 어노테이션을 추가할 필요가 없고, 소스 수정 시 리로딩하지 않아도 된다.

JSP는 서블릿과 마찬가지로 HTML 태그를 이용하여 사용자에게 UI 화면을 제공한다.
화면에 출력할 데이터를 획득하고 출력하는 과정에서 다양한 자바 코드를 사용하는데, 이때 자바 코드 사용과 관련한 다섯 가지의 스크립트 기반 태그를 제공한다.
그 중 지시자는 JSP가 서블릿 클래스로 변환될 때 서블릿 클래스에 어떤 내용을 반영할지를 지시할 때 사용하며, 스크립트 기반 태그 중 가장 다양하고 복잡하다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%> <!-- 지시자 -->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<div>
<jsp:include page="../common/menubar.jsp"/> <!-- 메뉴바 화면 코드 삽입됨 -->
</div>
</body>
</html>
page 지시자는 JSP가 서블릿으로 변환할 때 반영해야 하는 다양한 정보를 설정한다.
[출처] 채쌤의 Servlet&JSP프로그래밍 핵심, 채규태, 쌤즈****
본 포스팅은 멀티캠퍼스의 멀티잇 백엔드 개발(Java)의 교육을 수강하고 작성되었습니다.