cppcms - 为什么url映射的hello world不起作用?

时间:2013-10-08 18:53:03

标签: c++ cppcms

我在使用网址映射的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";
}

欢迎方法看起来像这样,它在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";
}

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

2 个答案:

答案 0 :(得分:3)

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

特别是这部分:

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

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

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

答案 1 :(得分:0)

我个人对这个库并不了解,但它看起来像是在行:

cppcms::applications_factory<hello>()

您使用某种hello课程来提示服务器并进行即时通讯。但是我