acl  3.5.3.0
acl::HttpServlet类 参考abstract

#include <HttpServlet.hpp>

+ 类 acl::HttpServlet 继承关系图:
+ acl::HttpServlet 的协作图:

Public 成员函数

 HttpServlet (socket_stream *stream, session *session)
 
 HttpServlet (socket_stream *stream, const char *memcache_addr="127.0.0.1|11211")
 
 HttpServlet (void)
 
virtual ~HttpServlet (void)=0
 
sessiongetSession (void) const
 
socket_streamgetStream (void) const
 
HttpServletsetLocalCharset (const char *charset)
 
HttpServletsetRwTimeout (int rw_timeout)
 
HttpServletsetParseBody (bool on)
 
HttpServletsetParseBodyLimit (int length)
 
bool start (void)
 
virtual bool doRun (void)
 
virtual bool doRun (session &session, socket_stream *stream=NULL)
 
virtual bool doRun (const char *memcached_addr, socket_stream *stream)
 

Protected 成员函数

virtual bool doGet (HttpServletRequest &, HttpServletResponse &)
 
virtual bool doWebSocket (HttpServletRequest &, HttpServletResponse &)
 
virtual bool doPost (HttpServletRequest &, HttpServletResponse &)
 
virtual bool doPut (HttpServletRequest &, HttpServletResponse &)
 
virtual bool doPatch (HttpServletRequest &, HttpServletResponse &)
 
virtual bool doConnect (HttpServletRequest &, HttpServletResponse &)
 
virtual bool doPurge (HttpServletRequest &, HttpServletResponse &)
 
virtual bool doDelete (HttpServletRequest &, HttpServletResponse &)
 
virtual bool doHead (HttpServletRequest &, HttpServletResponse &)
 
virtual bool doOptions (HttpServletRequest &, HttpServletResponse &)
 
virtual bool doPropfind (HttpServletRequest &, HttpServletResponse &)
 
virtual bool doOther (HttpServletRequest &, HttpServletResponse &, const char *method)
 
virtual bool doUnknown (HttpServletRequest &, HttpServletResponse &)
 
virtual bool doError (HttpServletRequest &, HttpServletResponse &)
 
- Protected 成员函数 继承自 acl::acl::noncopyable
 noncopyable ()
 
 ~noncopyable ()
 

Protected 属性

HttpServletRequestreq_
 
HttpServletResponseres_
 

详细描述

处理 HTTP 客户端请求的基类,子类需要继承该类

在文件 HttpServlet.hpp18 行定义.

构造及析构函数说明

◆ HttpServlet() [1/3]

acl::HttpServlet::HttpServlet ( socket_stream stream,
session session 
)

构造函数

参数
stream{socket_stream*} 当在 acl_master 服务器框架控制下 运行时,该参数必须非空;当在 apache 下以 CGI 方式运行时,该参数 设为 NULL;另外,该函数内部不会关闭流连接,应用应自行处理流对象 的关闭情况,这样可以方便与 acl_master 架构结合
session{session*} 每一个 HttpServlet 对象一个 session 对象

◆ HttpServlet() [2/3]

acl::HttpServlet::HttpServlet ( socket_stream stream,
const char *  memcache_addr = "127.0.0.1|11211" 
)

构造函数

参数
stream{socket_stream*} 当在 acl_master 服务器框架控制下 运行时,该参数必须非空;当在 apache 下以 CGI 方式运行时,该参数 设为 NULL;另外,该函数内部不会关闭流连接,应用应自行处理流对象 的关闭情况,这样可以方便与 acl_master 架构结合
memcache_addr{const char*}

◆ HttpServlet() [3/3]

acl::HttpServlet::HttpServlet ( void  )

◆ ~HttpServlet()

virtual acl::HttpServlet::~HttpServlet ( void  )
pure virtual

成员函数说明

◆ doConnect()

virtual bool acl::HttpServlet::doConnect ( HttpServletRequest ,
HttpServletResponse  
)
protectedvirtual

当 HTTP 请求为 CONNECT 方式时调用的虚函数

