`
java_mike
  • 浏览: 85317 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

OSCache 缓存框架使用,方便应用到java开发的网站中

阅读更多
   OSCache标记库由OpenSymphony设计,它是一种开创性的JSP定制标记应用,提供了在现有JSP页面之内实现快速内存缓冲的功能。 OSCache是个一个广泛采用的高性能的J2EE缓存框架,OSCache能用于任何Java应用程序的普通的缓存解决方案。

   使用方法:

1、拷贝oscache的jar包到web项目的lib下。

2、在WEB-INF下添加oscache的tld文件,oscache.tld
<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">

<taglib>
    <tlib-version>1.6</tlib-version>
    <jsp-version>1.2</jsp-version>
    <short-name>oscache</short-name>
    <uri>http://www.opensymphony.com/oscache</uri>
    <display-name>OSCache Tag Library</display-name>
    <description>OSCache - see http://www.opensymphony.com/oscache</description>

    <tag>
        <name>cache</name>
        <tag-class>com.opensymphony.oscache.web.tag.CacheTag</tag-class>
        <body-content>JSP</body-content>
        <description>A tag to cache post-processed JSP contents</description>

        <attribute>
            <name>time</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>

        <attribute>
            <name>duration</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>

        <attribute>
            <name>cron</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>

        <attribute>
            <name>refreshpolicyclass</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>

        <attribute>
            <name>refreshpolicyparam</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>

        <attribute>
            <name>scope</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>

        <attribute>
            <name>refresh</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>

        <attribute>
            <name>mode</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>

        <attribute>
            <name>key</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>

        <attribute>
            <name>groups</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>

        <attribute>
            <name>language</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
    </tag>

    <tag>
        <name>usecached</name>
        <tag-class>com.opensymphony.oscache.web.tag.UseCachedTag</tag-class>
        <description>A tag to tell the cache to use the cached version</description>

        <attribute>
            <name>use</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
    </tag>

    <tag>
        <name>flush</name>
        <tag-class>com.opensymphony.oscache.web.tag.FlushTag</tag-class>
        <description>A tag to flush the cache</description>

        <attribute>
            <name>scope</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
        <attribute>
            <name>key</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
        <attribute>
            <name>group</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
        <attribute>
            <name>language</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
        <attribute>
            <name>pattern</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
    </tag>

    <tag>
        <name>addgroup</name>
        <tag-class>com.opensymphony.oscache.web.tag.GroupTag</tag-class>
        <description>A tag to add a group to an ancestor cache tag</description>
        <attribute>
            <name>group</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
    </tag>

    <tag>
        <name>addgroups</name>
        <tag-class>com.opensymphony.oscache.web.tag.GroupsTag</tag-class>
        <description>A tag to add a comma-delimited list of groups to an ancestor cache tag</description>
        <attribute>
            <name>groups</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
    </tag>
    
</taglib>


3、在web.xml文件中注册 oscache.tld
<!-- 注册标签函数 -->
  <jsp-config>
  	<!-- oscache web应用缓存 -->
<taglib> 
    <taglib-uri>oscache</taglib-uri> 
    <taglib-location>/WEB-INF/oscache.tld</taglib-location> 
</taglib>
  </jsp-config>


4、在src下添加文件 oscache.properties
cache.capacity=1000


5、页面使用缓存标签 test.jsp
<%@ taglib uri="oscache" prefix="cache" %>
//...

<cache:cache key="key1" time="-1">
//要缓存的内容	 
</cache:cache>



6、移除缓存的数据(数据有更新时)
OSCacheHandler cacheUtil = new OSCacheHandler(request,Constants.OSCACHE_APPLICATION);
		cacheUtil.remove(key);//key="key1"


OSCacheHandler.java
package cn.changtusoft.publicplatform.util.oscache;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.PageContext;

import cn.changtusoft.publicplatform.service.common.SystemException;

import com.opensymphony.oscache.base.Cache;
import com.opensymphony.oscache.web.ServletCacheAdministrator;

/**
 * oscache web应用缓存的操作类
 * 
 */
public class OSCacheHandler {
	private ServletCacheAdministrator admin = null;
	/**
	 * A cache group. If specified, all content in that group will be flushed
	 */
	String group = null;

	/**
	 * Tag key.
	 */
	String key = null;

	/**
	 * if pattern value is specified, all keys that contain the pattern are
	 * flushed.
	 */
	String pattern = null;
	String scope = null;
	int cacheScope = -1;

	/**
	 * The ISO-639 language code to distinguish different pages in application
	 * scope.
	 */
	private String language = null;
	private HttpServletRequest request;

	public void setScope(String value) {
		if (value != null) {
			if (value
					.equalsIgnoreCase(ServletCacheAdministrator.SESSION_SCOPE_NAME)) {
				cacheScope = PageContext.SESSION_SCOPE;
			} else if (value
					.equalsIgnoreCase(ServletCacheAdministrator.APPLICATION_SCOPE_NAME)) {
				cacheScope = PageContext.APPLICATION_SCOPE;
			}
		}
	}

	public ServletCacheAdministrator getAdmin() {
		return admin;
	}

	public void setAdmin(ServletCacheAdministrator admin) {
		this.admin = admin;
	}

	public int getCacheScope() {
		return cacheScope;
	}

	public void setCacheScope(int cacheScope) {
		this.cacheScope = cacheScope;
	}

	public String getScope() {
		return scope;
	}

	public String getGroup() {
		return group;
	}

	public void setGroup(String group) {
		this.group = group;
	}

	public String getPattern() {
		return pattern;
	}

	public void setPattern(String pattern) {
		this.pattern = pattern;
	}

	public String getLanguage() {
		return language;
	}

	public void setLanguage(String language) {
		this.language = language;
	}

	public HttpServletRequest getRequest() {
		return request;
	}

	public void setRequest(HttpServletRequest request) {
		this.request = request;
	}

	private static final long serialVersionUID = 2005659972627911969L;

	public OSCacheHandler(HttpServletRequest request, String scope) {
		this.request = request;
		if (admin == null)
			admin = ServletCacheAdministrator.getInstance(request.getSession()
					.getServletContext());
		setScope(scope);
	}

	// 删除被缓存的对象;
	public void remove(String key) {
		if (group != null) // We're flushing a group
		{
			if (cacheScope >= 0) {
				Cache cache = admin.getCache(request, cacheScope);
				cache.flushGroup(group);
			} else {
				throw new SystemException(
						"A cache group was specified for flushing, but the scope wasn't supplied or was invalid");
			}
		} else if (pattern != null) // We're flushing keys which contain the
									// pattern
		{
			if (cacheScope >= 0) {
				Cache cache = admin.getCache(request, cacheScope);
				cache.flushPattern(pattern);
			} else {
				throw new SystemException(
						"A pattern was specified for flushing, but the scope wasn't supplied or was invalid");
			}
		} else if (key == null) // we're flushing a whole scope
		{
			if (cacheScope >= 0) {
				admin.setFlushTime(cacheScope);
			} else {
				admin.flushAll();
			}
		} else // we're flushing just one key
		{
			if (cacheScope >= 0) {
				String actualKey = admin.generateEntryKey(key, request,
						cacheScope, null);
				Cache cache = admin.getCache(request, cacheScope);
				cache.flushEntry(actualKey);
			} else {
				throw new SystemException(
						"A cache key was specified for flushing, but the scope wasn't supplied or was invalid");
			}
		}

	}

}


完毕,进行应用测试。
0
0
分享到:
评论

相关推荐

    oscache-java缓存框架

    osCache是Java开发中常用的缓存框架之一,它主要用于提高应用程序的性能和效率,通过将数据存储在内存中,减少对数据库的访问。osCache不仅可以用于Web应用,也可以用于任何Java应用程序,支持集群环境,提供了丰富...

    OSCache缓存框架的简单用法

    OSCache是开源的Java缓存框架,主要用于提高应用程序性能,减少对数据库的访问。它能够存储对象,并在后续请求中快速提供这些对象,避免了重复计算或查询数据库的过程。本篇文章将详细介绍OSCache的基本概念、配置与...

    oscache缓存配置

    osCache是Java平台上的一个高效、易用的缓存解决方案,它由Tuckey组织开发,广泛应用于各种Web应用中,以提高数据读取速度,减轻数据库压力。osCache的核心功能是提供了一个内存中的对象缓存系统,通过将常用数据暂...

    OSCache缓存技术(6)【实例】

    在实际开发中,OSCache常与Spring框架结合使用,通过Spring的AOP(面向切面编程)来实现缓存注解,简化代码。例如,可以使用`@Cacheable`注解来标记一个方法的返回结果应被缓存: ```java @Cacheable(value = ...

    OSCache缓存jsp例子

    OSCache 是一个开源的、高性能的缓存框架,主要用于Java应用程序,它可以帮助提高应用程序的性能和响应速度。在本文中,我们将深入探讨OSCache在缓存JSP页面方面的应用,以及如何利用它来优化Web应用。 首先,我们...

    OSCache配置说明文档

    OSCache是由OpenSymphony开发的开源缓存框架,它为J2EE应用程序提供了高效、灵活的缓存解决方案。 文档介绍 文档目的: 本文档的主要目的是阐述OSCache的核心功能、配置方法以及实际应用中的操作步骤,帮助开发者...

    一个OSCache缓存技术的关键zip包

    - 在Web应用中,可以利用OSCache缓存JSP页面、EJB会话bean、Hibernate查询结果等,减少服务器负载。 - 在服务端,可以缓存经常访问的API响应,提升响应速度,改善用户体验。 - 结合Spring框架,可以通过AOP(面向...

    Oscache框架的搭建步骤

    Oscache框架作为一种高效、灵活的缓存解决方案,在Java Web应用,尤其是JSP环境中,提供了强大的缓存管理功能。本文将深入探讨Oscache框架的搭建步骤及其实现原理,帮助开发者掌握这一技术,从而显著提高Web系统的...

    OSCache需要的包

    OSCache 是一个高效的、开源的缓存框架,主要用于 Java 应用程序,它提供了一种在内存中存储对象的方式,以提高数据访问速度并减轻数据库的负载。在Java Web开发中,OSCache常被用于实现Session复制和分布式缓存,...

    oscache-JSP缓存

    osCache是一个基于Java的缓存框架,主要针对JSP页面和Java对象的缓存。它通过将常用的数据存储在内存中,避免了频繁的数据库查询或计算,从而降低了服务器负载,提高了响应速度。osCache支持缓存页面片段、整个页面...

    osCache,缓存

    osCache是一款广泛应用于Java开发中的高效缓存解决方案。它由OpenSymphony开源组织开发,旨在提供内存中的对象缓存服务,以提升应用性能并减轻数据库负载。osCache的核心功能是将频繁访问的数据存储在内存中,避免了...

    oscache处理

    osCache是开源的Java缓存框架,它提供了一种简单而强大的方式来管理和共享应用程序中的数据。osCache可以被集成到各种Java应用中,包括Web应用,如Struts2、Spring和iBatis。下面将详细解释这些框架与osCache的结合...

    SSM的整合+OScache页面缓存+freemark模板

    OScache是Java的一个开源缓存框架,它可以用来缓存任何Java对象,包括页面。在SSM项目中引入OScache,可以在服务器端对经常访问的页面进行缓存,提高页面加载速度,减轻服务器压力。配置OScache主要包括设置缓存策略...

    oscache文档

    作为一种广泛应用且高性能的J2EE缓存框架,OSCache能够应用于任何Java应用程序中作为通用缓存解决方案。 **主要特点:** 1. **缓存对象多样性**:不受限制地缓存部分JSP页面或HTTP请求,任何Java对象均可缓存。 2....

    hibernate+oscache实现二级缓存实例

    在IT行业中,数据库操作是应用开发中的重要环节,而Hibernate作为一种优秀的Java ORM(对象关系映射)框架,极大地简化了数据库交互。为了提高系统性能,通常会采用缓存技术来减少对数据库的直接访问,而OSCache就是...

    教你如何用好oscache的详细文档

    **osCache 是一款高效、轻量级的 Java 缓存框架,主要用于提高应用程序的性能和减少对数据库的访问。在本文中,我们将深入探讨 osCache 的核心概念、使用场景以及如何在项目中有效地利用它。** ### 一、缓存的重要...

    oscache-2.4.1-full

    OSCache是OpenSymphony开发的一款高效、开源的Java缓存框架,主要应用于Web应用程序,特别是JSP环境。其核心功能是提供内存级别的缓存服务,从而显著提高网页的加载速度和减少数据库的压力。标题"oscache-2.4.1-full...

    oscache-2.3.jar

    oscache-2.3.jar是专门为Java应用程序设计的一个高效、轻量级的缓存框架,由OpenSymphony开源组织开发。本文将深入探讨oscache的核心功能、工作原理及其在实际应用中的价值。 一、oscache简介 oscache全称为...

Global site tag (gtag.js) - Google Analytics