jeecmd二次开发文档

更新时间:2023-09-14 07:02:01 阅读量: 初中教育 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

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包,切记:务必进行build path 3.修改jdbc链接,自己导入数据库。

4.把服务器下install\\config下的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,在此配置文件的最后有

public static final String TPL_INDEX = \

找到WEB-INF\\languages\\jeecms_front下messages_zh_CN.properties配置文件,可以找到对应的首页面

tpl.index=首页(工程中的首页.html文件)

标签的配置流程,以cms_content_list为例

首先,每一个标签的声明都是在jeecms-context.xml中进行的,

xsi:schemaLocation=\a/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd\default-lazy-init=\ ……

……

此外,在配置文件jeecms-servlet-front.xml中,还有一段对标签的配置

……

……

类ContentListDirective继承自AbstractContentDirective,最主要的是execute方法 public class ContentListDirective extends AbstractContentDirective { /** * 模板名称 */

public static final String TPL_NAME = \ /**

* 输入参数,文章ID。允许多个文章ID,用\分开。排斥其他所有筛选参数。 */

public static final String PARAM_IDS = \

@SuppressWarnings(\

public void execute(Environment env, Map params, TemplateModel[] loopVars, TemplateDirectiveBody body) throws TemplateException, IOException { //获取站点

CmsSite site = FrontUtils.getSite(env);

//获取内容列表,可以通过此处进行更改,获取自己数据库中的数据 List list = getList(params, env);

Map paramWrap = new HashMap( params);

//OUT_LIST值为tag_list,在类DirectiveUtils中声明,将内容列表放入其中 paramWrap.put(OUT_LIST, DEFAULT_WRAPPER.wrap(list)); //将params的值复制到variable中

Map origMap = DirectiveUtils .addParamsToVariable(env, paramWrap);

//获取的是参数PARAM_TPL,是否调用模板以及调用的模板类型 InvokeType type = DirectiveUtils.getInvokeType(params); //获取传入参数,列表样式,根据不同的参数获取不同的样式列表

String listStyle = DirectiveUtils.getString(PARAM_STYLE_LIST, params); if (InvokeType.sysDefined == type) { if (StringUtils.isBlank(listStyle)) {

throw new ParamsRequiredException(PARAM_STYLE_LIST); }

//列表样式模板

env.include(TPL_STYLE_LIST + listStyle + TPL_SUFFIX, UTF8, true); } else if (InvokeType.userDefined == type) { if (StringUtils.isBlank(listStyle)) {

throw new ParamsRequiredException(PARAM_STYLE_LIST); }

//列表样式模板路径 WEB-INF\\t\\cms_sys_defined\\style_list\\style_2-1.html FrontUtils.includeTpl(TPL_STYLE_LIST, site, env); } else if (InvokeType.custom == type) {

//这个模板就是自己声明的,即content_list.html,如果采用自定义模板的话,页面中可以只写上标签,并添加上标签内需要的几个参数,不需要写标签体的内容,会去自动调用模板中的标签体。 FrontUtils.includeTpl(TPL_NAME, site, params, env); } else if (InvokeType.body == type) { body.render(env.getOut()); } else {

throw new RuntimeException(\ }

//将variable中的params值移除

DirectiveUtils.removeParamsFromVariable(env, paramWrap, origMap); }

@SuppressWarnings(\

protected List getList(Map params, Environment env) throws TemplateException {

Integer[] ids = DirectiveUtils.getIntArray(PARAM_IDS, params); if (ids != null) {

//根据内容ID数组获取文章列表

return contentMng.getListByIdsForTag(ids, getOrderBy(params)); } else {

return (List) super.getData(params, env); } }

@Override

protected boolean isPage() { return false; } }

本文来源:https://www.bwwdw.com/article/ycfh.html

Top