由于web中的文件不能直接通过url方式读取opencms的sites下的文件,所以必须绕个弯子解决。查阅了一下opencms的源代码,我的解决思路如下:
第一 拷贝方式:
1.第一次访问时,根据opencms提供的接口,把文件从数据库读到java对象obj
2.将obj对象拷贝到web中的对应目录
3.将web中的对应目录的URL确定,即可直接调用。
4.第二次及其以后访问时,根据对象obj的最后修改时间属性,确定是否需要重复1-3步骤。
参考源代码:
<!--
$Id: test.jsp,v
1.5
2006
/
08
/
11
04
:
59
:
31
davidye Exp $
-->
<%
@ page pageEncoding
=
"
UTF-8
"
%>
<%
@ page buffer
=
"
none
"
import
=
"
org.opencms.util.*, org.teema.eeonline.exhibition.ExhibitionConstants,com.tblink.common.util.StringUtil,org.opencms.frontend.templateone.modules.*,javax.servlet.ServletOutputStream, org.opencms.file.*,java.util.*, java.io.*, org.opencms.frontend.templateone.*
"
%>
<%
@ taglib uri
=
"
http://jakarta.apache.org/struts/tags-bean
"
prefix
=
"
bean
"
%>
<%
@ taglib prefix
=
"
cms
"
uri
=
"
http://www.opencms.org/taglib/cms
"
%>
<%
@ taglib prefix
=
"
fmt
"
uri
=
"
http://java.sun.com/jstl/fmt
"
%>
<%
@ taglib prefix
=
"
c
"
uri
=
"
http://java.sun.com/jstl/core
"
%>
<%
@ include file
=
"
../elements/common/common.jsp
"
%>
<%!
private
String copyFile(CmsFile cmsFile){
try
{
byte
[] byteFile
=
cmsFile.getContents();
String path
=
StringUtil.getRealPath(StringUtil.
class
,
"
WEB-INF
"
,ExhibitionConstants.EXHIBITION_FLASH_DIRECTIONARY);
RandomAccessFile rf
=
new
RandomAccessFile(path
+
ExhibitionConstants.EXHIBITION_FLASH_NAME,
"
rw
"
);
rf.write(byteFile);
rf.close();
return
path.substring(
0
,path.length()
-
1
);
}
catch
(Exception e)
{
return
""
;
}
}
%>
<%
String direct
=
ExhibitionConstants.EXHIBITION_FLASH_DIRECTIONARY
+
ExhibitionConstants.EXHIBITION_FLASH_NAME;
String flashUrl
=
""
;
try
{
CmsFile cmsFile
=
__cmsJSP.getCmsObject().readFile(direct);
long
l
=
cmsFile.getDateLastModified();
String lstr
=
(String)application.getAttribute(ExhibitionConstants.APPLICATION_FLASH_DATE_INDEX);
flashUrl
=
(String)application.getAttribute(ExhibitionConstants.APPLICATION_FLASH_URL_INDEX);
if
(lstr
==
null
||
!
StringUtil.isNums(lstr)){
direct
=
copyFile(cmsFile);
}
else
if
(Long.parseLong(lstr)
==
l){
if
(flashUrl
==
null
){
direct
=
copyFile(cmsFile);
}
}
else
{
direct
=
copyFile(cmsFile);
}
flashUrl
=
request.getContextPath()
+
ExhibitionConstants.EXHIBITION_FLASH_DIRECTIONARY
+
ExhibitionConstants.EXHIBITION_FLASH_NAME;
application.setAttribute(ExhibitionConstants.APPLICATION_FLASH_DATE_INDEX,lstr);
application.setAttribute(ExhibitionConstants.APPLICATION_FLASH_URL_INDEX,flashUrl);
}
catch
(Exception e)
{
out.println(e);
}
%>
<
object classid
=
"
clsid:D27CDB6E-AE6D-11cf-96B8-444553540000
"
codebase
=
"
http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0
"
width
=
"
760
"
height
=
"
266
"
>
<
param name
=
"
movie
"
value
=
"
<%=flashUrl%>
"
>
<
param name
=
"
quality
"
value
=
"
high
"
>
<
embed src
=
"
<%=flashUrl%>
"
quality
=
"
high
"
pluginspage
=
"
http://www.macromedia.com/go/getflashplayer
"
type
=
"
application/x-shockwave-flash
"
width
=
"
760
"
height
=
"
266
"
></
embed
>
</
object
>
第二、新增Resource Type方式
1.新建Resource Type,详细请见前一篇文章
2.在opencms控制台,新增该类别的文件
3.调用相关API显示出来,代码如下
<%
if (getResourceCount(__cms, "TEEMA_Ad/Home/Wide_Block_1/|teemaAd", false) > 0) {
%>
<cms:contentload collector="allInFolderDateReleasedDesc" param="TEEMA_Ad/Home/Wide_Block_1/|teemaAd" editable="true">
<%
if(bannerTextCount<1) {
bannerTextCount++;
%>
<a href='<cms:contentshow element="URL"/>' target="_blank">
<img src="/eeonline/cms<cms:contentshow element="Image/Image"/>" width="440" height="75">
</a>
<% } %>
</cms:contentload>
</tr>
<%
}
%>
欢迎提出新的意见!
分享到:
相关推荐
本文将详细探讨如何通过不同的方法去除URL中的冗余“opencms”,以实现更加简洁和友好的路径。 1. **配置Web服务器** - 如果你使用的是Apache HTTP Server,可以编辑`httpd.conf`文件,通过重写规则来修改URL。...
OpenCms中文用户手册是为了解决开源网站内容管理系统OpenCms的使用者在操作和管理过程中遇到的问题而编写的详尽指南。OpenCms是一款基于Java技术构建的强大的Web内容管理系统,它提供了一套完整的解决方案,用于创建...
在某些配置中,OpenCms可能会在URL中显示“/opencms/”路径段两次,这可能是由于内部路由或模块的设置导致的。这样的URL可能看起来像`http://example.com/opencms/opencms/somepage.html`,对于用户来说不够直观,也...
文档中包含了关于API使用、插件开发和模块集成的指导,让开发者能够根据项目需求扩展系统功能。 7. **性能优化**:为了确保网站的高效运行,OpenCms提供了缓存策略和性能调整选项。文档将教导用户如何配置这些设置...
10. **故障排除**:列出常见问题和解决方法,帮助用户快速处理遇到的错误。 11. **社区与支持**:介绍OpenCMS的用户社区、论坛和获取官方技术支持的方式。 通过深入阅读并实践这本中文用户手册,用户将能够充分...
根据提供的文件信息,我们可以深入探讨关于使用OpenCms构建网站的相关知识点。 ### 一、OpenCms概述 #### 1.1 定义与特点 OpenCms 是一个开源的内容管理系统(Content Management System, CMS),主要用于构建和管理...
2. **system**:这是一个目录,很可能包含了OpenCMS系统的核心组件的中文翻译文件。这些文件可能包括.properties或.xml格式,它们存储了各种界面文本、错误消息和帮助文档的翻译。"system"目录下可能有多个子目录,...
2. `system` 目录:这是一个重要的目录,通常在OpenCMS中包含系统级别的文件和配置。此目录下的文件可能是汉化后的语言文件、资源配置文件或者系统组件。`system`目录下的文件结构可能与OpenCMS的模块结构相对应,...
### OpenCMS:构建网站...无论是初学者还是经验丰富的开发者,都可以通过《使用OpenCMS快速建站》一书了解到如何有效地使用这一强大工具。此外,该书也适合那些希望了解或进一步探索OpenCMS功能特性的企业和个人参考。
在这个文件中,你可以定义规则来移除URL中的`/opencms`部分。例如,你可以创建一个规则将`http://example.com/opencms/content/page`重写为`http://example.com/content/page`。 3. **调整模块配置**: 如果OpenCMS...
- **项目创建**:使用插件,你可以直接在MyEclipse中创建OpenCms项目,无需手动配置所有必要的文件和目录结构。 - **模板编辑**:在MyEclipse中,你可以使用熟悉的编辑器来编写和调试OpenCms的XML模板,享受代码...
2. **正确导入**:根据readme.txt的指示,将汉化包的文件复制到OpenCMS的相应目录下,覆盖原有的英文文件。可能需要通过OpenCMS的管理界面或FTP客户端来完成。 3. **重启服务**:安装完成后,可能需要重启OpenCMS...
1. **切换路径**:首先,需要切换到OpenCms的安装目录下的`sites`目录。 - **命令示例**:`cd /path/to/opencms/sites/` 2. **创建文件夹**:在此目录下创建一个新的站点文件夹,例如命名为`testWeb`。 - **...
本书《OpenCms7 Development》由Dan Liliedahl编写,由Packt Publishing出版,深入探讨了通过Java API扩展和定制OpenCms的方法。 一、OpenCms概览 OpenCms的核心优势在于其强大的灵活性和可扩展性。系统基于Java...
在 OpenCms 中,系统目录下的文件通常是不可直接编辑的,以免破坏系统的稳定性和一致性。如果需要对系统进行定制,通常会通过创建新的模块或覆盖默认设置来实现。 OpenCms9 版本是 OpenCms 的一个重要里程碑,引入...
在“opencms9 java api”文档包中,我们可以找到关于OpenCMS 9版本的详细API参考,这些文档通常包含了类库、接口、方法和异常等关键元素的说明,是开发者理解和使用OpenCMS的核心参考资料。下面将深入探讨其中的一些...
- 显示关于OpenCMS的信息。 **5.13 ** - 获取内容项的信息。 **5.14 ** - 显示图片。 **5.15 ** - 检查用户是否有权访问特定内容。 **5.16 EL表达式语言** - 学习如何在OpenCMS中使用EL(Expression Language)...
Opencms建站手册是专为开发者和网站管理员设计的一份详细指南,旨在提供关于如何使用Opencms进行内容管理系统(CMS)开发的信息。本文将深入解析Opencms的介绍、环境搭建、常用API和标签的使用,帮助你更好地理解和...
2. **解压OPENCMS**:将下载的ZIP文件解压到你希望存放OPENCMS的目录中,例如C:\Program Files\OpenCms。 3. **配置环境变量**:将OPENCMS的`WEB-INF/classes`目录添加到系统环境变量`JAVA_CLASSPATH`中。 4. **...
解压后,你需要按照readme文件的指示将这些文件上传到OPENCMS服务器的正确目录,然后在后台进行配置,使模块生效。 在OPENCMS GeoMap模块的使用过程中,你可能会涉及以下几个关键知识点: 1. **Google Maps API...