[JSP] JSP 기본 요소 03 - JSP 스크립트 요소

jsp

목차

  1. 개요
  2. 선언문
  3. 스크립틀릿
  4. 표현식



개요

JSP 스크립트 요소는 JSP 페이지 내에 자바의 코드를 삽입하기 위해 사용되며 선언문(Declaration), 스크립틀릿(Scriptlet), 표현식(Expression)이 있다.


선언문

<%! ... %>

JSP 페이지에서 자바 코드의 멤버 변수와 메소드 선언하기 위해 사용된다. 선언된 변수는 JSP 파일이 컴파일될 때 멤버 변수로 인식되기 때문에 JSP 페이지의 어느 위치에서도 해당 변수를 참조하는 것이 가능하다.

declarationTest.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<h1><%=getStr()%></h1>
<%!
private String getStr() {
    str+=" 테스트입니다.";
    return str;
}
private String str = "선언문";
%>

결과

0301

멤버 변수이므로 어디서든 선언된다. 멤버 변수가 헷갈리면 여기 참고.


스크립틀릿

<% ... %>

JSP는 서블릿 코딩의 어려움을 극복하기 위해 개발된 방식이다. HTML 코드로 된 부분은 일반 HTML 파일처럼 사용하고 자바 코드로 이루어진 비즈니스 로직 부분은 스크립틀릿 태그를 사용하여 구분하여 쉽게 HTML 응답을 만들어 낼 수 있다.

+ 선언된 변수는 지역 변수로 인식되므로 변수를 선언하기 이전의 위치에서 참조가 불가능하다. (선언문의 멤버 변수와 반대!)

scriptletTest.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.util.Calendar" %>
<%
Calendar c = Calendar.getInstance();
int hour = c.get(Calendar.HOUR_OF_DAY);
int min = c.get(Calendar.MINUTE);
int sec = c.get(Calendar.SECOND);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Scriplet Test</title>
</head>
<body>
<h1>현재 시간은 <%=hour %><%=min %><%=sec %>초 입니다.</h1>
</body>
</html>

결과

0302

실제로 아래 위치로 가면 servlet 파일로 변환된 것을 확인할 수 있다.

0303


표현식

<%= 변수 %>
<%= 리턴 값이 있는 메소드%>
<%= 수식(변수 또는 리턴 값이 있는 메소드를 포함할  있음)%>

선언문 또는 스크립틀릿 태그에서 선언된 변수 값이나 메소드의 리턴 값을 스크립틀릿 태그 외부에서 출력하기 위해 사용되는 방법이다. 구문 전체의 결과 값이 JSP 파일이 파싱될 때 출력 객체의 print() 메소드를 통해 자동으로 문자열 형식으로 변환되어 출력된다.

+ 표현식 태그 내의 구문 전체가 하나의 print() 메소드의 괄호 안에 통째로 들어가게 되므로 표현식 태그 내부에서 ;를 사용하면 안 됨!

expressionTest.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%!
	public  int sum() {
	int total = 0;
	for (int i=1; i<=100; i++)
		total+=i;
	return total;
	}
%>
<%
String str = "1부터 100까지의 합";
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Expression Test</title>
</head>
<body>
<h2><%=str%><b><%= sum() %></b>입니다.</h2><br>
<h2><%=str%>에 3을 곱하면 <b><%=sum()*3 %>이 됩니다.</b></h2>	<br>
<h2><%=str%>을 1000으로 나누면 <b><%=sum()/1000%></b>이 됩니다.</h2>
</body>
</html>

결과

0304