為什麼在JSP中使用OpenCms特性?
OpenCms提供了很多特性協助你加速開發進度,如模板、使用者管理和使用權限設定和緩衝管理,同樣你也可以根據OpenCms的檔案結構建立動態導航,OpenCms虛擬檔案系統(VFS)中所有的檔案都儲存在資料庫中,為了訪問任何的OpenCms VFS資訊你都必須使用OpenCms提供的JSP API。
兩種基本方式
在JSP檔案中有兩種方式來訪問OpenCms系統:
1、使用OpenCms標籤庫,通常以“<cms:>”開始
2、在你的指令碼中使用“OpenCms org.opencms.jsp.CmsJspActionElement
”
通學的功能使用這兩種方法都可以完成,這通常就是個人經驗和喜好的問題了,JSP標籤對於JAVA新手來說更易用些,甚至不懂JAVA但HTML經驗很豐富,就可以像用HTML標籤一樣來使用這些標籤,另一方面,JAVA豐富的老手可能更熱衷於使用指令碼代碼(使用JavaBeans來處理商務邏輯)來獲得更靈活的控制和更高的效能。
如果你正在使用OpenCms標籤,你應該考慮與通常的JSP標籤結合使用來完成某些功能,如loop,if-then,enumerations等。建議使用JSP2.0標準中的JSTL(Java標準標籤庫),在Alkacon文檔(OpenCms安裝成功後的系統協助文檔)中有一些JSTL的例子。
如果你想要實現更進階的功能,如導航或表單,你就必須使用API來寫指令碼了。
OpenCms <cms:>標籤
如果要使用OpenCms標籤庫,在你的JSP中必須按如下聲明:
<%...@ taglib prefix="cms" uri="http://www.opencms.org/taglib/cms" %>
<h1>Simple taglib example</h1>
The installed OpenCms version is <cms:info property="opencms.version"/>.<p>
The "title" property of this file is "<cms:property name= "title"/>".<p>
Link to a file in the OpenCms VFS <a href="<cms:link>/alkacon-documentation/index.html</cms:link>">like this</a>.<p>
執行結果如下:
OpenCms 指令碼 API
在你的指令碼中訪問OpenCms API,首先要建立一個 JavaBean org.opencms.jsp.CmsJspActionElement的執行個體,如下:
<%@ page import="java.util.*,org.opencms.jsp.*" %><%
// Create a JSP action element
CmsJspActionElement cms = new CmsJspActionElement(pageContext, request, response);
// Get a simple navigation of all pages / subfolders in the current folder
List list = cms.getNavigation().getNavigationForFolder();
Iterator i = list.iterator();
out.println("<h3>A simple sample navigation</h3><ul>");
while (i.hasNext()) ...{
CmsJspNavElement ne = (CmsJspNavElement)i.next();
out.println("<li><a href="" + cms.link(ne.getResourceName()) + "">");
out.println(ne.getTitle() + "</a>");
}
out.println("</ul>");
%>
運行結果如下: