스크립트 기반 태그란, HTML, 텍스트 등과 같은 정적인 데이터와 함께 JSP 구문 요소를 이용하는 것이다. 스크립트 기반 태그에는 주석문, 지시자, 스크립트릿, 표현식, 선언문이 있다.
종류 | 구문 |
---|---|
JSP 주석 | <%-- --> |
HTML 주석 | <!-- --> |
java 주석 | //한줄주석 /*여러줄 주석*/ |
page 지시자는 현재 문서의 속성이나 정보 등을 선언 또는 지시하는 역할을 한다. page 지시자에 의해 사용할 수 있는 속성은 다음과 같다.
<%@ page
language="java"
pageEncoding="UTF-8"
session = "true"
buffer="8kb"
autoFlush="true"
isThreadSafe="true"
info="jsp문서정보"
errorPage="error.jsp"
%>
여러 속성을 한군데에 써도 되고 따로 따로 써도 된다.
language="java"
=> 언어는 자바사용
pageEncoding은 UTF-8
=> 한글 깨지지 않게 하기 위함
errorPage="error.jsp"
=> 에러 발생시 error.jsp 파일을 열어 처리함
contentType="text/html; charset=UTF-8"
별도로 지정하지 않으면, 문서타입은 HTML, 문자코드는 ISO-8859-1로 지정된다.
<%@page import="java.time.LocalDateTime"%>
<%@page import="java.time.ZoneId"
import="java.time.LocalDate"
import="java.sql.*"%>
java의 import와 똑같은 역할이라고 생각하면 된다.
하나의 JSP 페이지는 여러 JSP 파일의 일부일 수 있다. 이 때, include 지시자는 사용된 페이지에서 요청한 소스코드를 텍스트에 포함해서 하나로 인식해서 컴파일한다. include 지시자를 이용하면 다른 파일에 있는 코드를 가져다 사용할 수 있다.
[구문]
<% include file = "파일명" %>
[사용방법]
다른페이지에 include되어 사용될 페이지 작성 -> 원래 작성하던 jsp 파일에서 include 작성
(java_web5_jsp/test3.jsp)
스크립트릿은 JSP페이지가 요청될 때마다 수행되어야 하는 자바 코드를 추가하고자 할 때 사용하는 태그이다. <% %> 안의 코드는 자바 소스로 변환시 _jspService() 메소드 내로 그대로 옮겨져 <% %> 안의 코드는 메소드 안에 들어갈 수 있는 실행문으로 지정하며 이 실행문은 클라이너트로부터 요청할 때마다 수행된다.
[구문]
<% 실행문 %>
<%
// 날짜 및 시간
LocalDateTime now = LocalDateTime.now(ZoneId.of("Asia/Seoul"));
int year = now.getYear();
int hour = now.getHour();
out.println(year + "년 어느날 "+hour+"시에 실습을 진행함");
%>
표현식은 java의 내용을 출력하는데 딱하나만 출력한다. 따라서 세미콜론(;)을 쓰면 안된다.
[구문]
<%= 실행문 %>
<%= "kor : "+kor %>
<%= "kor : "+kor; "eng : "+eng %> // error
선언문은 JSP 페이지 내의 스크립트 코드에서 사용할 멤버 변수를 선언하거나 메소드를 정의하고자 할 때 사용되는 특별한 목적의 태그로서, 선언문을 이용해 작성한 코드는 자바 소스로 변환 시 멤버로 선언된다.
[구문]
<%! 변수 선언, 메소드 선언 %>
<%
// error
public int add(int su1, int su2){
return su1+su2;
}
%>
<%!
// 선언문을 사용해서 클래스의 멤버 메소드 만들기
public int add(int su1, int su2){
return su1+su2;
}
%>
위에는 에러 아래는 잘 작동한다. 위가 에러가 나는 이유는 메소드안에 메소드를 쓰면 안되기 때문이다. 따라서, 선언문으로 바꿔서 쓰게 되면 클래스의 멤버가 되서 잘 작동하게 된다.
참고 문헌 : 처음해보는 Servlet&JSP 웹프로그래밍