<%! ... %>
JSP 페이지 내에서 사용될 Java 변수나 메서드를 선언할 수 있는 영역입니다. 전역 변수(멤버 변수)를 선언할 때 사용합니다.
<% ... %>
가장 일반적으로 많이 사용되는 스크립트 요소,
지역변수로 선언되며, 메서드는 선언할 수 없습니다.
JSP에서는 스크립트릿 문법을 주로 사용하며,
문장 블록을 닫지 않고 끝낼 수 있어 제어문 처리에서 유연하게 사용할 수 있습니다.
① 선언문에서 선언되는 모든 변수들은 JSP 페이지 전체에서 접근할 수 있는 변수들이고, JSP 페이지 내에서 메서드가 필요하다면 반드시 선언문에서 선언해야합니다.
② 스크립틀릿에서 선언된 변수는 지역변수이기 때문에 반드시 초기화 해주어야 합니다.
<body>
// 스크립트 선언, 지역변수
<%
String world = team + " world!";
%>
// 선언문, 멤버변수
// 스크립틀릿보다 늦게 선언되어도 사용 가능
<%!
String hello = "Hello,";
%>
</body>
<%= ... %>
변수, 계산식, 메서드 호출 결과를 문자열 형태로 출력할 때 사용합니다.
조건적인 if/else는 표현식으로 사용할 수 없고, 삼항 연산자는 조건 검사의 결과 값을 리턴하기 때문에 사용이 가능합니다.
▪ HTML 형식의 주석 : <!-- 주석입력 -->
▪ JSP 형식의 주석 : <%-- 주석입력 --%>
▪ 스크립트 요소의 주석 : <% /* 여러줄 주석 */ %>
<% // 한줄 주석 %>
JSP 페이지에 대한 정보를 설정합니다.
컨테이너에서 처리하는데 필요한 속성을 기술하며, 대부분 소스코드 맨 앞에 위치합니다.
✔ page 지시자의 종류
| 속성 | 설명 | 값 |
|---|---|---|
| info | JSP 페이지 설명 작성 | 텍스트 |
| language | 스크립트 언어 유형 지정 | 스크립팅 언어 |
| contentType | MIME 형식 지정, charset 설정 | MIME 타입 |
| extends | 상속받는 부모 클래스 | 클래스명 |
| import | 외부 자바 패키지, 클래스 불러옴 | 클래스/패키지명 |
| session | HttpSession 사용 여부 지정 | 클래스/패키지명 |
| buffer | 출력 버퍼 크기 지정 | buffer 값 |
| autoFlush | 버퍼가 가득 찼을 경우 자동으로 버퍼를 지울지 여부 지정 | boolean |
| isThreadSafe | 다중 스레드를 사용할 수 있는지 여부 지정 | boolean |
| trimDirectiveWhitespaces | 줄바꿈, 공백제거 | boolean |
| errorPage | 오류가 발생할 경우 호출될 페이지 지정 | 로컬 URL |
| isErrorPage | 예외를 처리하는 페이지인지 지정 | boolean |
| pageEncoding | 해당 JSP 파일 인코딩 값 | 인코딩값 |
// page 예시
// contentType 속성
<%@ page contentType="text/html;charset=UTF-8" language="java"%>
// import 속성
<%@ page import="java.util.Date"%>
// isELlgnored 속성
<%@ page isELlgnored="true"%>
JSP 페이지 특정 영역에 다른 문서를 포함할 때 사용합니다. 포함할 수 있는 외부 파일은 HTML, JSP, 텍스트 파일 등이 가능합니다.
top(메뉴)와 bottom(푸터) 같은 공통된 부분을 별도의 JSP 파일로 만들어 코드 재사용이 가능합니다.
<%@ include file="파일명" %>
// include 예시
<%@ include file="directiveTop.jsp" %>
JSP 페이지에서 사용할 태그 라이브러리를 설정합니다.
<%@ taglib uri="경로" prefix="태그 식별자"%>
▪ uri 속성은 사용자가 정의한 태그의 설정 정보를 가진 경로 주소입니다.
스크립트 요소, 주석, 지시자와 함께 JSP 문법에 속하는 태그로, 어떤 동작 또는 액션이 일어나는 시점에 페이지와 페이지 사이에 제어를 이동시킬 수 있고, 브라우저에서 자바 애플릿을 실행시킬 수도 있습니다.
다른 페이지를 현재 페이지에 포함시킬 수 있는 기능을 가지고 있습니다.
✔ include 지시자/액션 태그 차이
<jsp:include page="로컬 URL" flush="true"/>
flush 속성은 포함될 페이지로 이동할 때 현재 페이지가 지금까지 출력 버퍼에 저장한 결과를 어떻게 처리할 것인가를 결정합니다.
다른 페이지로 이동할 때 사용되는 태그,
jsp 페이지 내에 forward 액션 태그를 만나면 forward 태그가 있던 jsp 페이지의 모든 내용을 버리고 forward 태그가 지정하는 다른 페이지로 이동합니다.
사용자가 입력한 값의 조건에 의해 여러 페이지로 이동해야 할 경우 등 사용 가능합니다.
// 사용 방식
<jsp:forward page="로컬URL"/>
<jsp:forward page="로컬URL"></jsp:forward>
<jsp:forward page='<%=expression%>'/>
<jsp:declaration>코드</jsp:declaration>
<jsp:scriptler>코드</jsp:scriptlet>
<jsp:expression>코드</jsp:expression>
<jsp:directive.page contentType="text/html; charset=EUC-KR"/>
<jsp:directive.include file="xxx.jsp"/>
▪ plug-in
<jsp:plugin> 액션은 자바 플러그인(Java Plug-in)을 사용하여 자바 애플릿을 jsp 페이지에서 실행할 때 사용하는 액션 태그입니다.
▪ useBean
자바빈즈(JavaBeans)와 통신을 위해서 구현한 액션 태그
<jsp:useBean id=".." scope=".."/>
<jsp:setProperty name=".." property=".." value=".."/>
<jsp:getProperty name=".." property=".."/>