`

解决tapestry中由于使用对象池而造成信息泄露的问题

阅读更多
在tapestry中,由于每个页面都需要使用一个页面对象,为了提高系统的性能和节约资源,考虑使用对象池,即多个页面模板在渲染的时候可能使用的是一个页面对象,那么此时就可能出现用户A看见了用户B的数据,这个是绝对不允许的,存在信息的泄露,解决的办法是,实现initialize()方法,在页面对象放入对象池之前对属性数据进行初始化:
public class Result extends BasePage
{
    int stockValue;
    protected void initialize()
    {
       stockValue=0;
    }
}
这样每个页面模板在使用对象池中的页面对象进行渲染时,那个页面对象肯定是经过初始化的了。

还有一种解决办法,可以让Tapestry自动帮你在进行初始化:
在.page规范文件中指定属性,然后在.java页面类中不定义属性,只是定义抽象的get和set方法,那么tapestry会自动实现initialize()方法
<page-specification class="com.gwssi.bjais.tapestry.page.Home">
<property name="stockValue"/>
</page-specification>
public abstract class Result extends BasePage
{
    abstract public void setStockValue(int stockValue);
}
那么Tapestry会自动继承Result类,并实现相应的setStockValue()和initialize()方法,但是这时只是将类的实例属性初始化为默认值,及int初始化0、String初始化为null,如果想初始化为指定的值怎么办?可以在.page规范文件中进行指定:
<page-specification class="com.gwssi.bjais.tapestry.page.Home">
<property name="stockValue" initial-value="literal:100"/>
</page-specification>
当然上面的stockValue的初始值也可以通过OGNL来获取。
分享到:
评论

相关推荐

    tapestry官方中文文档

    在Tapestry中,大多数的编程都是声明式的,这意味着开发者可以使用XML或注解来定义页面和组件的行为,而不是编写大量的Java代码。这降低了代码的复杂性,提高了可读性和维护性。 4. **页面和组件生命周期**: ...

    tapestry官方中文文档及中文字典

    "tapestry中文字典"可能包含对Tapestry框架中的专有名词、API和概念的中文解释,帮助读者更准确地理解和记忆。它可能是以索引形式存在,方便查找和查阅。 通过学习这些文档,开发者可以全面了解Tapestry 4的架构和...

    tapestry5中文文档

    此外,Tapestry 提供详细的异常报告,有助于快速定位和解决问题。 在Tapestry 5 中,开发者可以通过创建CRUD(创建、读取、更新、删除)功能的应用来了解框架的核心概念。这包括页面导航、依赖注入和资源注入、用户...

    tapestry学习入门资料

    Tapestry 是一个开源的基于 servlet 的应用程序框架,它使用组件对象模型来创建动态的、交互的 web 应用。 Tapestry 使得 Java 代码与 HTML 完全分离,利用这个框架开发大型应用变得轻而易举。并且开发的应用很容易...

    tapestry源码 api等

    3. **Tapestry Hibernate**: 这个库提供了与Hibernate ORM框架的集成,允许开发者方便地在Tapestry应用中使用Hibernate进行数据持久化操作。通过源码,我们可以学习如何在Tapestry中配置和使用Hibernate服务。 4. *...

    Tapestry简单入门.rar_java Tapestry_tapestry

    1. **声明式编程**:在Tapestry中,组件的行为是通过属性和事件来声明的,而不是通过大量的回调方法。 2. **类型安全**:组件属性可以直接绑定到模型对象,提供了强类型和编译时的错误检查。 3. **生命周期管理**:...

    Tapestry 4 官方文档中版本

    作为Apache项目的一部分,Tapestry 4拥有活跃的社区和丰富的在线资源,包括邮件列表、论坛和代码示例,这些资源可以帮助开发者解决问题并持续学习。 通过深入研究Tapestry 4的官方文档,开发者可以充分利用其强大...

    Tapestry通用WEB框架

    10. **错误处理与调试**:Tapestry的错误处理机制可以帮助开发者快速定位问题,提供详细的错误报告和堆栈跟踪。此外,其开发模式下的实时反馈功能让调试变得更加高效。 11. **性能优化**:Tapestry通过缓存策略、...

    Tapestry5最新中文教程

    其异常报告机制详尽且具有指导性,帮助开发者快速定位和解决问题。 在Tapestry 5 中,应用由组件构建,页面由这些组件组成。这些组件可以独立开发和复用,增强了代码的模块性和可维护性。通过依赖注入(Dependency ...

    tapestry3开发指南,带tapestry3所有jar包

    Tapestry 3的开发指南是学习和理解这一早期版本框架的关键资源,而提供的jar包则是实际开发中的必要依赖。 **一、Tapestry 3 的核心概念** 1. **组件**:Tapestry 3的核心是组件,它将HTML元素与Java代码结合,...

    Tapestry5最新中文入门实例教程

    ### Tapestry5最新中文入门实例教程 #### 一、引言 Tapestry是一个使用Java语言创建Web应用程序的面向组件的开发框架。本教程旨在通过实际案例帮助读者掌握Tapestry 5的基本概念和核心功能,并体验其带来的高效开发...

    tapestry-bin-5.0.14.zip

    - “tapestry-hibernate”是Tapestry与Hibernate集成的模块,使开发者能够方便地在Tapestry应用中使用Hibernate进行对象关系映射(ORM)操作。 - “tapestry-ioc”是Tapestry的依赖注入(IOC)容器,它简化了服务和...

    Tapestry4开发指南

    Hivemind,同样由Howard开发,是一个轻量级的IoC(Inversion of Control)容器,用于管理对象间的依赖关系,使得Tapestry4不仅能够构建Web应用,还能通过对Hivemind的利用,实现框架自身的高度定制化。 #### 二、...

    Tapestry5开发文档手册.doc

    在Eclipse中导入Tapestry 5 应用的WAR文件,或者使用Maven的quickstart原型来创建新项目。一旦项目设置完成,可以通过Run As &gt; Run on Server启动应用,访问http://localhost:8080/app即可看到运行的Tapestry应用。 ...

    tapestry教程资料文档合集

    Tapestry5最新中文教程.doc 作者 Renat Zubairov & Igor Drobiazko译者 沙晓兰 发布于 2008年7月2日 下午9时30分 社区 Java 主题 Web框架 ----------------------------------------- Tapestry5.1实例教程.pdf ...

    Tapestry In Action

    - **数据绑定**:讲述了Tapestry中的数据绑定机制,包括如何将表单字段与后端对象属性进行绑定,以及如何处理数据的双向流动。 - **表单提交**:介绍了如何定义表单提交行为,以及如何处理提交后的数据。 #### 第4...

    tapestry开发技术文档

    3. **效率**:Tapestry应用具有优秀的可伸缩性,利用缓存和对象池优化性能,使得每个请求的处理时间最小化,性能接近传统的Servlet应用。 4. **错误反馈**:Tapestry提供了出色的错误报告功能,能够精确指出导致...

    TSH.rar_Tapestry spring_tapestry_tapestry hiberna_tapestry workb

    TSH结合了Tapestry的强大组件模型,Spring的依赖注入和事务管理,以及Hibernate的对象关系映射能力,为开发者提供了一种全方位的解决方案。 **Tapestry框架** Tapestry是一个基于Java的开源Web应用程序框架,它强调...

Global site tag (gtag.js) - Google Analytics