首页 > 编程学习 > Nutz开发日志
201311 月26

Nutz开发日志

计划基于Nutz开发一套全新的系统管理-权限框架。界面演示:/?p=2586 之前尝试Nutz做过一个demo,但有很多不足,比如没有做防SQL注入、不能兼容多数据库、列表没有实现Ajax等。

基于多年来开发过程接触的各式各样的框架,想整一套开发方便UI简洁的框架,要求有如下功能: 1.开发简便、框架结构清晰 2.性能优越、兼容主流数据库、兼容各版本浏览器 3.UI简洁、开发简单、主流JS插件集成、全Ajax 4.集成权限框架、单点登陆、登陆日志、操作日志 5.工作流引擎、表单自定义 6.代码生成器

JS引入: jquery-1.10.2.min.js ueditor-1.2.6.1 My97Datepicker-4.8 Beta4 zDialog-2.0 ztree-3.5.15

框架引入: Nutz-1.49.r2 log4j-1.2.17 json-1.0 c3p0-0.9.1.2 classes12 mysql-connector-java-5.1.14 ojdbc14 slf4j-api-1.6.1 slf4j-log4j12-1.6.1 sqljdbc4 velocity-1.7 velocity-tools-2.0 velocity-tools-generic-2.0 velocity-tools-view-2.0 json-lib-2.4-jdk15 ezmorph-1.0.6 commons-beanutils-1.7.0 commons-chain-1.1 commons-collections-3.2 commons-digester-1.8 commons-lang-2.2 commons-logging-1.1 commons-validator-1.3.1 待更新。


在Eclipse中处理图片,需要引入两个包: import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGImageEncoder; 报错: Access restriction: The type JPEGImageEncoder is not accessible due to restriction on required library C:\Java\jre1.6.0_07\lib\rt.jar

此时解决办法: Eclipse默认把这些受访问限制的API设成了ERROR。只要把Windows-Preferences-Java-Complicer-Errors/Warnings里面的Deprecated and restricted API中的Forbidden references(access rules)选为Warning就可以编译通过。


Nutz开发说明:

您一定了解SSH,还有Strust1+Velocity框架

2013年11月30日(星期六) 晚上7:03给我写信

您一定了解 SSH ,还有 Strust1+Velocity 框架。前者配置文件实在是太多,多层架构,开发一个功能模块涉及很多类、很多关系,一方面上手非常难另外开发效率也不高。后者随着技术发展,对前端技术支持不太友好,比如 Ajax JS 框架等,需要中间跳转页面进行输出,再者也需要配置。

根据项目开发中实际遇到的各种问题,研究各种框架优缺点之后,决定选择 Nutz 国产开源框架作为基础来构建本开发框架。选择 Nutz 有如下优点:

1 URL“零”配置

您再也不用为繁琐的配置文件烦恼了, Nutz-Mvc 使用全注解的方式来封装 URL ,使用简单的 @At 在类或方法上实现 URL 映射。

2、灵活的多数据源支持

通过 Nutz.Ioc 您只要在数据库配置文件 datasource.json 中配置对象,如 dao1 dao2 ,那么在 Action 类中,

@Inject

    protected Dao dao1 ;

@Inject

protected Dao dao2 ;

即可使用 daoCtl 的方法直接操作这两个数据库。 daoCtl 里集成了常用的添加、修改、查询、分页等方法。

3、功能强大的视图

Nutz-Mvc 使用 @Ok @Fail 注解,来实现执行成功或失败后的输出,可以外部重定向、内部重定向、返回字符串、返回 JSON 等等,总之您想要什么结果就能给您返回什么,再也不用使用单独的 Action 类来封装 JSON 数据了,您想要随时都可以有。

4、功能强大的数据库操作

Nutz.Dao 封装了常用的数据库操作,减少自定义 SQL 的编写,提高开发效率和安全性,通过工具类

Cnd.where(“loginname”, “=”, user.getLoginname())

        
Sql sql = Sqls.create("DELETE FROM $table WHERE name=@name");

sql.vars().set(“table”,”t_abc”);

sql.params().set(“name”,”Peter”);

中的 sql.params().set() 方法,可以有效的防止 SQL 注入。

更多使用方法请参考本目录下的 nutz 开发手册。

5 Velocity

对于大家常用的 Velocity 模板语言,本框架也进行了整合。

req.setAttribute(“menulist”, menulist);

将对象输出到页面,在页面上即可直接使用模板语言输出。

 

UI 表现层上面,本次框架也进行了调整,原则上支持纯 Ajax 开发。后台集成 jQuery EasyUI zDialog EasyUI.DataGrid ztree My97DatePicker JS 组件。

1、兼容主流浏览器

您再也不用考虑浏览器兼容性问题,只要您的 JS 全部使用 jQuery 来编写,那么还用担心什么呢,本框架目前在 IE6/IE7/IE8/IE9/IE10/IE11 Chrome FrieFox 360 测试通过。

2 zDialog的使用更加简便

通过使用 Ajax 以及对 zDialog 的优化,您再也不需要写中间页面进行页面跳转了。您可以在弹出框的父页面进行弹出表单的提交,在父页面写弹出框按钮的事件。

通过 $DW.$(“#form1”).serialize();  获取弹出窗口表单内容

         $DW.$Z(“name”).focus();     操作弹出框内容,赋值等

         $D.close();                                   关闭弹出窗口

让我们看一个完成的示例:

function addSave(){ 

if($DW.Verify.hasError()){

return;

}

jQuery.ajax({

type: ‘POST’,

url : “/private/sys/unit/addSave” ,

data : $DW.$(“#form1”).serialize(),

success : function (res) {

if(res!=””){

$D.close();

Dialog.alert(“ 添加成功! “);

initTree();

view(res);

}else{

Dialog.alert(“ 添加失败! “);

}

return false;

},

fail : function(res) {

Dialog.alert(“ 系统错误 ?!”);

}

});

}

3 Ajax分页支持

集成 jQuery.Easyui.DataGrid ,从后台封装的 JSON 数据格式,到前台展示,分页查询从来没有如此简便过。

daoCtl.getListPageJson() 封装了 easyui.datagrid 分页所需格式数据,更不用您手动写烦人的 JSON 了。

4、权限控制到按钮

您只需要在 JS 中使用

               Page.initBtn();

$!initBtn

即可控制页面按钮是否可用,当然,在此之前,您需要在资源菜单管理中添加按钮 ID ,在角色管理中对用户分配按钮权限。

 

 

本文地址:https://wizzer.cn/archives/2793 , 转载请保留.

本文目前尚无任何评论.

发表评论