【问题标题】:cppcms - why is hello world with url mapping not working?cppcms - 为什么带有 url 映射的 hello world 不起作用?
【发布时间】:2013-10-08 18:53:03
【问题描述】:

我在使用 url 映射的 cppcms hello world example 时遇到问题。

我无法理解这部分内容:

int main(int argc,char ** argv)
{  
    try {
        cppcms::service srv(argc,argv);


        srv.applications_pool().mount(
                cppcms::applications_factory<hello>() //i do not understand this part
        );

        srv.run();
    }
    catch(std::exception const &e) {
        std::cerr << e.what() << std::endl;
    }
}

在教程中说 /hello - Welcome 函数会被调用,但这不是正在发生的事情。 而是调用此方法:

void hello::main(std::string /*url*/)
{
    response().out() <<
        "<html>\n"
        "<body>\n"
        "  <h1>Hello World</h1>\n"
        "</body>\n"
        "</html>\n";
}

Welcome 方法如下所示,它定义在 hello 类的范围内:

void welcome()
{
    response().out() <<
        "<h1> Welcome To Page with links </h1>\n"
        "<a href='" << url("/number",1)  << "'>1</a><br>\n"
        "<a href='" << url("/number",15) << "'>15</a><br>\n"
        "<a href='" << url("/smile") << "' >:-)</a><br>\n";
}

如果你能帮助我,我需要一些答案。我只是想了解一下,所以如果您能指出正确的方向,那就太好了。

【问题讨论】:

  • 是它不工作,还是你不明白它是如何工作的
  • 我不明白它是如何工作的。你知道一些关于 cppcms 的好文档吗?

标签: c++ cppcms


【解决方案1】:

您需要在 hello 构造函数中设置映射,如 hello world 示例和您在答案中发布的链接所示。

特别是这部分:

dispatcher().assign("",&hello::welcome,this);  
mapper().assign("");  

mapper().root("/hello");  

这会将 hello 应用程序的默认路由映射到“welcome”方法。如果您不设置映射,它将默认为 main。

【讨论】:

    【解决方案2】:

    我个人对这个库了解不多,但它看起来像一行:

    cppcms::applications_factory<hello>()
    

    您将服务器与某种hello 类关联并实例化。不过我

    【讨论】:

      猜你喜欢
      • 2020-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-12
      • 1970-01-01
      • 2012-07-11
      • 1970-01-01
      • 2023-03-25
      相关资源
      最近更新 更多