我是 C++ 服务器页面的初学者。我试过 micronovae 的 C++ Server Pages,但无法连接 ODBC,它曾经给出链接错误“undefined reference to SQLAllocHandle@12
”,我无法解决它。与 micronovae 类似,POCO 也提供了 C++ Server Pages。所以想尝试一下。我尝试了 http://pocoproject.org/docs/PageCompilerUserGuide.html#0 中的一个样本.
我所做的是,首先创建一个名为 TimeHandler.html 的文件以及其中的以下内容:
<%@ 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>
然后,我在命令提示符下使用了命令行 Pagecompiler 工具,即 CPSPCD,它生成了以下两个文件,..
1) TimeHandler.cpp
#include "TimeHandler.h"
#include "Poco/Net/HTTPServerRequest.h"
#include "Poco/Net/HTTPServerResponse.h"
#include "Poco/Net/HTMLForm.h"
#line 2 "C:\\Users\\Admin\\Desktop\\data structures\\vinz\\TimeHandler.html"
#include "Poco/DateTime.h"
#include "Poco/DateTimeFormatter.h"
#include "Poco/DateTimeFormat.h"
using Poco::DateTime;
using Poco::DateTimeFormatter;
using Poco::DateTimeFormat;
void TimeHandler::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::HTTPServerResponse& response)
{
response.setChunkedTransferEncoding(true);
response.setContentType("text/html");
Poco::Net::HTMLForm form(request, request.stream());
std::ostream& responseStream = response.send();
responseStream << "";
responseStream << "\n";
responseStream << "";
responseStream << "\n";
responseStream << "\n";
responseStream << "";
#line 13 "C:\\Users\\Admin\\Desktop\\data structures\\vinz\\TimeHandler.html"
DateTime now;
std::string dt(DateTimeFormatter::format(now, DateTimeFormat::SORTABLE_FORMAT));
responseStream << "\n";
responseStream << "<html>\n";
responseStream << "<head>\n";
responseStream << "<title>Time Sample</title>\n";
responseStream << "</head>\n";
responseStream << "<body>\n";
responseStream << "<h1>Time Sample</h1>\n";
responseStream << "<p>";
#line 23 "C:\\Users\\Admin\\Desktop\\data structures\\vinz\\TimeHandler.html"
responseStream << ( dt );
responseStream << "</p>\n";
responseStream << "</body>\n";
responseStream << "</html>";
}
2) TimeHandler.h
#ifndef TimeHandler_INCLUDED
#define TimeHandler_INCLUDED
#include "Poco/Net/HTTPRequestHandler.h"
class TimeHandler: public Poco::Net::HTTPRequestHandler
{
public:
void handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::HTTPServerResponse& response);
};
#endif // TimeHandler_INCLUDED
然后我在 VS 2010 中创建了新项目并添加了这两个文件并进行了编译。几乎没有什么问题,但后来我更新了环境变量并且一切正常。但是还有最后一个错误,“....未解析的符号 _main...”。
里面没有main..那么我该如何运行这个程序呢?? 如果不是这个程序,至少有人会概述如何在 html 中嵌入 C++ 代码,编译并运行它......!
最佳答案
您展示的示例仅创建单个页面(处理程序)实现。
您需要添加一个实际的 HTTPServer为该页面提供服务。
参见:http://pocoproject.org/docs/Poco.Net.HTTPServer.html
资源下载中有示例
poco-1.4.2p1.zip\poco-1.4.2p1\Net\samples\HTTPTimeServer
你应该能够从那里得到一些东西
关于c++ - 如何运行 POCO C++ 服务器页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7611416/