JEECMS开发文档.doc_第1页
JEECMS开发文档.doc_第2页
JEECMS开发文档.doc_第3页
JEECMS开发文档.doc_第4页
JEECMS开发文档.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1.在myeclipse中新建一个项目jeecms,将服务器中jeecms项目下web-inf文件夹下内容拷到新建项目中 2.解压缩jeecms-3.0.2-final-src,在src文件夹下会看到有三个压缩文件,如果只想进行普通的二次开发,可以只导入cms这个源码,删除jeecms-cms-identity-3.0.2-final.jar即可,如果想进行深入的二次开发,需要导入common和core源码,另导入common-lib下的jar包,删除jeecms-cms-identity-3.0.2-final.jar,jeecms-common-3.0.2-final.jar,jeecms-core-identity-3.0.2-final.jar这三个jar包,切记:务必进行buildpath 3.修改jdbc链接,自己导入数据库。 4.把服务器下installconfig下的web.xml复制出来覆盖掉新建项目WEB-INF下的web.xml 5.classes下有四个文件,手动烤到myeclipse项目src根目录下中 6.将服务器上jeecms项目删掉,发布新建的jeecms项目。 首页的加载过程: 在浏览器中输入http:/localhost:8080/jeecms,回车 首先进入配置文件web.xml, contextConfigLocation /WEB-INF/config/application-context.xml /WEB-INF/config/cache-context.xml /WEB-INF/config/captcha-context.xml /WEB-INF/config/jeecore-context.xml /WEB-INF/config/jeecms-context.xml 应用范围内的初始化参数 其中jeecms-context.xml是对标签的初始化 index.html index.shtml index.jhtml 通过以上标签找到应该加载哪一个页面 JeeCmsFront org.springframework.web.servlet.DispatcherServlet contextConfigLocation /WEB-INF/config/jeecms-servlet-front.xml 2 JeeCmsFront *.jhtml JeeCmsFront *.jspx JeeCmsFront *.jsp JeeCmsFront *.htm 通过servlet配置,可以找到jeecms-servlet-front.xml,在此配置文件的最后有 代码 找到jeecms-servlet-front-action.xml,在此配置文件中有 可以找到类DynamicPageAct,此类是首页模板。 在类DynamicPageAct中有 publicstaticfinalStringTPL_INDEX=tpl.index; 找到WEB-INFlanguagesjeecms_front下messages_zh_CN.properties配置文件,可以找到对应的首页面 tpl.index=首页(工程中的首页.html文件) 标签的配置流程,以cms_content_list为例 首先,每一个标签的声明都是在jeecms-context.xml中进行的, (声明标签对应的类) 此外,在配置文件jeecms-servlet-front.xml中,还有一段对标签的配置 类ContentListDirective继承自AbstractContentDirective,最主要的是execute方法 publicclassContentListDirectiveextendsAbstractContentDirective /* *模板名称 */ publicstaticfinalStringTPL_NAME=content_list; /* *输入参数,文章ID。允许多个文章ID,用,分开。排斥其他所有筛选参数。 */ publicstaticfinalStringPARAM_IDS=ids; SuppressWarnings(unchecked) publicvoidexecute(Environmentenv,Mapparams,TemplateModelloopVars, TemplateDirectiveBodybody)throwsTemplateException,IOException /获取站点 CmsSitesite=FrontUtils.getSite(env); /获取内容列表,可以通过此处进行更改,获取自己数据库中的数据 Listlist=getList(params,env); MapparamWrap=newHashMap( params); /OUT_LIST值为tag_list,在类DirectiveUtils中声明,将内容列表放入其中 paramWrap.put(OUT_LIST,DEFAULT_WRAPPER.wrap(list); /将params的值复制到variable中 MaporigMap=DirectiveUtils .addParamsToVariable(env,paramWrap); /获取的是参数PARAM_TPL,是否调用模板以及调用的模板类型 InvokeTypetype=DirectiveUtils.getInvokeType(params); /获取传入参数,列表样式,根据不同的参数获取不同的样式列表 StringlistStyle=DirectiveUtils.getString(PARAM_STYLE_LIST,params); if(InvokeType.sysDefined=type) if(StringUtils.isBlank(listStyle) thrownewParamsRequiredException(PARAM_STYLE_LIST); /列表样式模板 env.include(TPL_STYLE_LIST+listStyle+TPL_SUFFIX,UTF8,true); elseif(InvokeType.userDefined=type) if(StringUtils.isBlank(listStyle) thrownewParamsRequiredException(PARAM_STYLE_LIST); /列表样式模板路径WEB-INFtcms_sys_definedstyle_liststyle_2-1.html FrontUtils.includeTpl(TPL_STYLE_LIST,site,env); elseif(InvokeType.custom=type) /这个模板就是自己声明的,即content_list.html,如果采用自定义模板的话,页面中可以只写上标签,并添加上标签内需要的几个参数,不需要写标签体的内容,会去自动调用模板中的标签体。 FrontUtils.includeTpl(TPL_NAME,site,params,env); elseif(InvokeType.body=type) body.render(env.getOut(); else thrownewRuntimeException(invoketypenothandled:+type); /将variable中的params值移除 DirectiveUtils.removeParamsFromVariable(env,paramWrap,origMap); SuppressWarnings(unchecked) protectedListgetList(Mapparams, Environmentenv)throwsTemplateException Integerids=DirectiveUtils.getIntArray(PARAM_IDS,params); if(ids!=null) /根据内容ID数组获取文章列表 returncontentMng.getListByIdsForTag(ids,getOrderBy(params); else return(List)super.getData(params,env); Override protectedbooleanisPage() returnfalse; Content_list.html中的内容 #listtag_listasa $a.title /#list 就是简单的将tag_list中的内容,即“paramWrap.put(OUT_LIST,DEFAULT_WRAPPER.wrap(list);”中放入的数据遍历出来 style_2-1.html中的内容主要是对图文列表或标题列表向上滚动的样式的,其中包含两个同样为样式的文件 style_2-1_core.html(图文列表或标题列表向上滚动)和style_1-1_core.html(图文列表或标题列表向上滚动),在此就不做赘述了。 Jeecms是基于Spring注解,在自定义标签时对于实体类和daoservice等注意注解的问题。 下面是我自己定义的标签mycontent_list的实现过程 首先,在数据库里创建了一个jc_mycontent的表,其中有id,title,content三个字段 其次,创建了一个实体类 publicclassMyContent privatestaticfinallongserialVersionUID=1L; privateIntegerid; privateStringtitle; privateStringcontent; publicMyContent() super(); getset方法 接下来是配置hibernate中jc_mycontent表的配置文件 false 与数据库交互的持久层接口 publicinterfaceMyContentDao publicListgetList(); 持久层实现类 Repository/持久层 publicclassMyContentDaoImplextendsHibernateBaseDao implementsMyContentDao SuppressWarnings(unchecked) publicListgetList() returnfind(byNothing(); privateFinderbyNothing() Finderf=Finder.create(); f.append(fromMyContent);/可以在此处添加查询条件或者添加各种方法进行动态查询 f.setCacheable(true); returnf; Override protectedClassgetEntityClass() returnMyContent.class; 业务层接口 publicinterfaceMyContentMng publicListgetList(); 业务层实现类 Service/业务层 Transactional publicclassMyContentMngImplimplementsMyContentMng Transactional(readOnly=true)/配置事务为只读 publicListgetList() returnmyContentDao.getList(); privateMyContentDaomyContentDao; Autowired/自动绑定 publicvoidsetMyContentDao(MyContentDaomyContentDao) this.myContentDao=myContentDao; privateListlistenerList; Autowired publicvoidsetListenerList(ListlistenerList) this.listenerList=listenerList; 标签类的抽象类,最主要的就是getData这个方法,以及绑定业务层,其中可以添加多种查询方法。可参考类AbstractContentDirective publicabstractclassAbstractMyContentDirectiveimplements TemplateDirectiveModel protectedObjectgetData(Mapparams,Environmentenv) throwsTemplateException returnmyContentMng.getList(); Autowired protectedMyContentMngmyContentMng; 自定义标签中最重要的类继承上边的抽象类 publicclassMyContentListDirectiveextendsAbstractMyContentDirective /* *模板名称 */ publicstaticfinalStringTPL_NAME=mycontent_list; SuppressWarnings(unchecked) publicvoidexecute(Environmentenv,Mapparams,TemplateModelloopVars, TemplateDirectiveBodybody)throwsTemplateException,IOException /获取站点 CmsSitesite=FrontUtils.getSite(env); /获取内容列表 Listlist=getList(params,env); MapparamWrap=newHashMap(params); /OUT_LIST值为t

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论