소개
PageCompiler는 HTML 파일들을(그리고 다른 종류의 파일들) C++ 코드로 번역해주는 커맨드 라인 도구 이다. 더 정확하게는 Poco::Net::HTTPRequestHandler의 서브클래스이다. 소스 파일들은 C++ 코드로 embedd를 허락하는 특별한 지시문(directive)을 포함할 수 있다. 이 지시문의 syntax는 JSP(Java Server Pages)와 ASP(Active Server Pages)에서 사용되는 syntax에 기초한다.
다음에 소개되는 샘플은 현재 날ㅉ와 시간을 보여주는 간단한 페이지를 위한 코드를 보여준다.
<%@ page class="TimeHandler" %>
<%!
#include "Poco/DateTime.h"
#include "Poco/DateTimeFormatter.h"
#include "Poco/DateTimeFormat.h"
using Poco::DateTime;
using Poco::DateTimeFormatter;
using Poco::DateTimeFormat;
%>
<%
DateTime now;
std::string dt(DateTimeFormatter::format(now, DateTimeFormat::SORTABLE_FORMAT));
%>
<html>
<head>
<title>Time Sample</title>
</head>
<body>
<h1>Time Sample</h1>
<p><%= dt %></p>
</body>
</html>
위의 코드를 page 컴파일러로 보내는 것은 헤더 파일(TimeHandler.h)와 구현 파일(TimerHandler.cpp)의 2개의 파일을 생성할 것이다. 이 파일들은 TimeHandler라는 이름의 Poco::Net::HTTPRequestHandler의 서브클래스를 정의한다. 생성된 handleRequet 멤버 함수는 Scriptlet 태그사이에서 발견되는 C++ 코드 조각만큼 잘 클라이언트로 소스 파일에 포함된 HTML 코드를 보내는 코드를 포함한다.
C++ 서버 페이지 Syntax
다음의 특별한 태그들은 C++ 서버 페이지(CPSP, C++ Server Page) 파일에서 지원된다.
숨겨진 주석
숨겨진 주석은 CPSP 파일을 문서화하지만 클라이언트로 보내지는 않는다.
<%-- <comment> --%>
구현 선언
구현 선언은 표준 #include 지시문을 포함하는 블럭 다음에 즉시 구현 파일로 복사된다. 추가적인 헤더 파일들과 나중에 필요한 클래스들을 정의하기 위해 using 선언들을 포함시키기위해 사용한다.
<%!
<declaration>
...
%>
헤더 선언
헤더 선언은 표준 #include 지시문을 포함하는 블럭 다음에 즉시 구현 파일로 복사된다. 만약 커스텀 기반 클래스가 필요하다면, 요청 핸들러를 위한 기반 클래스의 선언을 포함하는 헤더 파일을 포함하기 위해서 일반작으로 사용된다.
<%!!
<declaration>
...
%>
.
.
.