`
bibiye
  • 浏览: 172982 次
社区版块
存档分类
最新评论

关于opencms把sites目录中的文件根据URL显示到网页的解决方法

阅读更多
   由于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>
<%
    } 
%>  

 

欢迎提出新的意见!
分享到:
评论

相关推荐

    opencms路径去掉两个opencms的方法总结

    本文将详细探讨如何通过不同的方法去除URL中的冗余“opencms”,以实现更加简洁和友好的路径。 1. **配置Web服务器** - 如果你使用的是Apache HTTP Server,可以编辑`httpd.conf`文件,通过重写规则来修改URL。...

    OpenCms中文用户手册

    OpenCms中文用户手册是为了解决开源网站内容管理系统OpenCms的使用者在操作和管理过程中遇到的问题而编写的详尽指南。OpenCms是一款基于Java技术构建的强大的Web内容管理系统,它提供了一套完整的解决方案,用于创建...

    tomcat服务器以url重写的方式除去两个opencms

    在某些配置中,OpenCms可能会在URL中显示“/opencms/”路径段两次,这可能是由于内部路由或模块的设置导致的。这样的URL可能看起来像`http://example.com/opencms/opencms/somepage.html`,对于用户来说不够直观,也...

    OpenCms中文文档完整版

    文档中包含了关于API使用、插件开发和模块集成的指导,让开发者能够根据项目需求扩展系统功能。 7. **性能优化**:为了确保网站的高效运行,OpenCms提供了缓存策略和性能调整选项。文档将教导用户如何配置这些设置...

    opencms中文用户手册

    10. **故障排除**:列出常见问题和解决方法,帮助用户快速处理遇到的错误。 11. **社区与支持**:介绍OpenCMS的用户社区、论坛和获取官方技术支持的方式。 通过深入阅读并实践这本中文用户手册,用户将能够充分...

    Building Web Sites with OpenCms

    根据提供的文件信息,我们可以深入探讨关于使用OpenCms构建网站的相关知识点。 ### 一、OpenCms概述 #### 1.1 定义与特点 OpenCms 是一个开源的内容管理系统(Content Management System, CMS),主要用于构建和管理...

    opencms中文汉化包

    2. **system**:这是一个目录,很可能包含了OpenCMS系统的核心组件的中文翻译文件。这些文件可能包括.properties或.xml格式,它们存储了各种界面文本、错误消息和帮助文档的翻译。"system"目录下可能有多个子目录,...

    opencms 9.0.1 汉化包

    2. `system` 目录:这是一个重要的目录,通常在OpenCMS中包含系统级别的文件和配置。此目录下的文件可能是汉化后的语言文件、资源配置文件或者系统组件。`system`目录下的文件结构可能与OpenCMS的模块结构相对应,...

    OpenCMS

    ### OpenCMS:构建网站...无论是初学者还是经验丰富的开发者,都可以通过《使用OpenCMS快速建站》一书了解到如何有效地使用这一强大工具。此外,该书也适合那些希望了解或进一步探索OpenCMS功能特性的企业和个人参考。

    opencms 去掉两个/opemcms路径的方法

    在这个文件中,你可以定义规则来移除URL中的`/opencms`部分。例如,你可以创建一个规则将`http://example.com/opencms/content/page`重写为`http://example.com/content/page`。 3. **调整模块配置**: 如果OpenCMS...

    opencms for myeclipse插件及其使用方法

    - **项目创建**:使用插件,你可以直接在MyEclipse中创建OpenCms项目,无需手动配置所有必要的文件和目录结构。 - **模板编辑**:在MyEclipse中,你可以使用熟悉的编辑器来编写和调试OpenCms的XML模板,享受代码...

    opencms9 汉化包

    2. **正确导入**:根据readme.txt的指示,将汉化包的文件复制到OpenCMS的相应目录下,覆盖原有的英文文件。可能需要通过OpenCMS的管理界面或FTP客户端来完成。 3. **重启服务**:安装完成后,可能需要重启OpenCMS...

    OpenCms创建网站过程图解——献给OpenCms的初学者们

    1. **切换路径**:首先,需要切换到OpenCms的安装目录下的`sites`目录。 - **命令示例**:`cd /path/to/opencms/sites/` 2. **创建文件夹**:在此目录下创建一个新的站点文件夹,例如命名为`testWeb`。 - **...

    opencms

    本书《OpenCms7 Development》由Dan Liliedahl编写,由Packt Publishing出版,深入探讨了通过Java API扩展和定制OpenCms的方法。 一、OpenCms概览 OpenCms的核心优势在于其强大的灵活性和可扩展性。系统基于Java...

    OpenCms 内容类型模块

    在 OpenCms 中,系统目录下的文件通常是不可直接编辑的,以免破坏系统的稳定性和一致性。如果需要对系统进行定制,通常会通过创建新的模块或覆盖默认设置来实现。 OpenCms9 版本是 OpenCms 的一个重要里程碑,引入...

    opencms9 java api

    在“opencms9 java api”文档包中,我们可以找到关于OpenCMS 9版本的详细API参考,这些文档通常包含了类库、接口、方法和异常等关键元素的说明,是开发者理解和使用OpenCMS的核心参考资料。下面将深入探讨其中的一些...

    OpenCMS教程

    - 显示关于OpenCMS的信息。 **5.13 ** - 获取内容项的信息。 **5.14 ** - 显示图片。 **5.15 ** - 检查用户是否有权访问特定内容。 **5.16 EL表达式语言** - 学习如何在OpenCMS中使用EL(Expression Language)...

    opencms建站手册

    Opencms建站手册是专为开发者和网站管理员设计的一份详细指南,旨在提供关于如何使用Opencms进行内容管理系统(CMS)开发的信息。本文将深入解析Opencms的介绍、环境搭建、常用API和标签的使用,帮助你更好地理解和...

    如何安装OPENCMS

    2. **解压OPENCMS**:将下载的ZIP文件解压到你希望存放OPENCMS的目录中,例如C:\Program Files\OpenCms。 3. **配置环境变量**:将OPENCMS的`WEB-INF/classes`目录添加到系统环境变量`JAVA_CLASSPATH`中。 4. **...

    OPENCMS GeoMap模块

    解压后,你需要按照readme文件的指示将这些文件上传到OPENCMS服务器的正确目录,然后在后台进行配置,使模块生效。 在OPENCMS GeoMap模块的使用过程中,你可能会涉及以下几个关键知识点: 1. **Google Maps API...

Global site tag (gtag.js) - Google Analytics