Nutz框架學習之一連接sqlserver數據庫進行登錄操作

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>



項目源碼下載地址,點擊下載
發佈了93 篇原創文章 · 獲贊 10 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章