본문 바로가기
IT/JSP + JQuery

[JSP] 선언, 스크립틀릿, 표현식

by AngieLee 2021. 6. 14.

선언

선언에서 변수, 메서드를 선언한다.

변수, 메서드 선언비 반드시 ; (세미콜론)가 필요하다.

 

<%! 선언문; %>

 

* 선언에서 선언된 변수, 메서드는 처음 요청이 있을 때 한 번만 호출된다.

따라서 계속되는 요구에도 변수의 값은 초기화되지 않고,

JSP컨테이너(Tomcat 등)를 다시 시작할 때까지 값이 유지된다.

 

 

스크립틀릿

스크립틀릿은 JSP 태그에서는 표현할 수 없는 작업을 Java 코드를 작성하고

자유로운 작업을 수행하는 경우에 사용한다.

Java 코드를 위한 각 코드에는 반드시 ; (세미콜론)가 필요하다.

 

<% 스크립틀릿; %>

 

* 스크립틀릿에서 선언 된 변수는 요청 때마다 호출된다.

따라서 그 요청이 있을 때 마다 변수의 값이 초기화된다.

 

 

표현식

식에서는 Java 코드를 작성하고 그 결과를 표시한다.

따라서 실행 결과를 반환 코드 밖에 기술할 수는 없다.

실행 결과를 리턴하지 void 메서드나 변수의 선언만 식으로 설명할 수 없다.

식에서는 ; (세미콜론)가 필요하지 않다.

 

<%= 표현식 %>

 

식으로 작성할 수 있는 코드(O)

코드 설명
<%= abc %> 변수 abc의 값을 표시한다.
<%= getValue() %> 메소드 getValue의 실행 결과를 표시한다.

 

식으로 작성할 수 없는 코드(X)

코드 설명
<%= int abc=0 %> 변수 abc 선언.
<%= setValue() %> 반환 값이 void 메소드 setValue 실행.

 

 

예제)  태그에 변수를 선언하고 페이지가 처리 될 때마다 값을 1 씩 증가.

 

변수 num은 선언 태그에 선언하고,

변수 numS는 스크립틀릿에서 선언을 해보았다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

<%! int num=0; %> 
선언부에서 선언한 num: <%= num++ %> 

<br><br>

<% int numS = 0; %>
스크립틀릿에 선언한 numS: <%= numS++ %>

</body>
</html>

 

실행결과

Refresh를 눌렀을 경우

num의 숫자는 계속 올라가는 반면, numS의 숫자는 계속 0에 머물러 있다.