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如下

    <web-app version="2.5"
    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">
    <display-name>nutz</display-name>
    <filter>
    <filter-name>nutz</filter-name>
    <filter-class>org.nutz.mvc.NutFilter</filter-class>
    <init-param>
    <param-name>modules</param-name>
    <param-value>demo.hello.MainModule</param-value>
    </init-param>
    </filter>
    <filter-mapping>
    <filter-name>nutz</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>
    <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
    </web-app>

    第三步:创建所需的module,这个module的名字大家是随便写的,但一定要注意,web.xml中<param-value>demo.hello.MainModule</param-value>的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"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <script type="text/javascript" src="${base}/js/jquery-1.7.2.js"></script>
    <script type="text/javascript">
    var login = <%=session.getAttribute("me") != null %>;
    $(function () {
    if (login) {
    $("#login_status").html("已登陆");
    $("#login_form").hide();
    } else {
    $("#login_status").html("未登陆");
    $("#logout_link").hide();
    }
    $("#login_form").submit(function () {
    //alert($("#login_form").serialize());
    $.ajax({
    url : "${base}/usr/login",
    data : $("#login_form").serialize(),
    success : function (res) {
    if (res == "true") {
    alert("登陆成功!!");
    $("#logout_link").show();
    $("#login_form").hide();
    $("#login_status").html("已登陆");
    } else {
    alert("登陆失败!!");
    $("#logout_link").hide();
    $("#login_form").show();
    }
    return false;
    },
    fail : function(res) {
    alert("系统错误?!");
    }
    });
    return false;
    });
    });
    </script>
    <title>首页</title>
    </head>
    <body>
    <h1 id="login_status">未知</h1><p/>

    <form id="login_form" action="#">
    用户名:<input name="name"></input>
    密 码:<input name="passwd"></input>
    <input type="submit" value="提交"></input>
    </form>

    <a href="${base}/usr/logout" id="logout_link">登出</a>
    </body>
    </html>



  • 项目源码下载地址,点击下载
  • 更多相关文章

    1. Sql2005中,恢复数据库时,旁边显示“restricted user”,怎么办?
    2. PHP基础教程十四之使用MySqli操作数据库
    3. Java向MySQL数据库插入时间类型Date数据时需要注意的问题
    4. SQL表的简单操作
    5. mysql数据库笔记
    6. 如何将表(及其行,列和单元格)保存在SQL数据库的单个字段中
    7. 第15天(就业班) 课程回顾、mysql安装、管理数据库、管理表、增删
    8. Mysql数据库学习笔记(一)
    9. vs2010下vc调用sqlite3数据库以及配置

    随机推荐

    1. android中一些能在国外使用的第三方地图
    2. 关于selenium android下的浏览器测试
    3. Android中的AlertDialog使用示例四(多项选
    4. 屏幕中央的TextView [重复]
    5. [置顶] Android 开发笔记
    6. android 利用广播实现程序的强制退出
    7. android 平台的RNDIS功能
    8. 关于activity之间及activity与baseAdapte
    9. MSM7627的内存分布图
    10. Android如何缩放应用中的字体大小