`
wangdongfang1016
  • 浏览: 5840 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Nutz中那些好用的工具类

    博客分类:
  • nutz
 
阅读更多
  Nutz 是国产的精品开源框架,它全无依赖,只以1兆多的身材,就可以实现SSH全部功能的90%以上。内容主要涵盖了:Ioc、Aop、MVC、Dao、Json等WEB开发的方方面面。 
  它不仅轻巧,而且稳定高效。在大并发下,性能完全可以与spring mvc比肩。我的很多线上项目都已经开始用它,表现很不错哦。 
  另外,框架的主要开发者学过UE(User Experience),框架中大量应用着设计模式和巧妙的设计,每个可能的地方都预埋了扩展点,开发人员在框架的使用上会非常的舒服。 谁说国产框架没有精品啦?!推荐大家赶快脱离SSH的魔爪,投入Nutz的怀抱吧。 

  Nutz除了基本的功能以外,其实还提供了很多非常实用的工具类。这些类虽然没有在官方的文档中体现,但却可以大幅度的减少你的代码行数哦。今天我就给大家来介绍一下:

一、Http 类

  Java应用常常有这样的需求,抓取一个网页的内容,模拟浏览器对某个链接发起GET或PUT请求。
  怎么办?
  当然可以引用Apache HttpClient库,HttpClient对这些需求做了很好的封装。
  但问题是,我们需要的只是一个很简单的功能,需要引入笨重的HttpClient吗?而且HttpClient为的解决各种各样的问题,做了很复杂的封装,非常难用呐。
  如果你用Nutz那这个问题就很简单了。抓网页内容只需这样:

1 Response resp = Http.get("http://www.baidu.com");
2 if (resp.isOK()) {
3     System.out.println(resp.getContent());
4 }
  发起API调用只需:
1 Map<String, Object> params = new HashMap<String, Object>();
2 params.put("name", "root");
3 params.put("pwd", "123456");
4 int timeout = 60 * 1000; // 单位毫秒
5 String apiRet = Http.post("http://api.xxx.com/login", params, timeout);
6 System.out.println(apiRet);
  简单吧!其实Nutz的http包可实现的功能不只这些,另如以下功能也可以手到擒来: 
  • 使用代理
  • 定制http Header、Cookie
  • 文件上传
  • 设置请求超时时间
  更多内容可自行探索 org.nutz.http 包。

 

二、Tasks 类

  很多时候我们都需要定时任务的帮助。例如定时更新数据库,定时刷新缓存,当发生错误后延时重试……
  怎么办?
  当然可以引用quartz,建一个job,创建一个SchedulerFactory,再绑定Trigger? 太麻烦了,我们只是想要一个简单的定时任务而已。
  其实这样的需求有了Nutz后就很简单了,
  实现一个Runnable的任务类,然后通过Tasks设置定时调用的间隔时间就行了,如:

1 Tasks.scheduleAtFixedRate(new Runnable() {
2     public void run() {
3         System.out.println("task runing...");
4     }
5 }, 10);
6 Lang.quiteSleep(60 * 1000);
  怎么样,简单吧?其实它还能做更多: 
  • 在指定的延时之后开始以固定的频率来运行任务
  • 在指定的时间点开始以固定的频率运行任务
  • 两次任务间保持固定的时间间隔
  • 返回Future做更高级的任务控制
  • 返回定时任务线程池,可做更高级的应用
  更多内容可自行探索 org.nutz.lang.Tasks 类,所有方法都有详细注释哦。 

三、Conf 加载

  每个应用都会有各种配置项,我们需要在程序启动的时候加载这些配置项进行各种操作。
  Nutz对配置项做了很好的封装,现在你读取配置文件就很easy啦。

1 PropertiesProxy property = new PropertiesProxy(“/conf/", “/db.properties”));
2 String redisIp = property.get("redis.ip");
3 Int redisPort = property.getInt("redis.port");
  注:PropertiesProxy 支持目录扫描哦,目录中的所有 *.properties 配置项全都能读到。 

  如果你的配置文件是 json 格式的也没关系,可以试试 NutConf 类。 
1 NutConf.load("/conf/");
2 System.out.println(NutConf.get("serverName"));
  注:NutConf 也支持目录扫描,会加载目录中的 *.js 文件。

四、Sockets

  如果你想写一个简单的SocketServer服务器,简单的接收用户发来的某些指令进行各种操作,那你选择Nutz就对了,它对这种简单的SocketServer做了很好的封装,你只需写几行代码就搞定了。

1 Sockets.localListenOneAndStop(9099, "reload", new SocketAction(){
2     @Override
3     public void run(SocketContext context) {
4         System.out.println("重新加载配置文件");
5         context.writeLine("success");
6     }
7 });
  简单吧,现在你只需 telnet 172.0.0.1 9090 然后输入 reload,就能重新加载项目中的配置文件了。而且原生的,它支持客户端输入 "close|stop|bye|exit" 来结束服务端的本地监听。 
  上边只是演示了添加一个动作(SocketAction),其实可以向它放入多个SocketAction来实现各种命令操作。另高级的,服务器端还能支持接收json串,实现更多的参数传入。 
  更多内容可自行探索 org.nutz.lang.socket 包。

五、NutMap

  我们知道,HashMap、HashTable、TreeMap等数据结构可以存放各种类型数据,但如存放的是非泛型数据的话,就需要进行各种类型转换。
  但如果你用 NutMap 就没有这种烦恼了,其内置了常见类型的自动转换,相信很多人会用的很爽。

01 NutMap map = new NutMap();
02 map.put("name", "bushi");
03 map.put("age", 63);
04 map.put("sex", true);
05 map.put("time", new Date());
06                
07 System.out.println(map.getString("name"));
08 System.out.println(map.getInt("age"));
09 System.out.println(map.getBoolean("sex"));
10 System.out.println(map.getTime("time"));

六、代码统计

  你可能不知道吧,Nutz中还隐藏了一个代码统计工具。它可以对程序源码进行详细的统计,可以准确的分析出程序中代码行、注释行、空白行和导入行为多少等等。
  项目快结束了,统计下项目中代码行数,可以满足下自己的虚荣心,同时也好向老板交差。
  使用方法非常简单:

1 File file = new File("E:/qinerg_github/nutz/src/");
2 CodeStatisticsResult statisticsResult = Code.countingCode(file, "java", true, null);
3 System.out.println("源码数:" + statisticsResult.getFileCount());
4 System.out.println("总行数:" + statisticsResult.getTotalLines());
5 System.out.println("代码行:" + statisticsResult.getNormalLines());
6 System.out.println("注释行:" + statisticsResult.getCommentLines());
7 System.out.println("导入行:" + statisticsResult.getImportLines());
8 System.out.println("空白行:" + statisticsResult.getWhiteLines());
  这是我checkout时nutz源码统计结果: 
  • 源码数:835
  • 总行数:74957
  • 代码行:39355
  • 注释行:20899
  • 导入行:5228
  • 空白行:9475
  代码行近4万,而注释行就有2万多,怎么样,从另一个方面说明nutz的注释率是非常高的,而且是全中文哦。推荐大家读下源码,可以学到很多东东的。
分享到:
评论

相关推荐

    nutz生成javabean工具.zip

    在给定的压缩包"nutz生成javabean工具.zip"中,我们可以看到一个名为"NutzCodematic-master"的项目,这很可能是Nutz提供的一个用于自动化生成JavaBean类的工具。下面我们将详细探讨Nutz Codematic及其在Java开发中的...

    nutz代码生成器

    【Nutz代码生成器】是基于Nutz框架开发的一款实用工具,主要用于自动化生成Action和实体类代码,极大地提高了开发效率,降低了手动编写这些基础代码的工作量。Nutz是一款轻量级、高性能的Java开发框架,它集合了ORM...

    在Nutz中使用Ioc-Annotation的入门教程

    在Nutz中,任何类都可以成为一个Bean,只要它被`@org.nutz.ioc.annotation.Injectable`注解或者包含在某个包下,该包已被配置为扫描范围。Bean的生命周期和作用域可以通过`@org.nutz.ioc.annotation.Inject`的`value...

    nutz需要的jar包

    `nutz-utils`则是一些通用的工具类,如字符串处理、日期时间操作等。 在实际项目中,根据需求可能还需要引入一些额外的jar包,如JSON解析库(如fastjson、gson)、XML处理库(如jaxb、dom4j)、单元测试框架(如...

    nutz-1.r.58

    在实际开发中,通过引入`nutz-1.r.58.jar`,开发者可以利用Nutz提供的各种工具类和组件,例如`NutzIoc`用于实现IoC容器,`NutzDao`提供便捷的数据库操作,`NutzHttp`则简化了HTTP请求处理。同时,结合源码和文档,...

    nutz 文件上传例子

    在这个例子中,`@Param("file")` 注解用于指定表单中文件字段的名称,`UploadFile` 是 Nutz 提供的用于处理上传文件的类,包含了文件名、文件内容等信息。`saveFileToServer()` 方法是保存文件到服务器的逻辑,这...

    nutz_redis集成依赖包

    1. **Nutz框架**:Nutz是一个轻量级的Java Web开发框架,它提供了MVC模式,ORM支持,以及丰富的工具类。Nutz的目标是简化开发流程,提高开发效率,使开发者更专注于业务逻辑。 2. **Redis**:Redis是一个高性能的...

    Nutz开发用到的jar包

    它提供了许多实用工具类,简化了Java开发中的常见任务,如对象转换、日期处理等。 2. **Nutz MVC**:Nutz MVC是Nutz框架的一个重要组成部分,用于构建Web应用程序。它支持RESTful API、模板引擎、拦截器、数据绑定...

    nutz-1.r.61-发布包

    这个文件包含了Nutz 1.r.61版本的Java API文档,通过它可以查看框架中各个类和方法的详细说明,帮助开发者了解如何使用Nutz的API进行编程。Javadoc是Java的标准文档生成工具,它将源代码中的注释转换成结构化的HTML...

    ztree与nutz简单使用

    《ztree与nutz在实际应用中的简单使用详解》 在IT行业中,高效地管理和操作数据是至关重要的。zTree和Nutz都是在这方面提供强大支持的工具。zTree是一款基于JavaScript的灵活、强大的树状菜单插件,而Nutz则是一个...

    nutz框架使用手册.zip

    手册会介绍Nutz框架的错误日志分析、调试工具的使用,帮助开发者高效地解决问题。 8. **社区与版本更新**:Nutz框架拥有活跃的社区,开发者可以在其中获取最新的框架资讯、参与讨论和寻求帮助。手册也会提醒读者...

    nutz迷你项目

    3. **全面性**:Nutz提供了全面的工具集,覆盖了从数据库操作到网络通信的多种场景。 4. **易用性**:API设计直观,学习曲线平缓,使得开发者能够快速上手。 在“Nutz迷你项目”中,你可以学习到以下内容: 1. **...

    wendal-nutz-master.zip

    1. **Nutz Core**:这是NUTZ的基础模块,提供了许多实用工具类,如字符串处理、日期时间操作、IO流操作等,大大增强了Java开发的便利性。 2. **Ioc(Inversion of Control)容器**:NUTZ的依赖注入框架,通过自动...

    Nutz的插件与集成库-nutzmore

    10. **工具类**:Nutzmore往往包含了一套实用的工具类库,涵盖了字符串处理、日期时间、网络通信等多个领域,方便开发者快速解决日常问题。 总的来说,Nutzmore是Nutz框架的重要补充,它扩展了Nutz的功能,使得...

    Nutz源码Jdoc在IDE中补全提示时出现乱码解决办法

    2. **Nutz框架**:Nutz是一个轻量级的Java Web框架,它提供了一套完整的MVC解决方案,以及各种实用工具类。其源码是开源的,开发者可以深入研究并自定义扩展。 3. **Javadoc(Jdoc)**:Javadoc是Java的一种工具,...

    nutz 初体验

    《Nutz初体验:探索Java开发的利器》 在IT行业中,工具的选择往往对开发效率有着重大影响。今天,我们要探讨的是一个名为...对于那些希望在Java开发中寻求更高生产力的开发者来说,Nutz无疑是一个值得尝试的优秀工具。

    nutz初使用之MVC HelloWorld (netbeans jsp版)

    在本文中,我们将深入探讨如何使用Nutz框架创建一个简单的MVC(Model-View-Controller)应用程序,以“HelloWorld”为例。Nutz是一个轻量级的Java开发框架,它提供了全面的MVC支持,使得开发者能够高效地构建Web应用...

    nutz-1.r.62.zip

    1. `nutz-1.r.62.jar`:这是Nutz框架的核心库文件,包含了所有Nutz框架的类和方法,供开发者在项目中引用,以利用其丰富的功能。 2. `nutz-1.r.62-sources.jar`:提供了框架的源代码,开发者可以通过查看源码理解...

    nutz-1.r.57的JDK1.5编译

    Nutz是一个轻量级、高性能的Java开发框架,它的核心组件包括了ORM、AOP、MVC等,为开发者提供了一套完整的开发工具集。在Java开发领域,JDK版本的选择至关重要,因为不同版本的JDK可能会影响到代码的兼容性和性能。...

Global site tag (gtag.js) - Google Analytics