创建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 dualmaxActive : 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 {@Idprivate int id;@Name@Columnprivate String name;@Column("passwd")private String password;@Columnprivate 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 {@Injectprotected Dao dao;@Atpublic int count() {return dao.count(User.class);}}
在UserModule添加login方法 url:http://127.0.0.1:8080/nutzbook/user/login?username=admin&password=123456
返回结果true
@Atpublic 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 登录成功