Nutz中那些好用的工具类

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

import org.nutz.http.Http;
import org.nutz.http.Response;
/**
 * 发送Get请求并且获取返回的JSONObject
 * @author yuzhiqiang
 *
 */
public class HttpGet {
	public static JSONObject getRes(String url){
		Response resp1 = Http.get(url);
		String json ="";
		if(resp1.isOK()){
			 json = resp1.getContent("UTF-8");
			 JSONObject value= JSONObject.fromObject(json);
			 return value;
		 }
		return null;
	}
    }   

一、Http 类

  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包可实现的功能不只这些,另如以下功能也可以手到擒来: 
  • 使用代理
  • 定制http Header、Cookie
  • 文件上传
  • 设置请求超时时间


二、Tasks 类

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

Tasks.scheduleAtFixedRate(new Runnable() {
	public void run() {
		System.out.println("task runing...");
	}
}, 10);
Lang.quiteSleep(60 * 1000);
  怎么样,简单吧?其实它还能做更多: 
  • 在指定的延时之后开始以固定的频率来运行任务
  • 在指定的时间点开始以固定的频率运行任务
  • 两次任务间保持固定的时间间隔
  • 返回Future做更高级的任务控制
  • 返回定时任务线程池,可做更高级的应用

三、Conf 加载

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

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

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

四、Sockets

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

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

五、NutMap

  我们知道,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"));

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
NutzWk 3.0 纯净版======目录结构调整较大,重构权限体系,优化代码等,和2.0不兼容,所以起名叫3.0。主要是把过去一年Node.js开发积累的一些经验用到此版本,特别是后台界面功能。PS:如果对Node.js开发框架感兴趣,可以看这里:https://github.com/Wizzercn/NodeWk在线演示地址======http://nutzwk.wizzer.cn/                 NutzWk v3.0.0======基于Nutz的开源企业级开发框架NutzWk 3.0 运行环境:*   JDK 8*   Maven 3.3.39*   Nutz v1.r.57NutzWk 3.0 新特性:*   集成Shiro权限框架*   集成Ehcache缓存*   集成Redis*   支持语言国际化*   支持注解式事务*   支持动作链*   支持注解式日志*   支持插件式加载*   集成Email服务*   集成Quartz定时任务*   集成Lucene搜索引擎*   集成Beetl模板引擎*   后台管理界面采用Pjax Bootstrap*   自定义路由使用说明:*   创建空的数据库*   修改数据库连接 /resources/config/custom/db.properties*   项目使用Maven构建,IDEA/Eclipse直接打开,等待包下载完毕*   启动时自动建表*   用户名:superadmin  密码:1======和 NutzWk 1.0 的主要区别:*   集成Shiro,更加完善的权限体系*   界面使用Bootstrap,PJAX加载*   MVC结构,事务支持更佳*   注解式日志,企业级业务操作记录更方便*   DataTables等JS插件的使用*   国际化字符串*   ……在线演示地址======https://nutzwk.nutz.cn/                 NutzWk 2.0https://wzflow.nutz.cn/          NutzWk 1.0 (含Activiti工作流)======NutzWk 1.0 源码是这个链接: https://github.com/Wizzercn/NutzWk/tree/1.0NutzWk 1.0 含Activiti工作流的源码在这里: https://github.com/wendal/wzflow 标签:开发框架
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值