acl::http_servlet_impl 重载.

◆ doDelete()

virtual bool acl::HttpServlet::doDelete ( HttpServletRequest ,
HttpServletResponse  
)
protectedvirtual

当 HTTP 请求为 DELETE 方式时调用的虚函数

acl::http_servlet_impl 重载.

◆ doError()

virtual bool acl::HttpServlet::doError ( HttpServletRequest ,
HttpServletResponse  
)
protectedvirtual

当 HTTP 请求出错时调用的虚函数

acl::http_servlet_impl 重载.

◆ doGet()

virtual bool acl::HttpServlet::doGet ( HttpServletRequest ,
HttpServletResponse  
)
protectedvirtual

当 HTTP 请求为 GET 方式时调用的虚函数

acl::http_servlet_impl 重载.

◆ doHead()

virtual bool acl::HttpServlet::doHead ( HttpServletRequest ,
HttpServletResponse  
)
protectedvirtual

当 HTTP 请求为 HEAD 方式时调用的虚函数

acl::http_servlet_impl 重载.

◆ doOptions()

virtual bool acl::HttpServlet::doOptions ( HttpServletRequest ,
HttpServletResponse  
)
protectedvirtual

当 HTTP 请求为 OPTION 方式时调用的虚函数

acl::http_servlet_impl 重载.

◆ doOther()

virtual bool acl::HttpServlet::doOther ( HttpServletRequest ,
HttpServletResponse ,
const char *  method 
)
protectedvirtual

当 HTTP 请求方法未知时调用的虚函数

参数
method{const char*} 其它未知的请求方法

◆ doPatch()

virtual bool acl::HttpServlet::doPatch ( HttpServletRequest ,
HttpServletResponse  
)
protectedvirtual

当 HTTP 请求为 PATCH 方式时调用的虚函数

acl::http_servlet_impl 重载.

◆ doPost()

virtual bool acl::HttpServlet::doPost ( HttpServletRequest ,
HttpServletResponse  
)
protectedvirtual

当 HTTP 请求为 POST 方式时调用的虚函数

acl::http_servlet_impl 重载.

◆ doPropfind()

virtual bool acl::HttpServlet::doPropfind ( HttpServletRequest ,
HttpServletResponse  
)
protectedvirtual

当 HTTP 请求为 PROPFIND 方式时调用的虚函数

◆ doPurge()

virtual bool acl::HttpServlet::doPurge ( HttpServletRequest ,
HttpServletResponse  
)
protectedvirtual

当 HTTP 请求为 PURGE 方式时调用的虚函数,该方法在清除 SQUID 的缓存 时会用到

acl::http_servlet_impl 重载.

◆ doPut()

virtual bool acl::HttpServlet::doPut ( HttpServletRequest ,
HttpServletResponse  
)
protectedvirtual

当 HTTP 请求为 PUT 方式时调用的虚函数

acl::http_servlet_impl 重载.

◆ doRun() [1/3]

virtual bool acl::HttpServlet::doRun ( void  )
virtual

HttpServlet 对象开始运行,接收 HTTP 请求,并回调以下 doXXX 虚函数, 该函数首先会调用 start 过程,然后根据 start 的返回结果及请求/响应 对象是否要求保持长连接来决定是否需要与客户端保持长连接

返回
{bool} 返回处理结果,返回 false 表示处理失败或处理成功且不保持 长连接,应关闭连接

acl::WebSocketServlet 重载.

被这些函数引用 acl::http_server_impl::on_accept().

+ 这是这个函数的调用关系图:

◆ doRun() [2/3]

virtual bool acl::HttpServlet::doRun ( session session,
socket_stream stream = NULL 
)
virtual

HttpServlet 对象开始运行,接收 HTTP 请求,并回调以下 doXXX 虚函数

参数
session{session&} 存储 session 数据的对象
stream{socket_stream*} 当在 acl_master 服务器框架控制下 运行时,该参数必须非空;当在 apache 下以 CGI 方式运行时,该参数 设为 NULL;另外,该函数内部不会关闭流连接,应用应自行处理流对象 的关闭情况,这样可以方便与 acl_master 架构结合
返回
{bool} 返回处理结果

