为什么要在JSP中使用OpenCms特性?
OpenCms提供了大量的特性,可以帮助我们提高开发的速度,像模板、用户管理、声明许可和缓存系统。还有你可以在你的OpenCms文件构架上搭建动态导航。所有OpenCms里面的文件都保存在OpenCms的虚拟文件系统(VFS)里。这个文件系统存储在OpenCms附属的数据库中。想在OpenCms的VFS中存取任何信息你都必须使用OpenCms的JSP API。
基础选项。
在你的JSP页面中,你可以通过两种方式使用OpenCms的这些特有的功能。
- 使用OpenCms的标签库(这种标签都以<cms:>标签开头)
- 在jsp脚本中使用OpenCms 的 org.opencms.jsp.CmsJspActionElement 包。
通过这两种方式都可以得到你想要的结果。使用何种方法更好一点,取决于个人的风格和经验。一般来说jsp标签库比较容易使用适合java的初学者。对于java的老手来说,或许比较愿意用jsp命令。
如果你正在使用OpenCms的标签库,你可以能还需要一种“万能”的标签库,来实现基本的逻辑。比如loops, if - then,enumeration等。一个不错的选择就是JSTL,它是JSP2.0的新特性。
如果你想用OpenCms建立更高级的功能(比如导航、表单等),最好还是使用jsp脚本的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标签库中结合其他标签库(如:JSTL),以使功能更加全面。
OpenCms的脚本API
要在你的jsp脚本代码中使用OpenCms API,需要创建一个org.opencms.jsp.CmsJspActionElement 的javabean实例.示例如下:
- <%@ 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>");
- %>