My First Nutz program:
User.java:
package net.wendal.nutz.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;
}
}
UserModule.java:
package net.wendal.nutz.module;
import java.util.Date;
import javax.servlet.http.HttpSession;
import net.wendal.nutz.bean.User;
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.Log;
import org.nutz.log.Logs;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;
import org.nutz.mvc.annotation.Attr;
@IocBean
@At("/usr")
public class UserModule {
private static final Log log = Logs.get();
@Inject
private Dao dao;
@At("/login")
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("/logout")
@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();
}
}
MainModule.java :
package net.wendal.nutz;
import org.nutz.mvc.annotation.Fail;
import org.nutz.mvc.annotation.IocBy;
import org.nutz.mvc.annotation.Modules;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.SetupBy;
import org.nutz.mvc.ioc.provider.ComboIocProvider;
@Modules(scanPackage=true)
@Ok("json")
@Fail("json")
@IocBy(type=ComboIocProvider.class, args={
"*org.nutz.ioc.loader.json.JsonLoader", "ioc/",
"*org.nutz.ioc.loader.annotation.AnnotationIocLoader", "net.wendal.nutz"
})
@SetupBy(value = WendalSetup.class)
public class MainModule {
}
WendalSetup.java :
package net.wendal.nutz;
import net.wendal.nutz.bean.User;
import org.nutz.dao.Dao;
import org.nutz.dao.entity.annotation.Table;
import org.nutz.log.Log;
import org.nutz.log.Logs;
import org.nutz.mvc.NutConfig;
import org.nutz.mvc.Setup;
import org.nutz.resource.Scans;
public class WendalSetup implements Setup {
private static final Log log = Logs.get();
@Override
public void init(NutConfig config) {
log.debug("config Ioc = " + config.getIoc());
Dao dao = config.getIoc().get(Dao.class);
for(Class<?> klass : Scans.me().scanPackage("net.wendal.nutz")){
if(null != klass.getAnnotation(Table.class))
dao.create(klass, false);
}
if(dao.count(User.class) == 0){
User admin = new User();
admin.setName("admin");
admin.setPasswd("123456");
dao.insert(admin);
}
}
@Override
public void destroy(NutConfig config) {
// TODO Auto-generated method stub
}
}
ioc:
var ioc = {
dataSource : {
type : "com.alibaba.druid.pool.DruidDataSource",
fields : {
driverClassName : 'org.h2.Driver',
url : 'jdbc:h2:nutz'
},
events : {
depose : "close"
}
},
dao : {
type : "org.nutz.dao.impl.NutDao",
args : [{refer : "dataSource"}]
}
};
web.xml:
<?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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 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>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>net.wendal.nutz.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>