Nutz除了基本的功能以外,其实还提供了很多非常实用的工具类。这些类虽然没有在官方的文档中体现,但却可以大幅度的减少你的代码行数哦。今天我就给大家来介绍一下:
Java应用常常有这样的需求,抓取一个网页的内容,模拟浏览器对某个链接发起GET或PUT请求。
怎么办?
当然可以引用Apache HttpClient库,HttpClient对这些需求做了很好的封装。
但问题是,我们需要的只是一个很简单的功能,需要引入笨重的HttpClient吗?而且HttpClient为的解决各种各样的问题,做了很复杂的封装,非常难用呐。
如果你用Nutz那这个问题就很简单了。抓网页内容只需这样:
Response resp = Http.get("http://www.baidu.com");
if (resp.isOK()) {
System.out.println(resp.getContent());
}
发起API调用只需:
Map<String, Object> params = new HashMap<String, Object>();
params.put("name", "root");
params.put("pwd", "123456");
int timeout = 60 * 1000; // 单位毫秒
String apiRet = Http.post("http://api.xxx.com/login", params, timeout);
System.out.println(apiRet);
简单吧!其实Nutz的http包可实现的功能不只这些,另如以下功能也可以手到擒来:
import org.nutz.http.Http;public class TestSms {
很多时候我们都需要定时任务的帮助。例如定时更新数据库,定时刷新缓存,当发生错误后延时重试……
怎么办?
当然可以引用quartz,建一个job,创建一个SchedulerFactory,再绑定Trigger? 太麻烦了,我们只是想要一个简单的定时任务而已。
其实这样的需求有了Nutz后就很简单了,
实现一个Runnable的任务类,然后通过Tasks设置定时调用的间隔时间就行了,如:
Tasks.scheduleAtFixedRate(new Runnable() {
public void run() {
System.out.println("task runing...");
}
}, 10);
Lang.quiteSleep(60 * 1000);
每个应用都会有各种配置项,我们需要在程序启动的时候加载这些配置项进行各种操作。
Nutz对配置项做了很好的封装,现在你读取配置文件就很easy啦。
PropertiesProxy property = new PropertiesProxy(“/conf/", “/db.properties”));
String redisIp = property.get("redis.ip");
Int redisPort = property.getInt("redis.port");
注:NutConf 也支持目录扫描,会加载目录中的 *.js 文件。
如果你想写一个简单的SocketServer服务器,简单的接收用户发来的某些指令进行各种操作,那你选择Nutz就对了,它对这种简单的SocketServer做了很好的封装,你只需写几行代码就搞定了。
Sockets.localListenOneAndStop(9099, "reload", new SocketAction(){
@Override
public void run(SocketContext context) {
System.out.println("重新加载配置文件");
context.writeLine("success");
}
});
我们知道,HashMap、HashTable、TreeMap等数据结构可以存放各种类型数据,但如存放的是非泛型数据的话,就需要进行各种类型转换。
但如果你用 NutMap 就没有这种烦恼了,其内置了常见类型的自动转换,相信很多人会用的很爽。
NutMap map = new NutMap();
map.put("name", "bushi");
map.put("age", 63);
map.put("sex", true);
map.put("time", new Date());
System.out.println(map.getString("name"));
System.out.println(map.getInt("age"));
System.out.println(map.getBoolean("sex"));
System.out.println(map.getTime("time"));
你可能不知道吧,Nutz中还隐藏了一个代码统计工具。它可以对程序源码进行详细的统计,可以准确的分析出程序中代码行、注释行、空白行和导入行为多少等等。
项目快结束了,统计下项目中代码行数,可以满足下自己的虚荣心,同时也好向老板交差。
使用方法非常简单:
File file = new File("E:/qinerg_github/nutz/src/");
CodeStatisticsResult statisticsResult = Code.countingCode(file, "java", true, null);
System.out.println("源码数:" + statisticsResult.getFileCount());
System.out.println("总行数:" + statisticsResult.getTotalLines());
System.out.println("代码行:" + statisticsResult.getNormalLines());
System.out.println("注释行:" + statisticsResult.getCommentLines());
System.out.println("导入行:" + statisticsResult.getImportLines());
System.out.println("空白行:" + statisticsResult.getWhiteLines());