JeeSite是一个 永久开源的企业信息管理系统 基础框架。主要定位于“企业信息管理”领域,可用作企业信息管理类系统、网站后台管理类系统等。JeeSite是非常强调开发的高效性、健壮性和安全性的。
JeeSite是轻量级的,简单易学,本框架以Spring Framework为核心、Spring MVC作为模型视图控制器、Spring Data JPA + Hibernate作为数据库操作层,此组合是Java界业内最经典、最优的搭配组合。前端界面风格采用了结构简单、性能优良、页面精致的Twitter Bootstrap作为前端展示框架。
JeeSite 已内置 一系列企业信息管理系统的基础功能,目前包括两大模块,系统管理(SYS)模块和内容管理(CMS)模块。系统管理模块,包括企业组织架构(用户管理、部门管理、区域管理)、菜单管理、角色权限管理、字典管理等功能;内容管理模块,包括内容管理(文章、链接),栏目管理、站点管理、公共留言、文件管理、前端网站展示等功能。
JeeSite提供了常用工具进行封装,包括日志工具、缓存工具、服务器端验证、数据字典、当前组织机构数据(用户、区域、部门)以及其它常用小工具等。另外还提供一个基于本基础框架的代码生成器 ,为你生成基本模块代码,如果你使用了JeeSite基础框架,就可以很快速开发出优秀的信息管理系统。
===========开发环境搭建=================
我的开发环境是:MyEclipse8.x + Tomcat6.0.36 + MySQL5.2.x
JeeSite源码:http://126.am/9fzur4
部署手册:
先请按照JeeSite开发手册部署项目,部署之后你会发现,运行Tomcat时报错:
就是这个问题解决了好久都找不到原因,多方网上查资料和开发群帮助,发现时Jar包冲突和缺失的问题!!!
正确的Jar包数量是95个,列表如下:(这个Jar包列表已经共享在开发群里面lib.rar了!)
可以的话,再调整你的项目部署。
=======================介绍和资料见下面说明==================
为何选择1、Services相关
- Core Framework:Spring Framework 3.2。
- Security Framework:Apache Shiro 1.2。
2、Web相关
- MVC Framework:SpringMVC 3.2。
- Layout Decoration:SiteMesh 2.4。
- JavaScript Library:JQuery 1.9。
- CSS Framework:Twitter Bootstrap 2.0.4。
- JavaScript/CSS Compressor:YUI Compressor 2.4。
- Front Validation:JQuery Validation Plugin 1.11。
3、Database相关
- ORM Framework:Spring-Data-JPA 1.3、Hibernate 4.1。
- Connection Pool:BoneCP 0.7
- Bean Validation:Hibernate Validation 4.3.0。
- Cache:Ehcache 2.6。
4、Tools 相关
- Commons:Apache Commons
- JSON Mapper:Jackson 2.1
- Bean Mapper:Dozer 5.3.2
- Full-text search:Hibernate Search 4.2(Apache Lucene 3.6)、IK Analyzer 2012_u6中文分词
- Log Manager:Log4j 1.2
- JeeSite介绍演示.docx
- JeeSite开发手册.docx
事件对象
在触发DOM上的某个事件时,会产生一个事件对象event,这个对象中包含着所有与事件有关的信息。包括导致事件的元素、事件的类型,以及其他与特定事件相关的信息。例如,鼠标操作导致的事件对象中,会包含鼠标位置的信息,而键盘操作导致的事件对象中,会包含与按下的键有关的信息。所有浏览器对象都支持event对象,但支持方式不同。
DOM中的事件对象
兼容DOM的浏览器会将一个event对象传入到事件处理程序中。无论指定事件处理程序时使用什么方法(DOM0级或DOM2级),都会传入event对象。来看下面的例子
btn.onclick = function(event){
alert(event.type); //"click"
};
btn.addEventListener("click",function(event){
alert(event.type); //"click"
},false);
这两个例子中的两个事件处理程序都会弹出一个警告框,显示由event.type属性表示的事件类型。这个属性始终都会包含被触发的事件类型。
在通过HTML特性指定事件处理程序时,变量event中保存着event对象。请看下面的例子:
Event对象包含与创建它的特定事件有关的属性和方法。触发的事件类型不一样,可用的属性和方法也不一样。不过,所有事件都会有下表列出的成员。
属性/方法
类型
读/写
说明
bubbles
Boolean
只读
表明事件是否冒泡
cancelable
Boolean
只读
表明是否可以取消事件的默认行为
currentTarget
Element
只读
其事件处理程序当前正在处理事件的那个元素
Detail
Integer
只读
与事件相关的细节信息
eventPhase
Integer
只读
调用事件处理程序的阶段:1表示捕获阶段,2表示“处于目标”,3表示冒泡阶段
preventDefault()
Function
只读
取消事件的默认行为。如果cancelable是true,则可以使用这个方法
stopPropagation()
Fucntion
只读
取消事件的进一步捕获或冒泡。如果bubbles为true,则可以使用这个方法
target
Element
只读
事件的目标
type
String
只读
被触发的事件的类型
View
AbstractView
只读
与事件关联的抽象视图。等同于发生事件的window对象
在事件处理程序内部,对象this始终等于currentTarget的值,而target则只包含事件的实际目标。如果直接将事件处理程序制定为了目标元素,则this、currentTarget和target包含相同的值。来看下面的例子:
btn.onclick = function(event){
alert(event.currentTarget === this); // true
alert(event.target === this) //true
};
这个例子检测了currentTarget和target与this的值。由于click事件的目标就是按钮,因此这三个值是相等的。如果事件处理程序存在于按钮的父节点中,那么这些值是不同的。
alert(event.currentTarget === document.body); //true
function hasPlugin( ga ){ var ga = ga.toLowerCase(); for( var i = 0; i < navigator.plugins.length; i++ ){ if( navigator.plugins[i].name.toLowerCase().indexOf( ga ) > -1 ){ return true; } } return false; } function hasIEPlugin( ga ){ try{ new ActiveXObject( ga ); return true; }catch( e ){ return false; // 跳过 } } function hasFlash( flash ){ var result = hasPlugin( flash ); if( !result ){ // 判断是否为ie浏览器 result = hasIEPlugin( "ShockwaveFlash.ShockwaveFlash" ) } return result; } alert(hasFlash("Flash")); // 判断否是有flash插件