Magnolia学习笔记(一个基于JSR170的内容管理系统) ( by quqi99 )
作者:张华 发表于:2007-05-24 ( http://blog.csdn.net/quqi99 )
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明。
Magnolia
1、
Magnolia
包括两个部分:内容存储库(基于
JSR170
)与内容管理系统。
2、
管理端
:
http://localhost:8080/magnoliaAuthor
用户名,密码
superuser
3、
Manolia Sitedesigner
说白了就是另一个模块
(
可在学习完模块之后再看不迟
)
4、
如何变中文?新增用户,并修改对应的
Language
为
Chinese(China)
,保存,打开新的
ie
,用新的用户登陆。
5、
Magnolia
,而是
Magnolia
的兄弟产品
MagnoliaQT
,一个
Magnolia
媒体增强的
CMS
系统,其利用
QuickTimeJava
可以很方便的处理各种图像、音频、视频
6、
一个很有趣的工具,可以以手绘的形式设计网站,很适合初期大家一起设计网站结构的时候使用,随手在上面写写画画,可以以手绘的方式设置页面间链接
: http://dub.washington.edu/denim/
7
、学习文档:
http://documentation.magnolia.info/docs/en.html
8
、
Java Content Repository API
简介
:
http://www.ibm.com/developerworks/cn/java/j-jcr/
9
、
这句代码
,
如果用的是
jdk1.5,
必须加上这段代码
,
否则会报
javax.xml.transform.TransformerFactoryConfigurationError: Provider org.apache.xalan.processor.TransformerFactoryImpl not found
异常
.
10
.
JackRabbit
是基于
JSR170
的一个实现,运行它需要下列
JAR
包:
要使用和运行这篇文章中的示例,请将下面这些库放在类路径中:
?
jackrabbit-core
:针对
JSR-170
的
Jackrabbit
内容仓库核心实现和来自
Apache
的公共实用代码。
?
commons-collections
:包含强大数据结构的框架,该框架可以加快
Java
应用程序的开发。
?
concurrent
:这个库提供通常在
Java
并发编程中会遇到的工具类的标准化的、有效率的版本。
?
derby
:一个
Apache
数据库子项目,它提供完全用
Java
语言实现的关系数据库。
?
jcr
:一组符合
JSR-170
规范的接口。
?
log4j
:运行时日志库。
?
lucene
:高性能的全功能文本搜索引擎库。
?
slf4j
(针对
Java
的简单日志
Facade
):目的是充当不同日志
API
的简单
facade
,允许用户在部署时插入需要的实现。
?
xerces
:高级
XML
解析器,支持
SAX
版本
2
、
DOM 1
级和
SAX
版本
1 API
。
Repository.xml
用来配置
Repository, workspace.xml
用来配置
workspace
Repository
元素包括:
?
FileSystem
元素:虚拟文件系统,用来存储全局状态如注册名空间,客户化节点类型等
?
Security
元素:指明在
JAAS
配置与访问管理器中
app-entry
的名字。
?
Workspaces
元素:指明
workspace
的根目录与默认
workspace
的名字,它用于在没有节
workspace
时通过
API
创建默认的
workspace
?
Versioning
元素:配置与版本相关的设置
?
SearchIndex
元素:用于设置在
/jcr:system
树上与索引相关的设置
例如:
<Repository>
<FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
<param name="path" value="${rep.home}/repository"/>
</FileSystem>
<Security appName="Jackrabbit">
<AccessManager class="org.apache.jackrabbit.core.security.SimpleAccessManager">
<!-- <param name="config" value="${rep.home}/access.xml"/> -->
</AccessManager>
<LoginModule class="org.apache.jackrabbit.core.security.SimpleLoginModule">
<param name="anonymousId" value="anonymous"/>
<!-- <param name="defaultUserId" value="superuser"/> -->
</LoginModule>
</Security>
<Workspaces rootPath="${rep.home}/workspaces" defaultWorkspace="default"/>
<Workspace name="${wsp.name}">
<FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
<param name="path" value="${wsp.home}"/>
</FileSystem>
<PersistenceManager class="org.apache.jackrabbit.core.state.db.DerbyPersistenceManager">
<param name="url" value="jdbc:derby:${wsp.home}/db;create=true"/>
<param name="schemaObjectPrefix" value="${wsp.name}_"/>
</PersistenceManager>
<SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
<param name="path" value="${wsp.home}/index"/>
</SearchIndex>
</Workspace>
<Versioning rootPath="${rep.home}/version">
<FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
<param name="path" value="${rep.home}/version" />
</FileSystem>
<PersistenceManager class="org.apache.jackrabbit.core.state.db.DerbyPersistenceManager">
<param name="url" value="jdbc:derby:${rep.home}/version/db;create=true"/>
<param name="schemaObjectPrefix" value="version_"/>
</PersistenceManager>
</Versioning>
<SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
<param name="path" value="${rep.home}/repository/index"/>
</SearchIndex>
</Repository>
11
、模板学习
Magonia
中的每一个页面都是由模板(主
JSP/Servlet
,或者其他脚本)动态生成。
新建一个模板时,相当于在
website
这个
repository
中增加一个
node
,并添加属性
”title”
与
”template”
有
page template, Paragraph template , Dialog Template.
配置一个模板就是一个添加
Template Definition
的过程,一个模板被配置在
Configuration/modules/templating
(这里面的就是模板定义,也就是
node
的属性)中
页面中用模板
11.1 JSP2.0
参考文档:
http://www.oreilly.com.cn/news/jsppart3.php?c=java
JSP2
。
0
使
XML
与
JSP
协同变得更容易。支持两种写法,一种是常规的,一种是符合
XML
文档的,如下:
常规的 JSP
页面
|
JSP 文档
|
<%@ page attribute list
%>
|
<jsp:directive.pageattribute list
/>
|
<%@ include file="path
" %>
|
<jsp:directive.include file="path
" />
|
<%! declaration
%>
|
<jsp:declaration>declaration
</jsp:declaration>
|
<%= expression
%>
|
<jsp:expression>expression
</jsp:expression>
|
<% scriptlet
%>
|
<jsp:scriptlet>scriptlet
</jsp:scriptlet>
|
首先对于JSP 2.0
来说,一个JSP Document
必须要有一个<jsp:root>
根元素用以告诉容器它是哪一种类型的JSP
页面。JSP 2.0
通过这种新的方式来标识一个JSP Document
文件解决了这个限制。如果以下条件中有一个为true
,这个文件就将被JSP 2.0
容器作为一个JSP Document
来处理:
-
请求的路径与在web.xml
中声明的URL
匹配, JSP property group
声明有一个 <is-xml>
元素设置为 true
。关于 JSP property group
声明在上一篇中有详细的说明。
-
请求路径的扩展名是.jspx
,除非这个扩展名匹配一个JSP property group
声明的URL pattern
,而JSP property group
声明<is-xml>
元素为false
。 换句话说,.jspx
是默认的JSP Document
的扩展名,但是它可以被一个property group
的声明置为无效。
-
请求路径扩展名是.jsp
或者匹配一个JSP property group
声明的URL pattern
,而且这个文件中的root element
是<jsp:root>
。
这些新的规则使采用一个常规的XHTML
文件(用JSP element
处理动态内容)的形式来编写JSP Document
成为可能,比如:不需要将所有的内容都放到<jsp:root> element
中。如果类似下面的例子那样创建一个JSP property group
,你甚至可以用扩展名为.html
的文件:
<jsp-config>
<jsp-property-group>
<url-pattern>*.html</url-pattern>
<is-xml>true</is-xml>
</jsp-property-group>
</jsp-config>
JSP2
。0
的一个例子:
<jsp:root version="1.2" xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:cms="urn:jsptld:cms-taglib"
xmlns:cmsu="urn:jsptld:cms-util-taglib" xmlns:c="urn:jsptld:http://java.sun.com/jsp/jstl/core"
xmlns:fmt="urn:jsptld:http://java.sun.com/jsp/jstl/fmt">
<jsp:directive.page contentType="text/html; charset=UTF-8" session="false" />
<jsp:text>
<![CDATA[<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> ]]>
</jsp:text>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<c:import url="/templates/samples/templates/inc/head.jsp" />
</head>
<body>
<cms:mainBar paragraph="samplesPageProperties" />
<div id="contentDivMainColumn">
<c:import url="/templates/samples/templates/inc/columnMain.jsp" />
<div id="footer">
<cms:adminOnly>
<fmt:message key="buttons.editfooter" var="label" />
<cms:editButton label="${label}" paragraph="samplesPageFooter" contentNodeName="footerPar" />
</cms:adminOnly>
<cms:ifNotEmpty nodeDataName="footerText" contentNodeName="footerPar">
<p>
<cms:out nodeDataName="footerText" contentNodeName="footerPar" />
</p>
</cms:ifNotEmpty>
<a href="http://www.magnolia.info">
<img src="${pageContext.request.contextPath}/docroot/samples/imgs/poweredSmall.gif"
alt="Powered by Magnolia" />
</a>
</div>
</div>
<div id="contentDivRightColumn">
<cms:contentNodeIterator contentNodeCollectionName="rightColumnParagraphs">
<div style="clear:both;">
<cms:editBar adminOnly="true" />
<cms:includeTemplate />
</div>
</cms:contentNodeIterator>
<cms:adminOnly>
<div style="clear:both;">
<cms:newBar contentNodeCollectionName="rightColumnParagraphs" paragraph="samplesRightColumn" />
</div>
</cms:adminOnly>
</div>
<div style="position:absolute;left:0px;top:0px;">
<cmsu:img nodeDataName="headerImage" inherit="true" />
</div>
<cmsu:simpleNavigation />
</body>
</html>
</jsp:root>
11.2 CMS
标签
1
、
<cms:setNode var="pageProperties" />
将
content node
(模板就是一个
node
)作为一个
nodeData
对象的
Map
放到
pagecontext
范围之内。目的是为了
JSTL
能访问。然后可这样取:
${pageProperties.title}
,
<meta name="description" content="${pageProperties.metaDescription}" />
<meta name="keywords" content="${pageProperties.metaKeywords}" />
2
、
<cms:links />
:
add magnolia css and js links
取应用目录:
${pageContext.request.contextPath}
3
、
<cms:mainBar paragraph="samplesPageProperties" />
用于显示上面的头。
分享到:
相关推荐
基于java的开发源码-Magnolia开源基于java的Web内容管理系统.zip 基于java的开发源码-Magnolia开源基于java的Web内容管理系统.zip 基于java的开发源码-Magnolia开源基于java的Web内容管理系统.zip 基于java的开发...
Magnolia开源基于java的Web内容管理系统.zip
Magnolia 是一个开源基于Java的Web内容管理系统(CMS) ,构建在Java内容知识库标准(JSR-170). Magnolia支持包括英语,中文在内的14种语言,它支持本地搜索,基于XML的导入/导出,跨 浏览器的文本编辑器,一个简易的War文件...
Magnolia 是一个开源基于Java的Web内容管理系统(CMS) ,构建在Java内容知识库标准(JSR-170). Magnolia支持包括英语,中文在内的14种语言,它支持本地搜索,基于XML的导入/导出,跨 浏览器的文本编辑器,一个简易的War文件...
基于Java的源码-Magnolia开源基于java的Web内容管理系统.zip
Magnolia是一个基于Java的开源Web内容管理系统(CMS),它构建于Java内容知识库标准(JSR-170)上。Magnolia支持包括中英文在内的15种语言,支持本地搜索,基于XML导入/导出,跨浏览器的文本编辑器,一个简易的可部署到...
Magnolia是一个开源基于Java的Web内容管理系统(CMS) ,构建在Java内容知识库标准(JSR-170). Magnolia支持包括英语,中文在内的14种语言,它支持本地搜索,基于XML的导入/导出,跨 浏览器的文本编辑器,一个简易的War文件可...
源码学习,压缩包解压密码:www.cqlsoft.com
Magnolia 是一个开源基于Java的Web内容管理系统(CMS)。Magnolia提供了较好的扩展性,并且容易上手,模板的编写也是比较的容易。
Magnolia 是一种开放式 Java 内容管理系统,可在企业规模上实现智能手机的简便性。受移动启发的 HTML5 用户界面通过可定制的、以任务为中心的应用程序、称为 Pulse 的通知流以及用于快速访问工作区的收藏夹系统运行...
MAGNOLIA
Magnolia是Java开源的CMS系统,与业界流行的WordPress作为CMS,Magnolia使用Spring技术,是Java拥趸的福音,但市面上的资料不多,这个是一本
很全的搭建手册,简单易懂,图文并茂,讲解清楚
magnolia 是一个很好用的开源java cms系统 使用模板技术,开发网站可以免去美工的工作。
Grails 与 Magnolia CMS 的演示集成。 技术 以下是该项目中发现的主要技术。 Magnolia CMS ( ) Grails ( ) 流浪 ( ) 厨师 ( ) 入门 先决条件 Vagrant - (针对 1.7.2 构建) Chef DK - (针对 0.3.6 构建) ...
Magnolia enterprise 5.3.1 破解授权文件,直接复制文件 magnolia-license-1.4.2.jar 到 webapp/magnoliaAuthor/WEB-INF/lib 即可 Magnolia enterprise 5.3.1 下载地址 :http://files.magnolia-cms.com/5.3.1/
玉兰车把 当前版本 玉兰把手父 - 1.0.0 玉兰车把 - 1.0.0 玉兰把手示例 - 1.0.0 玉兰把手助手 - 1.0.0 变更日志 创建版本 1.0.0 添加了 buildNumber.properties 以供以后在... < id>magnolia.public.releases</ id>
NULL 博文链接:https://ajita.iteye.com/blog/2023906