【问题标题】:How do I run POCO C++ server pages?如何运行 POCO C++ 服务器页面?
【发布时间】:2011-09-30 13:55:07
【问题描述】:

我是 C++ 服务器页面的初学者。我已经尝试过 micronovae 的 C++ Server Pages,但无法连接它用来给出链接错误“undefined reference to SQLAllocHandle@12”的 ODBC,我无法解决它。与 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 中创建了新项目并添加了这两个文件并进行了编译。几乎没有问题,但后来我更新了环境变量,一切正常。但是还有最后一个错误,“....Unresolved symbol _main....”。

里面没有main..那么我该如何运行这个程序呢? 如果不是这个程序,至少有人会概述如何在 html 中嵌入 C++ 代码,编译并运行它..!

【问题讨论】:

  • 有关信息,另请查看klone,谷歌Native Client;不是我推荐用 C++ 做网站,只是展示其他选项
  • 嗨,谢谢您的快速回复。然而,本机客户端不是我正在查看的,因为在 NativeClient C++ 代码由浏览器执行(就像 javascript 一样)。我想要的有点类似于 php 或 asp(服务器端脚本)。 “klone”似乎很合适,但它不是免费的(1950 欧元!)。有没有类似的免费许可?
  • 没关系。不管怎样,谢谢你的链接,我不知道!

标签: c++ html poco-libraries


【解决方案1】:

您展示的示例仅创建单个页面(处理程序)实现。

您需要添加一个实际的 HTTPServer 来提供该页面。

见:http://pocoproject.org/docs/Poco.Net.HTTPServer.html

源码下载中有一个示例

 poco-1.4.2p1.zip\poco-1.4.2p1\Net\samples\HTTPTimeServer

你应该能够从那里得到一些工作

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-08
    • 2021-12-25
    • 1970-01-01
    • 2013-07-07
    • 2018-12-11
    • 1970-01-01
    • 2012-05-19
    相关资源
    最近更新 更多