jeecms 的体验

在ITEYE上看到很多JEECMS的帖子, 于是自己下载下来, 体验了一下。

 

JEECMS采用hibernate3+spring mvc+spring3+freemarker技术架构。

 

JEECMS的自定义模型吸引我了, 所谓自定义模型, 是能定义栏目或者内容的字段。界面如下

 

 


jeecms 的体验
 

 

自己定义了栏目内容的模型, 然后看了一下数据库,

MariaDB [jeecms]> show table
+------------------------+
| Tables_in_jeecms       |
+------------------------+
| jc_acquisition         |
| jc_acquisition_history |
| jc_acquisition_temp    |
| jc_advertising         |
| jc_advertising_attr    |
| jc_advertising_space   |
| jc_channel             |
| jc_channel_attr        |
| jc_channel_ext         |
| jc_channel_model       |
| jc_channel_txt         |
| jc_channel_user        |
| jc_chnl_group_contri   |
| jc_chnl_group_view     |
| jc_comment             |
| jc_comment_ext         |
| jc_config              |
| jc_config_attr         |
| jc_content             |
| jc_content_attachment  |
| jc_content_attr        |
| jc_content_channel     |
| jc_content_check       |
| jc_content_count       |
| jc_content_ext         |
| jc_content_group_view  |
| jc_content_picture     |
| jc_content_tag         |
| jc_content_topic       |
| jc_content_txt         |
| jc_content_type        |
| jc_contenttag          |
| jc_dictionary          |

 

MariaDB [jeecms]> desc jc_content_attr;
+------------+--------------+------+-----+---------+-------+
| Field      | Type         | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+-------+
| content_id | int(11)      | NO   | MUL | NULL    |       |
| attr_name  | varchar(30)  | NO   |     | NULL    |       |
| attr_value | varchar(255) | YES  |     | NULL    |       |
+------------+--------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

 

自定义的字段都是存在  jc_content_attr 表当中,第一感觉jc_content_attr这个表会有性能问题,

虽然之后搜内容时, 会用lucence index, 但在hibernate显示页面都会查询这个表。
有些东西看似做的灵活, 内容一多,会存在性能问题。
 
接着看了一下动态页执行的controller
 
DynamicPageAct

	/**
	 * 动态页入口
	 */
	@RequestMapping(value = "/**/*.*", method = RequestMethod.GET)
	public String dynamic(HttpServletRequest request,
			HttpServletResponse response, ModelMap model) {
		// 尽量不要携带太多参数,多使用标签获取数据。
		// 目前已知的需要携带翻页信息。
		// 获得页号和翻页信息吧。
		int pageNo = URLHelper.getPageNo(request);
		String[] params = URLHelper.getParams(request);
		PageInfo info = URLHelper.getPageInfo(request);
		String[] paths = URLHelper.getPaths(request);
		int len = paths.length;
		if (len == 1) {
			// 单页
			return channel(paths[0], pageNo, params, info, request, response,
					model);
		} else if (len == 2) {
			if (paths[1].equals(INDEX)) {
				// 栏目页
				return channel(paths[0], pageNo, params, info, request,
						response, model);
			} else {
				// 内容页
				try {
					Integer id = Integer.parseInt(paths[1]);
					return content(id, pageNo, params, info, request, response,
							model);
				} catch (NumberFormatException e) {
					log.debug("Content id must String: {}", paths[1]);
					return FrontUtils.pageNotFound(request, response, model);
				}
			}
		} else {
			log.debug("Illegal path length: {}, paths: {}", len, paths);
			return FrontUtils.pageNotFound(request, response, model);
		}
	}
 
如果是栏目页就一定有index 字符, 就像http://localhost:8080/news/index.htm
现在CMS设计一般都会隐藏index.html, 还不如用urlrewrite 这样的开源JAR包重写一下。
看到这2个问题,  考虑是否真正用它来实现自己的系统, 或者重构一下, 有些东西还不如自己写一下。

你可能感兴趣的:(jeecms)