`
luotuoass
  • 浏览: 640497 次
文章分类
社区版块
存档分类
最新评论

cetia4 1.1文档- 2.5 RenderContext

 
阅读更多

在前面的例子中所有的render方法都有一个类型为RenderContext的参数。上面曾经说过这是一个接口定义了访问requestresponseconfig对象的一般方法(seesion对象可以从request对象中获取,context引用可以从cofig对象获取)。这样的机制可以使框架可以用在REST servletnon-Rest portlet的环境,使用同样的方法而不是jsf api。最简单的方式,RenderContext实现了普通servlet的相关功能的薄facade接口,如下图所示:

但是RenderContext实现的不止这些,他还有自己特有的功能。他还提取了一些不同于传统web应用和web service应用的功能。这两种模式的主要区别在于,传统的web模式是由状态的,浏览器打开一个session,让后用户开始交互,如果有要求的话,会存储和检索session范围的数据(但是一些web开发方法更倾向于不使用session数据以提高扩展性伸缩性)。而在web service模式中,由框架实现的,交互也是无状态的,session的访问是不允许的,但是访问包装的对象是可能的。

RenderContext的下面的方法在http参数下工作:

public String getParameter( String param )

public Map<String,String[]> getParameterMap()

第一个函数可以得到单个的参数,第二个函数可以得到所用的参数,可以使用这种方法来手工的映射表单数据到对象。Framework也实现了自动映射功能,这些内容将来后面的章节讨论。

web框架中一个很有用的功能就是请求级别,会话级和application级别的attribute管理。RenderRequest也提供了很便利的方法来获取各个级别的属性。

public Object getRequestAttribute( String key )

public Object getSessionAttribute( String key )

public Object getContextAttribute( String key )

正如我以前所说的,在无状态的web service环境中,访问session是不允许的;调用getSessionAttribute() 和调用getRequestAttribute()是一样的.这种行为第一次开来很奇怪,但是它增强控制器代码的重用,可以在有状态的传统web请求中和无状态的web service中使用同一种方法。同样,在jsp中的EL表达式也可以在多个域中查找对象,可以现在request级别查找,之后在session中查找。 框架的这种设计理念的在很多的应用中可能很小或者可以忽略不计。但是必须关注它,因为它可以导致使人沮丧的惊奇。

但是,某些开发者可能对这种行为感到很不适宜,但是幸运消息的是这些功能可以轻易的被回避。这些将在后面的章节解释。

上述的方法有他们对应的setter方法:

public void setRequestAttribute( String key, Object value )

public void setSessionAttribute( String key, Object value )

public void setContextAttribute( String key, Object value )

各个作用域的删除属性的方法如下:

Finally, removal methods for each scope are also implemented:

public void removeRequestAttribute( String key )

public void removeSessionAttribute( String key )

public void removeContextAttribute( String key )

The following code shows a typical example showing the usage of some of these

methods.

下面展示了使用这些方法的典型例子:

public String render( RenderContext context )

{

SearchFilter filter = ( SearchFilter )

context.getSessionAttribute( "topics_filter" );

if( filter == null )

{

filter = new SearchFilter();

context.setSessionAttribute( "topics_filter", filter );

}

List topics = getTopics( filter );

context.setRequestAttribute( "topics", topics );

return "display_topics";

}

如果上面的代码运行在一个典型的web请求,那么session属性"topics_filter" request 属性 "topics" 将被设置.但是如果上面代码运行在web service 请求,那么"topics_filter" "topics" a都被设置在request级别。在这种情况下,第一次调用 getSessionAttribute()将会返回一个null值,因为service是无状态的,没有先前的东西存贮在session中。

同样的使用Configuration object 对象提供的getConfiguration()接口来访问初始的参数;但是这个方法比正常的servlet API灵活,我们将在Configuration t一节详细讨论细节.另一方面,访问Servlet API接口的方法将在下一节谈论。一些有用的方法也会提供。想了解完整的参考,请查看Javadoc文档关于RenderContext接口和他的扩展类的介绍。

分享到:
评论

相关推荐

    cetia4_tutorial_1_1_1

    cetia4 1.1 版本的官方文档,适合英文比较好的同学

    cetia4 sdk(包括文档,源代码,实例)

    cetia4 sdk(包括文档,源代码,实例),多年存档,共享给大家分享。

    rest框架cetia4的教程

    rest框架cetia4的教程 特点:基于Servlet API开发,可以运行于所有的Web容器中。 优点: 1. 可以充分利用Servlet API和JSP等资源,需要额外学习的概念较少,学习成本较低。 2. 对于传统的Web应用,可以使用服务器...

    ccetia4

    cetia4

    基于matlab实现的指纹识别.rar

    基于matlab实现的指纹识别.rar

    node-v6.11.0-x86.msi

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    node-v8.3.0-sunos-x86.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    项目型制造企业生产计划规划设计方案.pptx

    项目型制造企业生产计划规划设计方案.pptx

    Swing界面开发和游戏开发.docx

    Swing界面开发和游戏开发.docx

    物流企业数字化转型暨五级信息化流程架构(L1-L5)规划建设方案.pptx

    物流企业数字化转型暨五级信息化流程架构(L1-L5)规划建设方案.pptx

    39黎秋菊.ipynb

    39黎秋菊.ipynb

    智力竞赛抢答器逻辑电路设计Multisim仿真

    本设计主要利用数字电子的知识设计的八人抢答器,随着电子技术的发展,它在各个领域的应用也越来越广泛。人们对它的认识也正逐步加深,从而利用电子技术以及相关的知识来解决一些实际问题。例如:智能抢答器的设计与制作。抢答器是智力竞赛活动中一种较为常见的装置。从原理上讲,它是一种典型的数字电路。并且,数字抢答器是由主体电路和扩展电路组成。优先编码电路、锁存器、译码电路将参赛队的输入信号在显示器上输出,主持人按开始按钮示意开始,以上两部分组成主体电路。在抢答电路中利用一个优先编码器译出最先抢到答题权的选手的编号并经LED显示器显示出来,同时还要封锁电路以防其他选手再抢答。当选手完成答题后,主持人将系统复位清除数据。

    基于matlab实现的HOG特征提取在进行SVM行人检测,经典算法.rar

    基于matlab实现的HOG特征提取在进行SVM行人检测,经典算法.rar

    arabic_PP-OCRv3_rec.onnx

    PP-OCR rec

    毕设基于机器学习的新闻标题分类系统源码+数据集+训练好的模型+项目操作说明.zip

    系统环境配置 Python:3.8.13 操作系统:Windows 数据库:MySQL Web框架:Flask 模型训练:sklearn 1.Anaconda创建虚拟环境 conda create -n Graduation python=3.8 命令行切换到对应目录 2.安装第三方库 pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple 3.将数据导入数据库 mysql -u root -p --local-infile=1 < D:\Bachelor_Graduation\Bachelor_Graduation.sql 二、模型训练 1.执行preprocess.ipynb 2.目录下自动生成model文件夹,里面存放训练好的模型pkl格式文件 三、系统启动 运行命令python main.py,在浏览器端输入127.0.0.1:5000即可 查看MySQL数据库中用户和管理员表可以得到用户名和密码,登录后可使用该系统

    此仓库用于对px4无人机的远程基础控制.zip

    无人机最强源码,无人机算法,易于部署和学习交流使用

    Rain Birdt Simple To Set Timer (SST) 使用说明书.pdf

    Rain Birdt Simple To Set Timer (SST) 使用说明书

    node-v10.15.1-linux-ppc64le.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

Global site tag (gtag.js) - Google Analytics