`
江金鸿
  • 浏览: 27801 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

OsCache在Struts中的应用

    博客分类:
  • java
 
阅读更多

  OsCache提供了一个管理类com.opensymphony.oscache.Web.ServletCacheAdministrator,通过 这个类,我们可以管理jsp页面定义的标签,下面看看在Struts的Action中,如何管理页面中的Cache标签的内容。业务逻辑如下:首先,用户 请求到Action中,该Action通过ServletCacheAdministrator实例来判断jsp页面是否已经失效(比如该Cache有效 期是10分钟),如果Cache标签失效了,那么重新取数据,否则直接forward到jsp页面,这样用户看到的就是经过缓存的jsp页面。以下是 Action 中的代码片:

        String normalImageOsGroup=null;//定义缓存的组

        try{

           ServletCacheAdministrator admin=null;

               Cache oscache=null;

                   if(admin==null)

                      {

                        admin=ServletCacheAdministrator.getInstance(this.getServlet().getServletContext());

                     }//if

                     if(oscache==null)

                    {

                      oscache=admin.getCache(req,PageContext.APPLICATION_SCOPE);

                     }//if

                   //取得group为mygroup ,key为persion_msg的缓存

                 normalImageOsGroup="mygroup";

                 String OsEntryKey=admin.generateEntryKey("persion_msg",request,PageContext.APPLICATION_SCOPE);

                  Object osobj=oscache.getFromCache(OsEntryKey,600);//判断缓存10分钟的期限是否已经到了

                   /*

                    如果已超出指定的Cache有效期600秒,将报NeedsRefreshException异常,

                     这样我们就通过异常处理部分来重新取得数据,然后传递给页面使用。

                     */

 

       }catch(NeedsRefreshException  nrfe){

           log.warn("OsCache已经过期,需要重新添加数据");

          String oldCache=(String)nrfe.getCacheContent();//取得数据

           //为了避免死锁因为NeedsRefreshException产生时,如果不调用update或者put得相关操作,osCache将锁该cache

          oscache.putInCache(OsEntryKey,oldCache,new String[]{normalImageOsGroup});

          //刷新该key,使页面的oscache失效

          oscache.flushEntry(OsEntryKey);

        }

      以下是jsp页面代码:

      < %@page contentType="text/html;charset=GBK"% >

     < % @taglib uri="oscache" prefix="cache" % >

     < %

          Person ps=(Person)request.getAttribute("PersonObject");

   % >

    <html>

     <head>

    <body>

   <cache:cache key="persion_msg" time="-1" groups="mygroup">

         <% 

           if(ps!=null){

             out.println("Person Name:"+ps.getName());

          }//if

        %>

 

<cache:cache>

</body>

</html>

分享到:
评论

相关推荐

    oscache处理

    - 配置osCache插件:首先需要将osCache的jar包添加到项目类路径中,然后在struts.xml配置文件中引入osCache拦截器,并配置相应的拦截规则。 2. **iBatis与osCache**: - iBatis是一个轻量级的持久层框架,它允许...

    Oscache使用教程

    1. **Web应用集成**:在Spring或Struts等Web框架中,可以通过AOP(面向切面编程)来拦截数据访问方法,自动进行缓存操作。 2. **数据分页**:对于分页查询,可以缓存每一页的结果,提高查询效率。 3. **分布式缓存...

    oscache的demo

    osCache的核心功能包括对象缓存、页面缓存以及分布式缓存,使得在大型Java应用系统中能够更有效地管理内存资源。** **1. 对象缓存:** osCache允许开发者将Java对象存储到内存中,以避免每次需要这些对象时都去重新...

    OSCache学习心得

    在本篇文章中,我们将详细介绍OSCache框架的基本原理、配置方法以及如何在JSP页面中实现缓存功能,同时也会探讨OSCache与Struts2框架结合使用的具体实践。 #### 一、OSCache简介 OSCache是OpenSymphony组织开发的...

    oscache的一些使用

    **osCache:轻量级缓存解决方案** osCache是一款开源的、轻量级的...osCache虽是轻量级缓存,但其丰富的功能和易用性使其在许多项目中得到广泛应用。理解并熟练掌握osCache的使用,对于提升Java应用性能具有重要意义。

    hibernate+spring+struts2

    (3)Struts 应用国际化,Struts 标签库与Tiles框架, JSTL标签库,Spring IOC; (4)采用优化性能技术,采用oscache缓存,freemarker静态页面生成; (5)功能比较多但操作简单的后台管理;(后台管理附图片)

    Spring+Struts2+iBatis简要说明

    Spring+Struts2+iBatis是一个经典的Java轻量级开发框架组合,主要用于构建Web应用程序。这三个框架协同工作,提供了一种高效、灵活的解决方案,帮助开发者实现MVC(Model-View-Controller)架构。 首先,Spring框架...

    运用struts1.2+hibernate+spring 框架完整购物商城项目(内含sql文件)

    一个J2EE购物网站的实现 运用struts1.2+hibernate+spring 框架,数据库连接池,事务管理;Struts 应用国际化,Struts 标签库与Tiles框架, JSTL标签库,Spring IOC。 采用优化性能技术,采用oscache缓存,freemarker静态...

    struts2hibernate4spring4项目 源码(最初的最初)

    在这个项目中,Hibernate4可能已经配置了二级缓存,这能提高数据读取速度,降低对数据库的压力,二级缓存通常使用EHCache或OSCache实现。 Spring4框架则是一个全面的企业级应用开发框架,它不仅包含IOC(Inversion ...

    struts、spring、hibernate工作原理.

    综上所述,Struts、Spring和Hibernate各自解决了Web应用开发过程中的不同问题,共同构成了现代Java Web应用的基础架构。通过对这些框架的理解和掌握,开发者可以更高效地构建出稳定可靠的企业级应用。

    struts+spring+hibernate笔试面试常见问题

    - **创建 SessionFactory**:SessionFactory 是 Hibernate 的核心工厂对象,它是线程安全的,并且在整个应用中只应该有一个实例。 - **打开 Session**:通过 SessionFactory 打开 Session 对象,用于执行持久化操作...

    struts2,hibernate,spring,ibatis面试合集

    【SSH】指的是Struts2、Hibernate和Spring这三个Java企业级应用中的主流开源框架。它们各自在Web开发中承担着不同的职责,共同构建了一个强大的后端架构。 **Struts2**是一个基于MVC(Model-View-Controller)设计...

    Spring,hibernate,struts的面试笔试题含答案

    ### Spring, Hibernate, Struts 的面试笔试...总结来说,Spring、Hibernate 和 Struts 都是 Java Web 开发中非常重要的技术栈,掌握这些技术不仅可以帮助开发者更好地理解和设计应用架构,还能提升开发效率和应用质量。

    struts+spring+hibernate资料

    - **初始化 ActionServlet**:在 Web 应用启动时加载,并从 `struts-config.xml` 文件中读取配置信息。 - **处理请求**:当 ActionServlet 接收到客户端请求时,根据请求路径查找相应的 ActionMapping。 - **创建 ...

    Spring,hibernate,struts的面试笔试题.doc

    - **配置验证规则:** 在 `struts-config.xml` 文件中定义。 - **实现验证逻辑:** 在 `ActionForm` 类中重写 `validate()` 方法。 - **显示错误信息:** 如果验证失败,则显示预先配置的错误消息。 #### 9. Struts...

    SSH集成所需要的jar包

    SSH(Struts、Spring、Hibernate)是Java Web开发中常用的一种技术栈,它结合了MVC框架Struts、依赖注入和应用上下文管理框架Spring以及持久层框架Hibernate,为开发者提供了一种高效、灵活的开发解决方案。...

    绿色健康购物网SSH webdgs

    (3)Struts 应用国际化,Struts 标签库与Tiles框架, JSTL标签库,Spring IOC;(4)采用优化性能技术,采用oscache缓存,freemarker静态页面生成;(5)功能比较多但操作简单的后台管理;(后台管理附图片);

Global site tag (gtag.js) - Google Analytics