AppFrameWork工程总结报告
基础管理
基础管理包含了配置管理和权限管理。
两大模块。这两大模有是工程的数据基础模块。
配置管理包含了系统的操作记录。权限管理包含了用户、组织、角色、
权限的信息
截图:
1.1权限管理
应用管理
1 AppAction 类
方法:String findApp()
1.1.1获取基础数据列表
List<TApplication> tAppList = this.appService.findAppList(tApplication, loginUserName, roleTypeId, start, limit) |
分页查找所有应用。
应用查找涉及到的是根据用户信息和应用类、用户表来查找用户所拥有的应用。
根据用户角色类型的不同使用不同的查询语句。
如果用户是管理员,采取直接TApplication类直接查找
如果一般用用户,根据用户信息表和TApplication应用类查找。
这两个地方都需要注意有效性。
在分页查找数据之后,查找分页后的总数据
int totalCount = this.appService.findAppCount(tApplication, loginUserName, roleTypeId); |
注意在查找数据的时候使用降序的方法。这样有在获取总数据的时候直接使用
length = Integer.parseInt(list.get(0).toString()); |
方法就能获取总数据
这里注意使用的效率问题。
2.1.1 方法String saveApp() 包含新增、修改应用
保存
public String saveApp(TApplication application,TUser loginUser) |
通过分别使用:应用编码、应用名称来分别查询两个名称是否在系统中重复存在。
保存应用需要通过依次保存应用类、组织类、角色类、用户信息类。
这里的执行流程是:
因为由用户或者管理员来添加。
这样这个管理员就存在了他所拥有的单独的应用管理。这个用户就对应的组织
和角色、用户信息类。
修改应用(停止应用使用):
组织管理
根据罢了组织的id获取组织模块同时要获取父类组织模块。
其次在一次通过Ext特定的方式组装数据(其实这里组装数据都跟
Servlet 发送的到前台的组装数据一样,只是格式有所不同)。
Ext 技术总结:
1、常用技术:
1.1.1 获取id元素方式
Ext.getCmp(id);
1.1.2 icon 图片元素
baseCls:’x-plain’
1.1.3 xtype 有多少种
xtype: label
1.1.4 c.sf有多少种
Cls: key 密码输入框
Cls:user 用户输入框
Cls;folder 多使用于模块的转现。
1.1.5 提示信息方式
Ext.MessageBox.INFO这个方式可以使用于icon=Ext.MessageBox.INFO
Ext.MesageBox.show({
Title:title,
Msg:msg;
Button:Ext.messageBox.OK;
Icon:icon;
Fn:fn
});
实例:
闭包:
闭包的作用:第一保持安全性
保持变量的独立性
比如:
function a(){
var i=0;
function b(){
alert(++i);
}
return b;
}
var c = a();
c();
这样的话 b方法需要a执行的情况下才能执行。
官方说:“官方”的解释是:所谓“闭包”,指的是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。
而上面的代码是:
这段代码有两个特点:
1、函数b嵌套在函数a内部;
2、函数a返回函数b。
这样在执行完var c=a()后,变量c实际上是指向了函数b,再执行c()后就会弹出一个窗口显示i的值(第一次为1)。这段代码其实就创建了一个闭包,为什么?因为函数a外的变量c引用了函数a内的函数b,就是说:
当函数a的内部函数b被函数a外的一个变量引用的时候
垃圾回收机制:
function menuLink(url, menu_id, menu_name) {
var id = url + menu_id, _tab = Ext.getCmp('tabpanel');
if (!_tab.getComponent(id)) {
_tab.add({
id : id,
iconCls : 'tabs',
title : menu_name,
closable : true,
layout : 'fit',
border : false,
autoDestroy : true,
destroy : function() {
if (this.fireEvent("destroy", this) != false) {
this.el.remove();
_tab = null;
if (Ext.isIE) {
if (typeof window.CollectGarbage != "undefined") {
window.CollectGarbage();
/**这种垃圾回收只适用于ie**/
}
}
}
},
html : '<iframe scrolling="auto" frameborder="0" width="100%" height="100%" src='
+ webPathDir + '/' + url + '></iframe>'
});
}
_tab.setActiveTab(id);
}
Request、reponset
Location.replace.(“action路径绝对路径”);
SSH 在DAO 层中使用的Hibernate的方法
getHibernateTemplate
getHiberateTemplae().find(queryString,new Object[]{activeFlag,code})
这种方法是因为 在使用QHL中使用了
比如:
From 表名 b where b.列名= ? And .b.列名 =?
From 表名 b where b.列名:activeFlag and b.code:code
由AppFramework项目引用出来的oralce 操作方法
select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') from dual
"select to_char(sysdate,'YYYY-MM-DD') from dual";
这两句话是获取系统的时间 上面是24小时制 下面是12小时制
Struts2 配置文件
这里的框架是SSH +EXT+JSON而在这里的struts2 中的配置
Result type在使用InputStream返回到前台的时候
Type= “stream”
实例:
工程的夹包: