1. 基于java的开源CMS有哪些推荐,各自特点是什么
选了10个最强大、最易用的CMS,向大家做一个简源告要介绍。
Alfresco是一个开源的企业网站内容管理系统,它提供了文档管理、多人协作、记录管理、知识管理网页内容和图像管理等功能。它使用Spring、 Hibernate、 Lucene 和JSF等最新java技术构建了模块化的系统架构。
Alfresco官方网站:http://www.alfresco.com/
中文教程:http://blog.csdn.net/alfresco/
DotCMS是一个开源的企业级内容管理系统,它融入了电子商 务、个性化设置、客户关系管理工具等功能,它可以方便的建立基于各种关系的数据结构和数据库,它可以使用模板快速创建页面,并且提供了一个强雹腊明大的所见即所 得(WYSIWYG)编辑器。用户可以使用加载外部模块的功能快速的建立Ajax应用、搜索、MP3播放器、幻灯片和相册等功能。
DotCMS官方网站http://dotcms.org/
中文安装教程http://www.javaeye.com/wiki/topic/277794
Magnolia是一个老牌的java内容管理系统,目前已经发布了第四版。它的独特之处在于可以定制内容模型,以返回数组形式来搞定各种不确定的 功能。它遵循W3C标准并且在搜索引擎优化上有许多优势。同时它支持java内容仓库( java content repositories , JCR) 的API。
Magnolia官方网站http://www.magnolia-cms.com/home.html
OpenCms
它提供了一套建立和维护网站的方便的工具。在内容建设方面,它拥有一个易于使用的界面和所见即所得编辑器,在网页生成上它使用了一个先进的页面模板。
OpenCMS官方网站http://www.opencms.org/opencms/en/index.html
中文网站http://www.opencms.cn/
Blandware AtLeap是一个多语种的免费Java内容管理系统,它包含了全文搜索引擎,可以算是一个能让你方便的编写应用的网站框架。
Atleap官方网站https://atleap.dev.java.net/
Fedora是“Flexible Extensible Digital Object Repository Architecture”的缩写,并不是Linux发行版Fedora,是一个数字资源管理系统,它可以创建很多类型的数字图书馆、资料库、档案馆系统 等。
Fedora官方网站http://www.fedora-commons.org/
Apache LenyaOpenEdit是一个开源的内容管理系统,它旨在建设基于在线数字资产的多媒体网站。它提供在线编辑,动态布局,拼写检查,用户管理器,文件管理器,版本控制和通知工具。同时包含企业级的插件,如电子商务,内容管理,博客,活动日程表,社交网络工具等。
OpenEdit官方网站http://www.openedit.org/
这是一个开源的 Java/XML 内容管理系统,提供了局世版本控制、多站点管理、调度、搜索、所见即所得编辑以及工作流程等功能。Apache Lyenya使用基于模块的Cocoom开源程序框架。
Apache Lyenya官方网站http://lenya.apache.org/
参考资料: http://www.adminbang.com/Webbiz/Exp/20091002-79842.html
2. 什么是“JCR”
英语缩写词JCR,全称为"Java Content Repository",中文即为"Java内容仓库"。这个术语主要应用于软件开发领域,特别是在内容管理系统(CMS)中。JCR的流行度达到了4019,表明它在技术社区中被广泛使用。它基于XML技术,实现了Java内容仓库与关系型数据库的双向映射,这使得数据管理更为高效。
JCR在技术上的一大优点是能够无缝整合Spring事务基础设施,无论是声明式还是编程式方式,都能有效地应用到Java内容仓库中,为开发提供了强大的支持。例如,在Jackrabbit基础上使用JCR进行仿真数据分析的管理,可以逐步实现并借助Spring模块进行操作,简化开发流程。
总的来说,JCR是Java内容仓库的缩写,它是一个用于存储和管理内容的Java技术框架,特别是在内容管理和内容管理系统中扮演着核心角色。这个缩写词的使用体现了Java技术在内容管理领域的广泛应用和其在技术开发中的重要性。请注意,以上内容仅供学习和交流,版权归属原作者。
3. Java编写图书管理系统,使用XML存储
importjava.io.File;
importjava.io.FileOutputStream;
importjava.util.ArrayList;
importjava.util.List;
importjava.util.Scanner;
importorg.dom4j.Document;
importorg.dom4j.DocumentHelper;
importorg.dom4j.Element;
importorg.dom4j.io.OutputFormat;
importorg.dom4j.io.SAXReader;
importorg.dom4j.io.XMLWriter;
publicclassBook{
privateintno;
privateStringname;
privatedoublevalue;
publicBook(){
}
publicBook(intno,Stringname,doublevalue){
this.no=no;
this.name=name;
this.value=value;
}
publicdoublegetValue(){
returnvalue;
}
publicvoidsetValue(doublevalue){
this.value=value;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicintgetNo(){
returnno;
}
publicvoidsetNo(intno){
this.no=no;
}
}
classBookList{
privateList<Book>bookList;
publicBookList(){
bookList=readXML();
}
publiclonggetCount(){
returnbookList.size();
}
publicList<Book>getBookList(){
returnbookList;
}
publicvoidsetBookList(List<Book>bookList){
this.bookList=bookList;
}
publicvoidadd(Bookbook){
bookList.add(book);
}
publicbooleandelete(Stringname){
Bookbook=query(name);
returnbookList.remove(book);
}
publicvoipdate(BookbookBefore,BookbookAfter){
bookList.remove(bookBefore);
add(bookAfter);
}
publicBookquery(Stringname){
Booktemp=null;
for(Bookbook:bookList){
if(book.getName().equals(name)){
temp=book;
}
}
returntemp;
}
(Bookbook){
try{
Filefile=newFile("D:\book.xml");
Documentdocument=null;
Elementroot=null;
if(!file.exists()){
//新建student.xml文件并新增内容
document=DocumentHelper.createDocument();
root=document.addElement("Books");//添加根节点
}else{
SAXReadersaxReader=newSAXReader();
document=saxReader.read(file);
root=document.getRootElement();//获得根节点
}
ElementsecondRoot=root.addElement("Book");//二级节点
//为二级节点添加属性,属性值为对应属性的值
secondRoot.addElement("no").setText(book.getNo()+"");
secondRoot.addElement("name").setText(book.getName()+"");
secondRoot.addElement("value").setText(book.getValue()+"");
OutputFormatformat=OutputFormat.createPrettyPrint();
format.setEncoding("GBK");
XMLWriterwriter=newXMLWriter(newFileOutputStream("D:\book.xml"),format);
writer.write(document);
writer.close();
document.clearContent();
}catch(Exceptione){
e.printStackTrace();
}
}
publicsynchronizedList<Book>readXML(){
List<Book>list=newArrayList<Book>();//创建list集合
Filefile=null;
try{
file=newFile("D:\book.xml");//读取文件
if(file.exists()){
SAXReadersaxReader=newSAXReader();
Documentdocument=saxReader.read(file);
ListnodeList=document.selectNodes("Books/Book");
for(inti=0;i<nodeList.size();i++){
Elementel=(Element)nodeList.get(i);
Bookbook=newBook();
book.setNo(Integer.parseInt(el.elementText("no")));
book.setName(el.elementText("name"));
book.setValue(Double.parseDouble(el.elementText("value")));
list.add(book);
}
}
}catch(Exceptione){
e.printStackTrace();
}
returnlist;
}
}
classTest{
publicstaticvoidmain(Stringargs[]){
BookListbl=newBookList();
booleanbBreak=true;
while(bBreak){
System.out.println("请输入操作代码:");
System.out.println("1:添加2:删除3:修改4:查询5:书籍统计6:退出");
Scannersc=newScanner(System.in);
intcode=sc.nextInt();
if(code==1){
System.out.println("请输入编号");
intno=sc.nextInt();
System.out.println("请输入书名");
Stringname=sc.next();
System.out.println("请输入售价");
doublevalue=sc.nextDouble();
Bookbook=newBook(no,name,value);
bl.add(book);
bl.writeXmlDocument(book);
}elseif(code==2){
System.out.println("请输入要删除的书籍名");
Stringname=sc.next();
if(bl.delete(name)){
System.out.println("删除成功");
}else{
System.out.println("书籍不存在");
}
}elseif(code==3){
System.out.println("请输入要修改的书籍名");
Stringname=sc.next();
BookbookBefore=bl.query(name);
System.out.println("请输入新的编号");
intnewNo=sc.nextInt();
System.out.println("请输入新的书名");
StringnewName=sc.next();
System.out.println("请输入新的售价");
doublevalue=sc.nextDouble();
BookbookAfter=newBook(newNo,newName,value);
bl.update(bookBefore,bookAfter);
}elseif(code==4){
System.out.println("请输入要查询的书籍名");
Stringname=sc.next();
Bookbook=bl.query(name);
System.out.println("编号:"+book.getNo()+"书名:"+book.getName()+"售价:"+book.getValue());
}elseif(code==5){
List<Book>list=bl.getBookList();
System.out.println("总书籍数:"+bl.getCount());
for(Bookbook:list){
System.out.println("编号:"+book.getNo()+"书名:"+book.getName()+"售价:"+book.getValue());
}
}elseif(code==6){
bBreak=false;
}
}
}
}
jar 包 dom4j.jar jaxen-1.1.4.jar