JSP/Servlet | JSP(Java Server Pages) | 여러 줄의 코드 실행


이제는 JSP에서 Java 코드가 서버 측에서 실행되는 것은 알았다. 그러나 <%= ~ %>에서 가능한 것은 한 문장의 결과를 출력할 뿐이었다. 이렇게 밖에 할 수 없다면 조금 곤란하다. 더 긴 문장의 코드를 실행해야 하는 경우가 많을 것이다.

이러한 경우에 사용되는 것이 <% ~ %> 이 태그이다. 이것은 <%에서 %>사이에 Java 코드를 작성하면 작성된 내용이 실행된다. 이는 결과를 출력하는 것이 아니라, 단지 실행을 하는 것이기에, 필요에 따라 결과를 출력하는 처리는 직접 써줘야 한다.

또 하나 알아야 할 것이 “import” 이다. Java에서는 자주 사용하는 클래스는 패키지 이름을 지정하지 않고 클래스 이름만으로 사용할 수 있도록, 서두에 import 문을 추가하는 것이 일반적이다. 이는 page 지시문을 사용하여 지정한다.

<%@ page import="클래스 지정"%>

이와 같이 기술하면 지정된 클래스는 패키지를 생략하고 사용할 수 있다. 물론 와일드 카드( *)를 사용할 수 있다.

그럼 앞의 예제를 조금 수정해 보자.

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@ page import="java.util.Calendar" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%
Calendar calendar = Calendar.getInstance();
SimpleDateFormat format = new SimpleDateFormat("yyyy년 MM월 dd일");
String result = format.format(calendar.getTime());
%>
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Sample jsp</title>
    <style>
    h1 {font-size:16pt; background:#AAFFAA; padding:5px; }
    </style>
</head>
<body>
    <h1>Sample jsp page</h1>
    <p>이 페이지는 쌤플입니다.</p>
    <p><% out.println(result); %></p>
</body>
</html>

위와 같이 수정한 후에 다시 실행해 보면, 오늘 날짜가 표시되는 것을 확인할 수 있다. 이번에는 SimpleDateFormat를 사용해 Date를 지정한 포맷으로 표시하고 있다.

암묵적인 객체 “out"에 대해

이번 예제에서는 포맷된 텍스트 출력을 하는 곳에 <%= ~ %>를 사용하지 않고, `out.println (result);와 같이 하면 출력된다. 이 “out"이라는 것은 도대체 무엇인가?

이것은 JSP에 특유의 것으로 “암묵적인 객체"라는 것이다. 암묵적인 객체는 JSP 코드에서 아무것도 선언 등을 하지 않고, 어째든 마음대로 사용할 수 있는 객체이다.

이 “out"은 JspWriter라는 클래스의 인스턴스인데, 쉽게 생각해서 System.out의 out의 동료라고 생각하면 된다. 이 중에 포함되어 있는 print와 println 같은 출력의 메소드를 호출하면 그것이 그대로 Web 페이지에 출력된다. 이는 자주 사용하므로 기억해 두자.