스크립트 요소

de_sj_awa·2021년 5월 19일
0

1. 스크립트 요소

JSP의 스크립트 요소는 다음의 세 가지가 있다.

  • 스크립트릿(Scriptlet)
  • 표현식(Expression)
  • 선언부(Declaration)

스크립트 요소는 JSP 프로그래밍에서 로직을 수행하는 데 필요하다. 스크립트 코드를 사용해서 프로그램이 수행해야 하는 기능을 구현할 수 있다.

2. 스크립트릿

스크립트릿(Scriptlet)은 JSP 페이지에서 자바 코드를 실행할 때 사용하는 코드 블록이다. 스크립트릿은 다음과 같은 문법 구조를 갖는다.

<%
    자바코드1;
    자바코드2;
    자바코드3;
    ....
%>

스크립트릿의 코드 블록은 '<%'로 시작해서 '%>'로 끝나며, '<%'와 '%>' 사이에는 실행할 자바 코드가 위치한다. 예를 들어, 1부터 10까지의 합을 구하는 JSP 페이지는 아래와 같은 스크립트릿을 사용하여 작성할 수 있다.

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>1부터 10까지의 합</title>
</head>
<body>
<%
    int sum = 0;
    for (int i = 0; i <= 10; i++){
        sum = sum + i;
    }
%>
1부터 10까지의 합은 <%= sum %>입니다.
</body>
</html>

실행 결과는 다음과 같다.

2. 표현식

표현식(Expression)은 어떤 값을 출력 결과에 포함시키고자 할 때 사용한다.

표현식의 구문은 다음과 같다.

<%=%>

표현식은 '<%='로 시작해서 '%>'로 끝나며, 이 둘 사이에는 출력할 값이 위치한다. 위의 예제에서 1부터 10까지의 합을 sum이라는 변수에 저장했는데, 이 변수의 값을 출력하기 위해 <%=sum>이라는 표현식을 사용했다.

위의 예제에서는 표현식의 값 부분에 변수가 왔지만, 변수뿐만 아니라 숫자나 문자열 등의 값을 표현식에서 사용할 수도 있다.

예를 들면 표현식의 값 부분에 직접 1부터 10까지의 합을 계산해서 값을 생성할 수도 있다.

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>1-10까지의 합:표현식만 사용</title>
</head>
<body>
1부터 10까지의 합은
<%= 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10%>
</body>
</html>

실행 결과는 다음과 같다.

3. 선언부

JSP 페이지의 스크립트릿이나 표현식에서 사용할 수 있는 메서드를 작성할 때는 선언부(declaration)을 사용한다. 선언부는 다음과 같은 문법 구조를 갖는다.

<%!
    public 리턴타입 메서드이름(파라미터목록){
        자바코드1;
        자바코드2;
        ...
        자바코드n;
        return;
    }
%>

선언부의 함수는 자바의 메서드와 동일하며, 각 요소는 다음과 같은 의미를 지닌다.

  • 리턴타입 : 메서드 실행 결과값의 타입을 지정한다.
  • 메서드이름 : 메서드의 이름을 의미한다.
  • 파라미터 목록 : 콤마로 구분된 파라미터의 목록을 지정한다. 파라미터는 메서드 내에서 사용될 변수이다.
  • 자바코드1-n : 메서드 내에서 실행할 자바 코드가 위치한다.
  • return 값 : 메서드의 실행 결과로 값을 리턴한다.

다음의 예시를 살펴보자. 다음의 예시는 선언부를 사용하여 두 정수의 곱을 계산해주는 예를 보여주고 있다.

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%!
    public int multiply(int a, int b){
        int c = a * b;
        return c;
    }
%>
<html>
<head>
    <title>선언부를 사용한 두 정수값의 곱</title>
</head>
<body>

10 * 25 = <%= multiply(10, 25)%>

</body>
</html>

위의 예제를 보면 선언부에서 정의한 메서드인 multiply를 사용하여 두 숫자를 곱한 결과값을 출력하였는데, 이렇게 메서드를 사용하는 것을 '메서드를 호출(call)'한다고 표현한다.

선언부에 정의한 메서드의 리턴 타입은 메서드의 결과값이 어떤 타입인지를 지정한다. 자바에서는 모든 값을 타입으로 분류한다. 예를 들어, 정수 값은 int 타입, long 타입, short 타입 등으로 표현하며, 소수점을 표현하는 실수 값은 double 타입, float 타입 등으로 표현한다. 위의 예제에서는 multiply 메서드의 리턴 타입을 정수형 타입 중 하나인 int로 지정하였다.

메서드 이름은 메서드를 구분하여기 위해서 사용된다. 메서드 이름을 아무렇게나 지을 수는 없으며, 정해진 규칙에 따라 메서드 이름을 지어야 한다. 그 규칙은 다음과 같다.

  • 메서드 이름의 첫 글자는 문자(알파벳, 한글 등) 또는 밑줄('_')로 시작해야 한다.
  • 첫 글자를 제외한 나머지는 문자와 숫자 그리고 밑줄의 조합이어야 한다.
  • 메서드 이름은 대소문자를 구분한다.

파라미터는 메서드 내부에서 변수로 사용된다. 위의 예제에서는 메서드의 파라미터로 지정한 a와 b를 변수로 사용하고 있다. 메서드를 호출할 때에 전달하는 값이 파라미터에 전달된다.

메서드를 호출할 때 지정한 값의 순서에 따라 메서드의 선언부에 나열한 파라미터의 값이 결정된다. 즉, 위의 예제처럼 첫 번째 값으로 입력한 10은 mulitply 메서드의 첫 번째 파라미터인 a에 할당된다. 마찬가지로 두 번째 값으로 입력한 25는 multiply의 두 번째 파라미터인 b에 할당된다.

실행 결과는 다음과 같다.

표현식뿐만 아니라 스크립트릿에서도 선언부에서 정의한 메서드를 사용할 수 있다. 아래의 예제는 선언부에서 정의한 메서드를 스크립트릿에서 사용하는 예제이다.

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%!
    public int add(int a, int b){
        int c = a + b;
        return c;
    }

    public int substract(int a, int b){
        int c = a - b;
        return c;
    }
%>
<html>
<head>
    <title>스크립트릿에서 선언부 사용하기</title>
</head>
<body>
<%
    int value1 = 3;
    int value2 = 9;

    int addResult = add(value1, value2);
    int substractResult = substract(value1, value2);
%>

<%=value1%> + <%=value2%> = <%=addResult%>
<br>
<%=value1%> - <%=value2%> = <%=substractResult%>

</body>
</html>

실행 결과는 다음과 같다.

참고

  • 최범균의 JSP2.3 웹 프로그래밍
profile
이것저것 관심많은 개발자.

0개의 댓글