一.采用技术:mvc3,spring,hibernate
前台脚本jQuery LigerUI 参考http://www.ligerui.com/
后台核心技术参考:mvc3,spring,hibernate
http://www.cnblogs.com/goodhelper/archive/2009/11/20/springnet_index.html
拦截器,异常的统一处理:
http://www.cnblogs.com/legendxian/archive/2010/01/25/1655551.html
二.现在解决方案的项目说明:
QzgfFrame.MVC3是web主项目
QzgfFrame.MVC3.Tests项目测试
QzgfFrame.System(系统管理模块):以后按功能模板划分框架,QzgfFrame.Archives为档案管理模块
QzgfFrame.Utility核心工具类
QzgfFrame.Controllers 所有功能模块的控制器集中(避免类库重复依赖问题)
三.关键文件说明:
1.web.config中databaseSettings结点为数据库配置连接字符串,hbmSettings结点为模型.hbm.xml加载配置.
2. 其它资源文件说明
<resource uri="~/Config/application.xml" /> spring的核心配置,每次版提交,不要提交该文件,里有连接数据源等信息,mssql,mysql,oracle.
<resource uri="~/Config/application-respository.xml" />操作数据库基类的配置respository,对应模型中的Models
<resource uri="~/Config/application-domian.xml" />主要业务逻辑的功能实现对应模型中的Domain
<resource uri="~/Config/application-control.xml" />主要控制器的相关配置对应模型中的Controllers
<resource uri="~/Config/views.xml" />配置Grid表格数据主键
<resource uri="~/Config/application-aop.xml" />spring aop拦截器
<resource uri="~/Config/application-scheduling.xml" />spring scheduling定时器功能
<resource uri="~/Config/application-ws.xml" />spring webservices服务
============以下配置文件未启用,仅作为配置参考================
<resource uri="~/Config/hibernate.cfg.xml" />hibernate.cfg.xml
<resource uri="~/Config/log4net.xml" />log4net.xml
3.视图相关(Views框架暂不完善只能进行分块处理)
在"QzgfFrame.MVC3"项目中Views为Home首页框架设计存放路径
Areas为具体功能模块视图存放的位置,如系统管理可增加areas为System,档案管理则为Archives.
4.页面脚本相关
Content/Lib为项目要使用的脚本,可以根据需求增加相关脚本代码
Lib/为核心脚本库,请不要随意修改.
5.业务代码框架,以系统管理中菜单管理为例
在QzgfFrame.System中增加功能模块菜单管理MenuManger.
Domain业务处理(包括接口与实现)
Models:model类与hbm.xml文件
6核心代码工具类库QzgfFrame.Utility
现在已经整理代码存放在Core中,其他暂未整合.
7核心控制器结构
在"QzgfFrame.Controllers"项目中
CommonSupport为基本支持类包括过滤器等.
文件结构划分:系统模块-->功能模块-->Controller类
8.BaseController中增加currentUser类存储用户信息和权限,继承该类会包函权限过滤。
以菜单为例,在application-control.xml中修改为
<!--菜单-->
<object id="menuController"
parent="baseController" type="QzgfFrame.Controllers.System.MenuManger.MenuController, QzgfFrame.Controllers" singleton="false">
<property name="menuFacade" ref="menuFacade"/>
<property name="menuFacadeEx" ref="menuFacadeEx"/>
</object>
9.菜单管理中(以下括号内的为actionName包函字符),
“退网”(netout),“导入”(import),“停用”(usestop),“启用”(usestart),“修改”(modify),“删除”(delete),“增加”(add),“列表”(index)等按钮以位形式存储无需单独立写入菜表中。
10.为区分“修改”,”增加“将原来结构“控制器”中的AcceptVerbs(HttpVerbs.Get)Edit方法拆分为[AcceptVerbs(HttpVerbs.Get)]add,[AcceptVerbs(HttpVerbs.Get)]Modify
11.按钮事件脚本
function f_btnClick(item) {
switch (item.id) {
case "add":
f_add();
break;
case "modify":
f_modify();
break;
case "delete":
f_delete();
break;
case "usestart":
f_usestate("1");
break;
case "usestop":
f_usestate("2");
break;
default:
$.ligerDialog.alert('暂未实现!');
break;
}
}
初始化数据信息
====================菜单数据==================
INSERT INTO system_menu VALUES ('0', 'Root', ' ', '', '1', '-1', '1', null);
INSERT INTO system_menu VALUES ('2', '菜单管理', ' ', '/system/menu/index', '3', '4', '1', null);
INSERT INTO system_menu VALUES ('20111101155107838655', '用户管理', ' ', '/system/user/index', '2', '4', '1', null);
INSERT INTO system_menu VALUES ('20111101155132986948', '机构管理', ' ', '/system/department/index', '1', '4', '1', '/system/department/index');
INSERT INTO system_menu VALUES ('4', '系统管理', ' ', null, '9999', '0', '1', null);
INSERT INTO system_menu VALUES ('5', '角色管理', ' ', '/system/role/index', '5', '4', '1', null);
INSERT INTO system_menu VALUES ('6', '菜单字段', ' ', '/system/menufield/index', '4', '4', '1', null);
INSERT INTO system_menu VALUES ('b1', '增加', ' /Lib/ligerUI/skins/icons/add.gif', 'add', '2', '5', '0', null);
INSERT INTO system_menu VALUES ('b2', '删除', '/Lib/ligerUI/skins/icons/delete.gif', 'delete', '4', '5', '0', null);
INSERT INTO `system_menu` VALUES ('b3', '修改', ' /Lib/ligerUI/skins/icons/modify.gif', 'modify', '8', '5', '0', null);
INSERT INTO `system_menu` VALUES ('b4', '启用', '/Lib/ligerUI/skins/icons/delete.gif', 'usestart', '16', '5', '0', null);
INSERT INTO `system_menu` VALUES ('b5', '停用', '/Lib/ligerUI/skins/icons/delete.gif', 'usestop', '32', '5', '0', null);
====================系统用户=======
insert into system_user values ('1','admin','','','21232F297A57A5A743894AE4A801FC3','1','','1',sysdate,'1');
============================部门菜单================
INSERT INTO system_department VALUES ('0', 'Root', 'Root', 'Root', 'Root', '-1', 'Root', '1', '',sysdate);
drop table System_User cascade constraints;
/*==============================================================*/
/* Table: System_User
*/
/*==============================================================*/
create table System_User (
id CHAR(20)
not null,
username NVARCHAR2(100),
tel NVARCHAR2(50),
email NVARCHAR2(100),
password NVARCHAR2(100),
departmentid CHAR(20),
remark NVARCHAR2(200),
createman CHAR(20),
createdate TIMESTAMP,
state CHAR(2),
constraint PK_SYSTEM_USER primary key (id)
);
comment on column System_User.id is
'主键';
comment on column System_User.username is
'用户名';
comment on column System_User.tel is
'电话';
comment on column System_User.email is
'邮箱';
comment on column System_User.password is
'密码';
comment on column System_User.departmentid is
'部门id';
comment on column System_User.remark is
'备注';
comment on column System_User.createman is
'创建人编号';
comment on column System_User.createdate is
'创建时间';
comment on column System_User.state is
'0:删除,1:正常,2.停用';