本文整理汇总了C++中acl::HttpServletRequest::getParameter方法的典型用法代码示例。如果您正苦于以下问题:C++ HttpServletRequest::getParameter方法的具体用法?C++ HttpServletRequest::getParameter怎么用?C++ HttpServletRequest::getParameter使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类acl::HttpServletRequest
的用法示例。
在下文中一共展示了HttpServletRequest::getParameter方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: doPost
bool http_servlet::doPost(acl::HttpServletRequest& req,
acl::HttpServletResponse& res)
{
// 如果需要 http session 控制,请打开下面注释,且需要保证
// 在 master_service.cpp 的函数 thread_on_read 中设置的
// memcached 服务正常工作
/*
const char* sid = req.getSession().getAttribute("sid");
if (*sid == 0)
req.getSession().setAttribute("sid", "xxxxxx");
sid = req.getSession().getAttribute("sid");
*/
// 如果需要取得浏览器 cookie 请打开下面注释
/*
const char* mycookie = req.getCookieValue("mycookie");
if (mycookie == NULL)
res.addCookie("mycookie", "{xxx}");
*/
bool keep_alive = req.isKeepAlive();
res.setContentType("text/xml; charset=utf-8") // 设置响应字符集
.setKeepAlive(keep_alive) // 设置是否保持长连接
.setChunkedTransferEncoding(true); // 采用 chunk 传输方式
const char* param1 = req.getParameter("name1");
const char* param2 = req.getParameter("name2");
// 创建 xml 格式的数据体
acl::xml body;
body.get_root()
.add_child("root", true)
.add_child("params", true)
.add_child("param", true)
.add_attr("name1", param1 ? param1 : "null")
.get_parent()
.add_child("param", true)
.add_attr("name2", param2 ? param2 : "null");
acl::string buf;
body.build_xml(buf);
// 发送 http 响应体,因为设置了 chunk 传输模式,所以需要多调用一次
// res.write 且两个参数均为 0 以表示 chunk 传输数据结束
return res.write(buf) && res.write(NULL, 0) && keep_alive;
}
示例2: doPost
bool http_servlet::doPost(acl::HttpServletRequest& req,
acl::HttpServletResponse& res)
{
// 如果需要 http session 控制,请打开下面注释,且需要保证
// 在 master_service.cpp 的函数 thread_on_read 中设置的
// memcached 服务正常工作
/*
const char* sid = req.getSession().getAttribute("sid");
if (*sid == 0)
req.getSession().setAttribute("sid", "xxxxxx");
sid = req.getSession().getAttribute("sid");
*/
// 如果需要取得浏览器 cookie 请打开下面注释
/*
*/
res.setContentType("text/xml; charset=utf-8") // 设置响应字符集
.setKeepAlive(req.isKeepAlive()) // 设置是否保持长连接
.setContentEncoding(true) // 自动支持压缩传输
.setChunkedTransferEncoding(false); // chunk 传输方式
const char* cmd = req.getParameter("cmd");
if (cmd == NULL || *cmd == 0)
{
logger_error("cmd not found");
return replyf(req, res, 400, "%s", "no cmd");
}
#define EQ !strcasecmp
acl::string buf;
commands_action action(addr_, req, res, cmd);
action.set_conf(conf_);
int status = action.run(buf);
return reply_json(req, res, status, buf);
}
示例3: doPost
bool http_servlet::doPost(acl::HttpServletRequest& req,
acl::HttpServletResponse& res)
{
#if 0
const char* session_name = req.getSession().getAttribute("session_name");
if (*session_name == 0)
{
req.getSession().setAttribute("session_name", "name");
req.getSession().setMaxAge(100);
}
session_name = req.getSession().getAttribute("session_name");
const char* session_user = req.getSession().getAttribute("session_user");
if (*session_user == 0)
req.getSession().setAttribute("session_user", "user");
session_user = req.getSession().getAttribute("session_user");
#else
const char* session_name = "name", *session_user = "user";
#endif
// 取得浏览器 cookie
const char* cookie_name = req.getCookieValue("cookie_name");
bool keep_alive = req.isKeepAlive();
const char* param1 = req.getParameter("name1");
const char* param2 = req.getParameter("name2");
// 创建 xml 格式的数据体
acl::xml body;
body.get_root()
.add_child("root", true)
.add_child("session", true)
.add_child("session_name", true)
.set_text(session_name)
.get_parent()
.add_child("session_user", true)
.set_text(session_user)
.get_parent()
.get_parent()
.add_child("cookie", true)
.add_child("cookie_name", true)
.set_text(cookie_name ? cookie_name : "")
.get_parent()
.get_parent()
.add_child("params", true)
.add_child("param", true)
.add_attr("name1", param1 ? param1 : "null")
.get_parent()
.add_child("param", true)
.add_attr("name2", param2 ? param2 : "null");
acl::string buf;
body.build_xml(buf);
#if 0
res.setContentType("text/xml; charset=utf-8") // 设置响应字符集
.setKeepAlive(keep_alive) // 设置是否保持长连接
//.setContentLength(buf.length());
#else
res.setContentType("text/xml; charset=utf-8") // 设置响应字符集
.setKeepAlive(keep_alive) // 设置是否保持长连接
.setContentEncoding(true) // 设置是否压缩数据
.setChunkedTransferEncoding(true); // 采用 chunk 传输方式
#endif
//logger("access http://%s%s", req.getRemoteAddr(), req.getRequestUri());
// 发送 http 响应体,因为设置了 chunk 传输模式,所以需要多调用一次
// res.write 且两个参数均为 0 以表示 chunk 传输数据结束
return res.write(buf) && res.write(NULL, 0);
}
示例4: doParse
bool http_servlet::doParse(acl::HttpServletRequest& req,
acl::HttpServletResponse& res)
{
const char* ptr = req.getParameter("name1");
if (ptr)
param1_ = ptr;
ptr = req.getParameter("name2");
if (ptr)
param2_ = ptr;
ptr = req.getParameter("name3");
if (ptr)
param3_ = ptr;
acl::string path;
// 遍历所有的 MIME 结点,找出其中为文件结点的部分进行转储
const std::list<acl::http_mime_node*>& nodes = mime_->get_nodes();
std::list<acl::http_mime_node*>::const_iterator cit = nodes.begin();
for (; cit != nodes.end(); ++cit)
{
const char* name = (*cit)->get_name();
if (name == NULL)
continue;
acl::http_mime_t mime_type = (*cit)->get_mime_type();
if (mime_type == acl::HTTP_MIME_FILE)
{
const char* filename = (*cit)->get_filename();
if (filename == NULL)
{
logger("filename null");
continue;
}
// 有的浏览器(如IE)上传文件时会带着文件路径,所以
// 需要先将路径去掉
filename = acl_safe_basename(filename);
#if defined(_WIN32) || defined(_WIN64)
path.format("%s\\%s", var_cfg_var_path, filename);
#else
path.format("%s/%s", var_cfg_var_path, filename);
#endif
(void) (*cit)->save(path.c_str());
if (strcmp(name, "file1") == 0)
{
file1_ = filename;
fsize1_ = get_fsize(var_cfg_var_path, filename);
}
else if (strcmp(name, "file2") == 0)
{
file2_ = filename;
fsize2_ = get_fsize(var_cfg_var_path, filename);
}
else if (strcmp(name, "file3") == 0)
{
file3_ = filename;
fsize3_ = get_fsize(var_cfg_var_path, filename);
}
}
}
// 查找上载的某个文件并转储
const acl::http_mime_node* node = mime_->get_node("file1");
if (node && node->get_mime_type() == acl::HTTP_MIME_FILE)
{
ptr = node->get_filename();
if (ptr)
{
// 有的浏览器(如IE)上传文件时会带着文件路径,所以
// 需要先将路径去掉
ptr = acl_safe_basename(ptr);
#if defined(_WIN32) || defined(_WIN64)
path.format("%s\\1_%s", var_cfg_var_path, ptr);
#else
path.format("%s/1_%s", var_cfg_var_path, ptr);
#endif
(void) node->save(path.c_str());
}
}
return doReply(req, res, "OK");
}