适用于 CGI 程序员的 CherryPy
2008-09-30 13:11:14 来源:WEB开发网CherryPy 隐藏了这种复杂性的大部分,使得易于建立和使用基于 cookie 的会话 —— 这是一个重要的功能,但是并不是 CGI 本身就支持的功能。您可以将任何 Python 对象存储在 cpg.request.sessionMap 映射中,下次相同的用户点击您的页面时它就在那儿。下面的示例与刚才描述的应用程序的工作原理相似:
清单 10. 将任何 Python 对象存储在 cpg.request.sessionMap 映射中
#!/usr/bin/env python
from cherrypy import cpg
class Application:
@cpg.expose
def set(self, name):
cpg.request.sessionMap['name'] = name
return 'Set name to %s' % name
@cpg.expose
def show(self):
return 'Your previously set name is %s.' %
cpg.request.sessionMap.get('name', '[none]')
到目前为止都相当简单。可是,为了这些代码起作用,需要设置 CherryPy 服务器将会话 cookie 与每个 HTTP 响应相关联。否则,CherryPy 就永不可能将两个请求与相同的会话关联起来。您可以在 CherryPy 服务器配置文件中进行这些配置(参见 参考资料),但是比较易于证明它是启动 CherryPy Web 服务器的 Python 代码的一部分:
清单 11. 启动 CherryPy Web 服务器的 Python 代码的一部分
cpg.root = Application()
cpg.server.start(configMap={'sessionStorageType' : 'ram',
'sessionCookieName' : 'CherryPySessionCookie',
'sessionTimeout' : 60}) #Session expires in an hour
结束语
CherryPy 使用与 CGI 相同的概念将 Web 服务器与 Web 应用程序绑定起来,但是通过在单个进程内处理它的所有请求,改善了性能,并且获得了请求间的持续性。因为它只是绑定到 Python 代码,所以它并不需要经常隐藏 CGI 的信息传递技术,这样导致更易理解的更少代码行。CherryPy 是 CGI 的优秀替代品,并且是创建 Python Web 应用程序的良好基础。
- ››程序员面试问题锦集
- ››程序员:使用 DB2 for z/OS 减少会话:第 1 部分:...
- ››CGI拒绝服务攻击技术浅析
- ››适用于Windows 7 7000的Intel PRO Wireless 2200B...
- ››适用于 CGI 程序员的 CherryPy
- ››程序员注意:Java开发最容易犯的21种错误
- ››程序员杂谈:Ajax优于JSF的几个原因讨论
- ››程序员生活 J2EE学习者值得研究的开源项目
- ››程序员学习Java的一剂良药:破坏源程序
- ››程序员必读:对JAVA语言的十个常见误解
- ››程序员眼中的qmail(qmail源代码分析)
- ››程序员必读的《C++程序设计陷阱》
更多精彩
赞助商链接