JSP의 특징
- HTML 페이지에 자바 코드를 직접 사용함
- 서블릿 컨테이너에 의해 관리되는 내장객체의 생명 주기를 이용하여 페이지 간 속성을 관리함
- 커스텀 태크 기술을 사용하여 코드를 태그화(action, JSTL등)함
- EL( Expression Language)을 통해 데이터를 표현함.

JSP의 장점
- HTML 파일에 자바 기술을 거의 무한대로 사용할 수 있으며, 비교적 쉽게 프로그래밍할 수 있음.
- 커스텀 태그 라이브러리 등 확장 태그 구조를 사용할 수 있음.
- 서블릿으로 변환되어 실행되므로 서블릿 기술의 장점을 모두 가짐
- MVC패턴, 스프링 프레임워크 등 잘 설계된 구조를 적용할 수 있어 개발 생산성이 향상되고 성능이 보장
- 모든 개발이 서버에서 이루어지므로 개발의 집중화를 통한 효율이 오름
JSP의 단점
- 화면 구성요소를 변경하면 JSP-> 자바-> 클래스-> 서블릿 실행 과정을 거치므로 개발 과정에서 사소한 UI변경일지라도 매번 확인하는데 시간이 소요됨
- 개발자와 디자이너 간 역할 분담에 제약이 있음
- JSP 파일의 화면 디자인 확인에도 반드시 서블릿 컨테이너의 실행이 필요함
지시어란?
- DIrectives
- JSP 파일의 속성을 기술하는 요소
- JSP 컨테이너에 해당 페이지를 어덯게 처리해야 하는지를 전달하는 내용을 담음
- 지시어는 크데 page,include,taglib으로 나눔
page지시어
- 현재 JSP 페이지를 컨테이너에서 처리(서블릿으로 변환)하는 데 필요한 각종 속성을 기술함
- 소스코드 맨 앞에 위치하며 이클립스에서 JSP파일을 생성할 때 자동으로 생성됨.

include 지시어
- 다른 파일을 포함하기 위한 제시어
- 사용된 위치에 특정 파일(html,jsp)을 불러옴
- 컨테이너에서는 포함된 파일을 하나로 처리하며 자바 소스를 생성한 뒤 서블릿으로 컴파일.
- 코드 재사용이 용이, 중복코드 제거
-> 절대경로를 사용하는것이 효율적
taglib지시어
- JPS의 태그 확장 매커니즘인 커스텀태그를 사용하기 위한 지시어

uri : 태그 라이브러리 위치로 태그를 정의하고 있는 .tld파일 경로를 나타냄
tagdir : 태그 파일로 태그를 구현한 경우 태그 파일 경로를 나타냄
prefix : 해당 태그를 구분해서 사용하기 위한 접두어
템플릿 데이터란?
- JSP의 화면 구성요소를 의미함
- 시작 부분의 page 지시어를 제외하면 JSP파일의 전반적인 구조는 HTML의 문서 구조를 따름. 따라서 일반적인 HTML파일처럼 CSS , 자바스크립트도 사용할 수 있음.
스크립트 요소
- JSP는 HTML과 자바 코드를 섞어 사용할 수 있는데, 이때 사용되는 자바 코드를 의미함.
- 자주 쓰이는 스크립트 요소 : <!% %>, <%= %>, <% %>
<!% %>
선언(Declaration)태그
- JSP가 서블릿 코드로 변환될 때 _ JspService()메서드 안에 들어가게 되므로 JSP에서는 일반 자바 코드와 달리 멤버 변수나 메서드 선언은 기본적으로 불가능함.
<%= %>
- 표현(Expression)태그
- 웹 브라우저를 통해 클라이언트에 전달될 (HTML응답에 포함될) 자바 표현식을 포함
- 사칙연산, 메서드호출, 변숫값 출력등에 사용됨.
- EL로 대체할 수 있음.
<% %>
- 스크립트릿(Scriptlet) 태그
- 모든 자바코드의 사용이 가능함
- MVC패턴 적용과 JSTL+EL로 대체할 수 있음.
액션(Action) 태그
- JSP에서 객체 생성과 공유, 페이지 이동과 전달, 태ㅔ그 파일 작성 등에 필요한 기능을 제공하는 일종의 커스텀 태그
- 표준 액션이라고도 불리며 커스텀 태그 기반이지만 별도의 taglib 지시어 사용 없이 jsp 접두어를 사용함

자바 빈(Java Bean)
- 자바의 재활용 가능한 컴포넌트 모델을 의미함.
- private 멤버 변수와 getter/setter 메서드로 구성할 수 있음
useBean액션
- JSP에서 자바 빈 객체를 생성하거나 참고하기 위한 액션
- 매우 유용하지만 JSP를 단순히 부 역할로만 사용한다면 사용할 일은 없음.
useBean을 주로 활용하는 경우
- HTML 폼에서 입력한 값을 자바 객체로 연동할 때 주로 활용함
- 혹은 데이터베이스와 연동할 때 사용
Include 액션
- 다른 페이지를 포함한다는 점에서 iclude 지시어와 동일하지만 처리 과정에서 차이가 있음
지시어 : iclude된 파일 구조를 모두 포함해 하나의 파일로 컴파일한 다음 처리
액션 : include된 파일을 각각 호출해 처리된 결과만 포함해 보여줌
forward 액션
- 클라이언트 요청을 다른 페이지로 전환하는 액션
- 리디렉션 과 기능적으로 유사하지만 내부적으로는 차이가 있음.
- 최초 request를 유지하거나 request의 setAttribute()로 속성값을 저장하고 유지하면서 페이지를 이동하는 경우 - forward 액션이 적합

커스텀태그란?
- Custom Tag
- 사용자 정의 태그를 의미함.
EL이란?
- 표현 언어 (Expression Language, EL)
- 현재 페이지의 자바 객체 혹은 scope object에 저장된 자바 빈 객체를 손쉽게 접근하고 사용할 수 있게 함
- EL은 단순한 출력 외에도 사칙연산, 비교연산, 논리연산, 3항 연산 등을 지원함
- 데이터를 표현하기 위한 용도로 설계되었지만, 제한된 객체 참조가 가능하며 해당 객체의 메서드 호출이 가능함
