创建web项目
把jar粘贴到lib目录下 全选build path
新建类 类名为MainModule
添加模块类自动扫描
web.xml文件 注意< display-name> 和< parm-name>标签 需要修改
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>nutzbook</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>net.wendal.nutzbook.MainModule</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>nutz</filter-name>
<url-pattern>/*</url-pattern>
<!-- ForwardView需要下面的配置 @Ok("->:/xxx/yyy/zzz") -->
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>
在conf里新建文件夹名叫ioc
在ioc文件夹新建文件dao.js
dao.js
var ioc = {
dataSource : {
type : "com.alibaba.druid.pool.DruidDataSource",
events : {
create : "init",
depose : 'close'
},
fields : {
url : "jdbc:mysql://127.0.0.1:3306/nutzbook",
username : "root",
password : "root",
testWhileIdle : true, // 非常重要,预防mysql的8小时timeout问题
//validationQuery : "select 1" , // Oracle的话需要改成 select 1 from dual
maxActive : 100
}
},
dao : {
type : "org.nutz.dao.impl.NutDao",
args : [{refer:"dataSource"}]
}
};
配置文件图片
打开MainModule类 把@IocBy添加进去
package net.wendal.nutzbook;
import org.nutz.mvc.annotation.IocBy;
import org.nutz.mvc.annotation.Modules;
import org.nutz.mvc.ioc.provider.ComboIocProvider;
@IocBy(type=ComboIocProvider.class, args={"*js", "ioc/",
"*anno", "net.wendal.nutzbook",
"*tx", // 事务拦截 aop
"*async"}) // 异步执行aop
@Modules(scanPackage=true)
public class MainModule {
}
创建实体类
运行项目自动创建表 这里应该加上get set方法
@Table("t_user")
public class User {
@Id
private int id;
@Name
@Column
private String name;
@Column("passwd")
private String password;
@Column
private String salt;
@Column("ct")
private Date createTime;
@Column("ut")
private Date updateTime;
}
创建MainSetup类 注意类的位置
MainSetup
package net.wendal.nutzbook;
import org.nutz.dao.Dao;
import org.nutz.dao.util.Daos;
import org.nutz.ioc.Ioc;
import org.nutz.mvc.NutConfig;
import org.nutz.mvc.Setup;
public class MainSetup implements Setup {
// 特别留意一下,是init方法,不是destroy方法!!!!!
public void init(NutConfig nc) {
Ioc ioc = nc.getIoc();
Dao dao = ioc.get(Dao.class);
// 如果没有createTablesInPackage,请检查nutz版本
Daos.createTablesInPackage(dao, "net.wendal.nutzbook", false);
}
public void destroy(NutConfig nc) {
}
}
打开MainModule 写入@SetupBy
创建UserModule类
UserModule 测试 url:http://127.0.0.1:8080/nutzbook/user/count 页面返回1
package net.wendal.nutzbook.module;
import net.wendal.nutzbook.bean.User;
import org.nutz.dao.Dao;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Fail;
import org.nutz.mvc.annotation.Ok;
@IocBean
@At("/user")
@Ok("json")
@Fail("http:500")
public class UserModule {
@Inject
protected Dao dao;
@At
public int count() {
return dao.count(User.class);
}
}
在UserModule添加login方法 url:http://127.0.0.1:8080/nutzbook/user/login?username=admin&password=123456
返回结果true
@At
public Object login(@Param("username")String name, @Param("password")String password, HttpSession session) {
User user = dao.fetch(User.class, Cnd.where("name", "=", name).and("password", "=", password));
if (user == null) {
return false;
} else {
session.setAttribute("me", user.getId());
return true;
}
}
登出功能
@At
@Ok(">>:/")
public void logout(HttpSession session) {
session.invalidate();
}
登录页面 index.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">
<title>NutzBook demo</title>
<!-- 导入jquery -->
<script type="text/javascript" src="http://lib.sinaapp.com/js/jquery/2.0.3/jquery-2.0.3.min.js"></script>
<!-- 把user id复制到一个js变量 -->
<script type="text/javascript">
var me = '<%=session.getAttribute("me") %>';
var base = '${base}';
$(function() {
$("#login_button").click(function() {
$.ajax({
url : base + "/user/login",
type: "POST",
data:$('#loginForm').serialize(),
error: function(request) {
alert("Connection error");
},
dataType:"json",
success: function(data) {
alert(data);
if (data == true) {
alert("登陆成功");
location.reload();
} else {
alert("登陆失败,请检查账号密码")
}
}
});
return false;
});
if (me != "null") {
$("#login_div").hide();
$("#userInfo").html("您的Id是" + me);
$("#user_info_div").show();
} else {
$("#login_div").show();
$("#user_info_div").hide();
}
});
</script>
</head>
<body>
<div id="login_div">
<form action="#" id="loginForm" method="post">
用户名 <input name="username" type="text" value="admin">
密码 <input name="password" type="password" value="123456">
<button id="login_button">提交</button>
</form>
</div>
<div id="user_info_div">
<p id="userInfo"></p>
<a href="${base}/user/logout">登出</a>
</div>
</body>
</html>
访问url:http://127.0.0.1:8080/nutzbook/
点击提交登录会显示 true 登录成功