MYCP开发指南系列之:开发第一个C++ Servlet
来源:互联网 发布:软件测试 期刊 编辑:程序博客网 时间:2024/05/17 23:13
1.1 开发第一个 C++ Servlet
C++ Servlet 跟CSP 一样,是MYCP 的web 层组件,用于输出动态HTML 页面,实现web 应用的界面显示。关于CSP 的开发规范请看《CSP_1_1.pdf 》文档,本节主要简单描述Servlet 的开发流程。
1.1.1 cspServlet.cpp 文件
新建一个cspServlet.cpp 文件,或者利用VC 新建一个普通DLL 类型工程项目。
1.1.2 添加头文件
#include <CGCBase/httpapp.h>
using namespace cgc;
1.1.3 实现标准 doGET 函数
extern "C" HTTP_STATUSCODE CGC_API doGET(const cgcHttpRequest::pointer & request, cgcHttpResponse::pointer response)
{
cgcSession::pointer session = request->getSession();
response->println("<HTML>" );
response->println("<TITLE>MYCP Web Server</TITLE>" );
response->println("<h1>Get Sample</h1>" );
response->println("<h2>Session Info:</h2>" );
if (session->isNewSession())
{
response->println("This is a new session." );
}else
{
response->println("This is not a new session." );
}
response->println("<h2>Headers:</h2>" );
std::vector<cgcKeyValue::pointer> headers;
if (request->getHeaders(headers))
{
for (size_t i=0; i<headers.size(); i++)
{
cgcKeyValue::pointer keyValue = headers[i];
response->println("%s: %s" , keyValue->getKey().c_str(), keyValue->getValue()->getStr().c_str());
}
}else
{
response->println("Not header info." );
}
response->println("<h2>Propertys:</h2>" );
std::vector<cgcKeyValue::pointer> parameters;
if (request->getParameters(parameters))
{
for (size_t i=0; i<parameters.size(); i++)
{
cgcKeyValue::pointer keyValue = parameters[i];
response->println("%s = %s" , keyValue->getKey().c_str(), keyValue->getValue()->getStr().c_str());
}
}else
{
response->println("Not property." );
}
response->println("</HTML>" );
return STATUS_CODE_200;
}
1.1.4 编译部署
编译cspServlet 工程,生成cspServlet.dll 或者libcspServlet.so 文件,复制文件到$(MYCP_BINPATH)/modules 目录。
修改$(MYCP_BINPATH)/conf/modules.xml 文件,在app 配置项增加一个组件配置项;
<app>
…
<module>
<file>cspServlet</file>
<allowall>1</allowall>
</module>
…
</app>
设置组件文件,允许开放所有函数。
1.1.5 测试 cspServlet 组件
打开浏览器,输入http://127.0.0.1:81/servlet/cspServlet ,访问cspServlet 组件的doGET 函数,如下图:
http://127.0.0.0:81 是服务器域名或IP 地址,后面带servlet 是固定格式,用于访问所有的C++ Servlet 组件,默认访问doGET 函数。
下图演示带参数访问cspServlet 组件的doGET 函数:
1.1.6 开发自定义函数
如下代码实现一下自定义函数HelloWorld :
extern "C" HTTP_STATUSCODE CGC_API doHelloWorld(const cgcHttpRequest::pointer & request, cgcHttpResponse::pointer response)
{
response->println("<HTML>" );
response->println("<TITLE>MYCP Web Server</TITLE>" );
response->println("<h1>HelloWorld Sample</h1>" );
response->println("</HTML>" );
return STATUS_CODE_200;
}
1.1.7 测试自定义函数
打开浏览器,输入http://127.0.0.1:81/servlet/cspServlet/HelloWorld ,访问cspServlet 组件的doHelloWorld 函数,如下图:
1.1.8 支持 Servlet 函数
MYCP 除了支持以下标准HTTP 函数,还支持自定义函数:
l doGET
l doPOST
l doPUT
l doDELETE
l doHEAD
l doOPTIONS
l doTRACE
l doCONNECT
1.1.9 总结
C++ Servlet 支持实现CSP 相同功能,输出动态HTML 页面,CSP 不用编译,而Servlet 需要,所以UI 层面层建议使用CSP 做开发,而Servlet 做为辅助开发,帮助实现业务处理文件的功能。
可以利用Servlet 支持的其他标准函数,如doPUT 、doDELETE 等,配合输出XML 数据,实现REST 风格开发框架。
- MYCP开发指南系列之:开发第一个C++ Servlet
- MYCP开发指南系列之:开发第一个C++ Servlet
- MYCP开发指南系列之:开发第一个C++ APP
- MYCP开发指南系列之:开发第一个C++ APP
- MYCP开发指南系列之:开发第一个客户端程序
- MYCP开发指南系列之:开发第一个RCA应用组件
- MYCP开发指南(简易教程)
- IDEA开发第一个Servlet
- MyCP入门系列之1:关于MyCP
- 【JSP开发】建立第一个Servlet项目
- 用eclipse开发第一个Servlet
- eclipse开发第一个Servlet程序
- 【iOS开发之Objective-C】新建第一个工程-HelloWorld
- storm 开发系列一 第一个程序
- java EE开发之Servlet第一课
- MyCP入门系列之2:常见问题
- 开发第一个C程序的步骤
- 第一个纯servlet MVC开发用户管理系统总结
- 工作流JBPM有关(一)
- C#
- Javascript网页打印大全
- 第一天
- 玩上CSDN
- MYCP开发指南系列之:开发第一个C++ Servlet
- (转)android adapter的学习
- 天真
- 我这个算是Strategy模式吗?
- Java该怎么学习
- ccc
- 网页
- c 的感慨
- 很平凡的一个人,但是我应该有理想