Nutz是SSH的替代方案,简单介绍一下Nutz的特点:
轻 -- 当前最新版,整个 jar 文件共 641k 薄 -- 针对 JDBC 的薄封装,无缓存 全 -- 提供了 Dao (ORM, SQL 管理), Ioc, Mvc, Json解析 等必要功能 活 -- 各个部分可以独立使用,比如在 Spring 里采用 Nutz.Dao ,又比如在 Nutz.Ioc 里使用 Hibernate 等 整 -- 它所有功能均不依赖第三方 jar 文件。第一步:下载Nutz.jar
目前最新版的jar包可以在http://code.google.com/p/nutz/downloads/list下载,也可以通过SVN访问https://nutz.googlecode.com/svn/trunk/ 下载最新的代码,然后自己build一个jar包。
第二步:创建Web Project
我用的是MyEclipse,新建一个Web Project,我使用的是sqlserver 2005数据库, dbcp的连接池,所需要的包如下:
大家可以自己下载。
配置拦截,web.xml如下
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
第三步:创建所需的module,这个module的名字大家是随便写的,但一定要注意,web.xml中
第四步:创建数据库,数据库的名字自己随便写一个就行
第五步:创建pojo,代码如下:
package demo.hello.bean;
import org.nutz.dao.entity.annotation.Id;
import org.nutz.dao.entity.annotation.Table;
@Table("tb_user")
public class User {
@Id
private long id;
private String name;
private transient String passwd;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPasswd() {
return passwd;
}
public void setPasswd(String passwd) {
this.passwd = passwd;
}
}
第六步:创建ioc,连接数据库,如下:
var ioc={
dataSource:{
type:"org.apache.commons.dbcp.BasicDataSource",
fields : {
driverClassName : 'com.microsoft.sqlserver.jdbc.SQLServerDriver',
url : 'jdbc:sqlserver://localhost:1433;databaseName=admin',
username : 'sa',
password : '123'
},
events:{
depose:"close"
}
},
dao:{
type:"org.nutz.dao.impl.NutDao",
args:[{refer:"dataSource"}]
}
}
第七步:创建一个接口,这个接口是对数据库以及表的操作,比如创建表、对表插入数据,代码如下:
package demo.hello;
import org.nutz.dao.Dao;
import org.nutz.dao.entity.annotation.Table;
import org.nutz.log.Logs;
import org.nutz.mvc.NutConfig;
import org.nutz.mvc.Setup;
import org.nutz.resource.Scans;
import demo.hello.bean.User;
/**
*
* 接口,
* @author Administrator
*
*/
public class WendalSetup implements Setup{
private static final org.nutz.log.Log log= Logs.get();
public void destroy(NutConfig config) {
// TODO Auto-generated method stub
}
public void init(NutConfig config) {
// TODO Auto-generated method stub
log.debug("config ioc="+config.getIoc());
Dao dao=config.getIoc().get(Dao.class);
//对数据库进行插入表的操作
// for (Class> klass:Scans.me().scanPackage("demo.hello")) {
// if(null!=klass.getAnnotation(Table.class))
// dao.create(klass, false);
// }
//对表就行插入数据的操作
// User user=new User();
// user.setName("admin");
// user.setPasswd("admin");
// dao.insert(user);
}
}
第八步:创建一个对用户登录验证的类,如下:
package demo.hello.module;
import java.util.Date;
import javax.jms.Session;
import javax.servlet.http.HttpSession;
import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.lang.Strings;
import org.nutz.log.Logs;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Attr;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;
import demo.hello.bean.User;
@IocBean
@At("/usr")
public class UserModule {
private static final org.nutz.log.Log log= Logs.get();
@Inject
private Dao dao;
@At//登录验证
public boolean login(@Param("name")String name,@Param("passwd")String passwd,HttpSession session){
if(Strings.isBlank(name) || Strings.isBlank(passwd))
return false;
name=name.trim().intern();
passwd=passwd.trim().intern();
User user=dao.fetch(User.class,Cnd.where("name","=",name).and("passwd","=",passwd));
if(user==null)
return false;
session.setAttribute("me", user);
return true;
}
@At
@Ok(">>:/")//返回登录页
public void logout(HttpSession session){
session.invalidate();
}
@At//输出用户
public User me(@Attr("me")User user){
return user;
}
@At("/ping")
public Object ping(){
log.debug("Dao=="+dao);
return new Date();
}
}