서블릿은 응답 기능을 이용해 화면을 구현하고, 간단하기 때문에 난이도도 높지 않다. 하지만, 웹 사이트의 화면 기능이 복잡해지면 화면을 나타내는 코드 구현도 복잡해지기 때문에 이를 해결하고자 JSP가 등장하게 되었다.
JSP
- HTML, CSS와 JS를 기반으로 JSP 요소들을 활용해 화면을 구현함(기존 서블릿에서는 자바 코드를 기반으로 문자열을 사용해 HTML과 JS 화면을 구현)
- Spring Boot에서는 JSP가 빠져 있음

JSP 페이지 구성 요소
- Directive Tag(디렉티브 태그) : 지시어
- Scripting Element(스크립트 요소) : 주석문, Scriptlet, 표현식, 선언식 -> 자바 코드 작성하는 곳
- Expression Language(표현 언어) : EL. 출력문
- 내장 객체(내장 변수) : 내가 만들지 않아도 이미 만들어져 있는 것. ex)request
- Action Tag(액션 태그)
- Custom Tag(커스텀 태그)
디렉티브 태그
- Page Directive Tag(페이지 디렉티브 태그) : JSP 페이지의 전반적인 정보를 설정할 때 사용
- Include Directive Tag(인클루드 디렉티브 태그) : 공통으로 사용하는 JSP 페이지를 다른 JSP 페이지에 추가할 때 사용함
- Taglib Directive Tag(태그라이브 디렉티브 태그) : 개발자나 프레임워크에서 제공하는 태그를 사용할 때 사용
중요한 디렉티브 태그 : contentType, import
- trimDirectiveWhitespaces를 true로 하면 공복을 모두 제거해줌(공백:로딩된 페이지에서 소스보기)

인클루드 디렉티브 태그
- 공통으로 JSP페이지를 미리 만들어 놓고 다른 JSP 페이지 요청 시 인클루드 디렉티브 태그를 사용하는 것
- 재사용성도 높아지고 유지관리도 수월해짐
- 여러 JSP 페이지에서 사용되는 공통 JSP 페이지를 만든 후 다른 JSP 페이지에서 공통 JSP 페이지를 포함시켜 사용하는 기능
<%@ include file="공통기능.jsp" %>
<두 가지 방법>
- 디렉티브 : 소스를 가져와서 실행
- 액션태그 : 소스를 실행하고 가져옴. 파라미터가 가능함. 동적 처리가 가능
name을 header에서 출력할 수 있을까?


안되는걸 알 수 있음.
이 코드는 가능함.

선언문
- 필드

여기서 느낌표를 제거하면 전역변수이고, 위의 사진과 같이 느낌표를 붙이면 전역변수 느낌으로 사용이 가능하다
스크립트릿
- JSP의 스크립트 요소는 브라우저로 전송되지 않고 전송되기 전에 컨테이너에서 자바 코드로 변환됨
<% 자바코드 %>

위의 사진처럼 h1태그를 여러번 출력하도록 반복할 수 있음