acl::WebSocketServlet 重载.

◆ doRun() [3/3]

virtual bool acl::HttpServlet::doRun ( const char *  memcached_addr,
socket_stream stream 
)
virtual

HttpServlet 对象开始运行,接收 HTTP 请求,并回调以下 doXXX 虚函数, 调用本函数意味着采用 memcached 来存储 session 数据

参数
memcached_addr{const char*} memcached 服务器地址,格式:IP:PORT
stream{socket_stream*} 含义同上
返回
{bool} 返回处理结果

acl::WebSocketServlet 重载.

◆ doUnknown()

virtual bool acl::HttpServlet::doUnknown ( HttpServletRequest ,
HttpServletResponse  
)
protectedvirtual

当 HTTP 请求方法未知时调用的虚函数

acl::http_servlet_impl 重载.

◆ doWebSocket()

virtual bool acl::HttpServlet::doWebSocket ( HttpServletRequest ,
HttpServletResponse  
)
protectedvirtual

当 HTTP 请求为 websocket 方式时调用的虚函数

◆ getSession()

session& acl::HttpServlet::getSession ( void  ) const
inline

在文件 HttpServlet.hpp45 行定义.

46  {
47  return *session_;
48  }

◆ getStream()

socket_stream* acl::HttpServlet::getStream ( void  ) const
inline

在文件 HttpServlet.hpp50 行定义.

51  {
52  return stream_;
53  }

◆ setLocalCharset()

HttpServlet& acl::HttpServlet::setLocalCharset ( const char *  charset)

设置本地字符集,如果设置了本地字符集,则在接收 HTTP 请求数据时,会 自动将请求的字符集转为本地字符集;该函数必须在 doRun 之前调用才有效

参数
charset{const char*} 本地字符集,如果该指针为空, 则清除本地字符集
返回
{HttpServlet&}

被这些函数引用 acl::http_server_impl::on_accept().

+ 这是这个函数的调用关系图:

◆ setParseBody()

HttpServlet& acl::HttpServlet::setParseBody ( bool  on)

针对 POST 方法,该方法设置是否需要解析数据体数据,默认为解析,该函 数必须在 doRun 之前调用才有效;当数据体为数据流或 MIME 格式,即使 调用本方法设置了解析数据,也不会对数据体进行解析

参数
on{bool} 是否需要解析
返回
{HttpServlet&} xxxx: 该方法已经被废弃!

◆ setParseBodyLimit()

HttpServlet& acl::HttpServlet::setParseBodyLimit ( int  length)

针对 POST 方法,该方法设置解析数据体的最大长度,如果数据体,该函数 必须在 doRun 之前调用才有效

参数
length{int} 最大长度限制,如果请求的数据体长度过大,则直接 返回 false,如果该值 <= 0 则内部不限制数据体长度,调用该函数前 内部缺省值为 0
返回
{HttpServlet&}

◆ setRwTimeout()

HttpServlet& acl::HttpServlet::setRwTimeout ( int  rw_timeout)

设置 HTTP 会话过程 IO 读写超时时间;该函数必须在 doRun 前调用才有效

参数
rw_timeout{int} 读写超时时间(秒)
返回
{HttpServlet&}

◆ start()

bool acl::HttpServlet::start ( void  )

HttpServlet 对象开始运行,接收 HTTP 请求,并回调以下 doXXX 虚函数,

返回
{bool} 返回处理结果,返回 false 表示处理失败,则应关闭连接, 返回 true 表示处理成功,调用此函数后应该继续通过判断请求/响应对象中 是否需要保持长连接来确实最终是否保持长连接

类成员变量说明

◆ req_

HttpServletRequest* acl::HttpServlet::req_
protected

在文件 HttpServlet.hpp203 行定义.

◆ res_

HttpServletResponse* acl::HttpServlet::res_
protected

在文件 HttpServlet.hpp204 行定义.


该类的文档由以下文件生成: