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="http://java.sun.com/xml/ns/javaee" 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">nutz nutz org.nutz.mvc.NutFilter modules demo.hello.MainModule nutz /* index.jsp
第三步:创建所需的module,这个module的名字大家是随便写的,但一定要注意,web.xml中demo.hello.MainModule 的MainModule必须是你所起的名字,demo.hello是package
第四步:创建数据库,数据库的名字自己随便写一个就行
第五步:创建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(); } }
最后是jsp的操作:
<%@ page language="java" cOntentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 未知
用户名: 密 码:登出
项目源码下载地址,
点击下载