posts - 61,  comments - 2033,  trackbacks - 0
          ?? 由于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>
          <%
          ????}?
          %>??

          ?

          歡迎提出新的意見!
          posted on 2006-08-11 12:59 魚上游 閱讀(3856) 評論(1)  編輯  收藏 所屬分類: 爪哇世界探險


          FeedBack:
          # re: 關于opencms把sites目錄中的文件根據URL顯示到網頁的解決方法
          2006-09-01 12:44 | 孟厚
          不錯,opencms文章太少,多一篇都是好的  回復  更多評論
            
          <2006年8月>
          303112345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿(82)

          隨筆分類(59)

          文章分類(21)

          相冊

          收藏夾(40)

          GoodSites

          搜索

          •  

          積分與排名

          • 積分 - 1267073
          • 排名 - 22

          最新評論

          閱讀排行榜

          主站蜘蛛池模板: 娱乐| 虎林市| 滨海县| 兰州市| 浠水县| 阿拉尔市| 宜阳县| 铁岭县| 宾阳县| 南皮县| 都匀市| 峨眉山市| 怀化市| 林州市| 凌云县| 临江市| 塔河县| 沐川县| 元江| 临汾市| 原阳县| 内江市| 津南区| 涞水县| 伽师县| 股票| 宝清县| 建宁县| 萝北县| 富川| 元江| 砚山县| 衡山县| 金乡县| 兴山县| 大荔县| 嵩明县| 仙游县| 山西省| 渝北区| 甘孜|