`
yunhaifeiwu
  • 浏览: 162356 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
社区版块
存档分类
最新评论

nutz简单综合实例----通过html网页对数据库进行管理操作(MVC,Ioc,Dao)

    博客分类:
  • nutz
阅读更多
5. GRUD--- NUTZ之MVC综合实例(html,ajax)
功能:
    (1) 加载网页时,从数据库中提取所有资料,显示在网页中
    (2) 在表格第二行输入资料,按新增,加把所录入资料添加到数据库中
    (3) 在其他行的“年龄”中输入资料,按更新,加用所录入资料列新数据库。
    (4) 在其他行按删除,将从数所库中删除相应资料
说明:本人使用的是netbean6.9.1,tomcat6.0.26,nutz 1.a.31

下面是网页界面截图:


最后附完整源码下载。。

5.1. 准备工作

5.1.1. 安装好mysql,在mydb数据库中,创建一个表t_man
CREATE TABLE `t_man` (
  `name` varchar(45) NOT NULL DEFAULT '',
  `age` varchar(45) NOT NULL DEFAULT '""',
  PRIMARY KEY (`name`)
)

5.1.2. 下载数据源所需要的包,并引用到工程中去

5.1.2.1 配置dbcp所用的包:commons pool、commons-collections.jar
http://commons.apache.org/dbcp/download_dbcp.cgi
http://commons.apache.org/pool/download_pool.cgi
http://commons.apache.org/collections/download_collections.cgi

注:有的需要mysql驱动
http://mysql.cs.pu.edu.tw/Downloads/Connector-J/mysql-connector-java-5.1.6.zip
nutz好像可以不要,但是在配spring security3时,却需要,郁闷


5.1.2.2 下载log4j----便于调试dao
下载地址http://logging.apache.org/log4j/1.2/download.html
log4j的配置文件log4j.properties
#
可以设置级别:debug>info>error
#debug:显示debug、info、error
#info:显示info、error
#error:只error
log4j.rootLogger=debug,appender1
#log4j.rootLogger=info,appender1  
#log4j.rootLogger=error,appender1

#输出到控制台
log4j.appender.appender1=org.apache.log4j.ConsoleAppender
#样式为TTCCLayout
log4j.appender.appender1.layout=org.apache.log4j.TTCCLayout



5.1.2.3 下载nutz
http://code.google.com/p/nutz/downloads/list

5.2. 配置web.xml
完整代码:
<?xml version="1.0" encoding="UTF-8"?>
<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">
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
   <filter>
		<filter-name>nutz</filter-name>
		<filter-class>org.nutz.mvc.NutFilter</filter-class>
		<init-param>
			<param-name>modules</param-name>
			<param-value>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>


5.3. html网页---ajax通讯,据备显示、添加、删除、更新操作
newhtml3.html全部源代码
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title></title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <script language="JavaScript">
        //ajax方式,与nutz通讯
        var xmlHttp=false;
        try {
            xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
        try {
            xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
        } catch (e2) {
            xmlHttp=false;
        }
        }
        if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
            xmlHttp=new XMLHttpRequest();
        }

        function init() {
            
            var url="display";
            xmlHttp.open("POST",url,true);//提交数据
            xmlHttp.onreadystatechange=function(){//服务器返回状态
                //服务成功接收并受回数据
                if(xmlHttp.readyState==4){
                    eval("json=" + xmlHttp.responseText + ";");
                    eval("json=" + json + ";");
                    var len=json.length;

                    //动态创建表
                    var strTbody = ["<table border='1'><tbody>"];//定义数组
                    strTbody.push("<tr>");
                    strTbody.push("<td>姓名</td>");
                    strTbody.push("<td>年龄</td>");
                    strTbody.push("<td>&nbsp;</td>");
                    strTbody.push("<td>&nbsp;</td>");
                    strTbody.push("</tr>");

                    strTbody.push("<tr>");
                    strTbody.push("<td><input name='bs1' type='text'  ></td>");
                    strTbody.push("<td><input name='bs1' type='text'  ></td>");
                    strTbody.push("<td><input name='add' type='button' id='add' value='增加' onClick='addLine(this)'></td>");
                    strTbody.push("<td>&nbsp;</td>");
                    strTbody.push("</tr>");
                    
                    for (var i=0;i<json.length;i++){
                        strTbody.push("<tr>");

                        strTbody.push("<td><input name='bs1' type='text' value='"+json[i].name+"' ></td>");
                        strTbody.push("<td><input name='bs2' type='text' value='"+json[i].age+"' ></td>");
                        strTbody.push("<td>");
                        strTbody.push("<input name='add' type='button' id='add' value='更新' onClick='updata(this)'>");
                        strTbody.push("</td>");
                        strTbody.push("<td>");
                        strTbody.push("<input name='delete' type='button' id='delete' value='删除' onClick='deldata(this)'>");
                        strTbody.push("</td>");

                        strTbody.push("</tr>");

                    }
                    strTbody.push("</tbody></table>");
                    var obj = document.getElementById("tableDiv");
                    obj.innerHTML = strTbody.join("");
                    
                   
                }
            }
            xmlHttp.send(null);
        }

        function addLine(obj){
            var objSourceRow=obj.parentNode.parentNode;
            var objTable=obj.parentNode.parentNode.parentNode.parentNode;
            var row_num=objTable.rows.length;
            var cell_num=objTable.rows[0].cells.length;
            var objRow=objTable.insertRow(row_num);

            var str="?name="+objSourceRow.cells[0].firstChild.value+"";
            str+="&age="+objSourceRow.cells[1].firstChild.value+"";
          
            var url="insert"+str;
            xmlHttp.open("POST",url,true);//提交数据
            xmlHttp.onreadystatechange=function(){//服务器返回状态
                //服务成功接收并返回数据
                if(xmlHttp.readyState==4){
                   init();
                   alert(xmlHttp.responseText);
                }
            }
            xmlHttp.send(null);
        }
        function updata(obj){
            var objSourceRow=obj.parentNode.parentNode;
            var objTable=obj.parentNode.parentNode.parentNode.parentNode;
            var row_num=objTable.rows.length;
            var cell_num=objTable.rows[0].cells.length;
            
            var str="?name="+objSourceRow.cells[0].firstChild.value+"";
            str+="&age="+objSourceRow.cells[1].firstChild.value+"";

            var url="update"+str;
            xmlHttp.open("POST",url,true);//提交数据
            xmlHttp.onreadystatechange=function(){//服务器返回状态
                //服务成功接收并返回数据
                if(xmlHttp.readyState==4){
                   init();
                   alert(xmlHttp.responseText);
                }
            }
            xmlHttp.send(null);
        }
        function deldata(obj){
            var objSourceRow=obj.parentNode.parentNode;
            var objTable=obj.parentNode.parentNode.parentNode.parentNode;
            var row_num=objTable.rows.length;
            var cell_num=objTable.rows[0].cells.length;

            var str="?name="+objSourceRow.cells[0].firstChild.value+"";
            str+="&age="+objSourceRow.cells[1].firstChild.value+"";

            var url="delete"+str;
            xmlHttp.open("POST",url,true);//提交数据
            xmlHttp.onreadystatechange=function(){//服务器返回状态
                //服务成功接收并返回数据
                if(xmlHttp.readyState==4){
                   init();
                   alert(xmlHttp.responseText);
                }
            }
            xmlHttp.send(null);
        }
        //-->
    </script>
  </head>
  <body onload="init();">
    <div id="tableDiv"></div>
  </body>
</html>


5.4. 主模块文件----MainModule.java
位于源代码 根目录中。MainModule.java完整代码
import org.nutz.mvc.adaptor.PairAdaptor;
import org.nutz.mvc.annotation.*;
import org.nutz.mvc.ioc.provider.JsonIocProvider;

 @Modules({HelloWorld.class})
 @Fail("json")
@IocBy(type=JsonIocProvider.class, args={"dataSource.js"})
public class MainModule {}

5.5.	数据源配置文件(使用nutz的ioc)--- dataSource.js,
位于源代码根目录中,即与MainModule.java同一位置。在MainModule中调用,
在HelloWorld中通过Ioc按配置使用dataSource。

dataSource.js完整源代码
var ioc={
    dataSource : {
        type :"org.apache.commons.dbcp.BasicDataSource",
        events:{
            depose:'close'
        },
        fields : {
            driverClassName:'com.mysql.jdbc.Driver',
            url:'jdbc:mysql://localhost:3306/mydb',
            username:'root',
            password:'123'
        }
    }
}


5.6. Pojo----Man.java
Man.java源代码,省略了getter and setter
import org.nutz.dao.entity.annotation.Column;
import org.nutz.dao.entity.annotation.Name;
import org.nutz.dao.entity.annotation.Table;

@Table("t_man")   // 声明了Man对象的数据表
public class Man {
    
    public Man() {}
    
    @Column
    @Name    // 表示该字段可以用来标识此对象,或者是字符型主键,或者是唯一性约束
    private String name;
    @Column
    private String age;
    //省略了getter and setter 
}


5.7. 子模块类----接受网页的命令,并完成对数据库的操作
HelloWorld.java完整源代码
import java.sql.SQLException;
import java.util.List;
import org.apache.commons.dbcp.BasicDataSource;
import org.apache.log4j.Logger;
import org.nutz.dao.Dao;
import org.nutz.dao.impl.NutDao;
import org.nutz.ioc.Ioc;
import org.nutz.json.Json;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;

 @Ok("json")
public class HelloWorld {
         private static Logger logger = Logger.getLogger(HelloWorld.class);
        @At("/display")
        public String diplay(
                    Ioc ioc) throws SQLException {
            BasicDataSource ds = ioc.get(BasicDataSource.class,"dataSource");          
            Dao dao = new NutDao(ds);
            Man p = new Man();
            List<Man> list=dao.query(Man.class, null, null);

            String str=Json.toJson(list);
            return str;
        }

        @At("/insert")
        public String insert(@Param("name") String name,
                 @Param("age") String age,
                    Ioc ioc) throws SQLException {
            BasicDataSource ds = ioc.get(BasicDataSource.class,"dataSource");
            
            Dao dao = new NutDao(ds);
            Man p =new Man();
            p.setName(name);
            p.setAge(age);

            dao.insert(p);
//            logger.debug(dao.update(p));
            String str="sucess:'ok'";
            return str;
        }

        @At("/update")
        public String update(@Param("name") String name,
                 @Param("age") String age,
                    Ioc ioc) throws SQLException {
            BasicDataSource ds = ioc.get(BasicDataSource.class,"dataSource");

           
            Dao dao = new NutDao(ds);
            Man p =new Man();
            p.setName(name);
            p.setAge(age);

           // dao.update(p);
            logger.debug(dao.update(p));
            String str="sucess:'ok'";
            return str;
        }

        @At("/delete")
        public String delete(@Param("name") String name,
                 @Param("age") String age,
                    Ioc ioc) throws SQLException {
            BasicDataSource ds = ioc.get(BasicDataSource.class,"dataSource");
            
            Dao dao = new NutDao(ds);
            Man p =new Man();
            p.setName(name);
            p.setAge(age);

            dao.delete(p);
//          logger.debug(dao.update(p));
            String str="sucess:'ok'";
            return str;
        }
}

  • 大小: 25.8 KB
分享到:
评论
3 楼 shijiandeheliu 2016-05-09  
非常感谢,运行良好
2 楼 465272694 2012-06-22  
请问连接池是不是用nutz自身的?
1 楼 windFeng 2011-08-24  
这个框架好小巧,准备用这个做项目。

你的这个demo,收藏

相关推荐

    在Nutz中使用Ioc-Annotation的入门教程

    本教程将引导您了解如何在Nutz中利用Ioc-Annotation进行程序开发,以简化代码并提高可维护性。 ### 1. Nutz IoC 容器简介 Nutz的IoC容器是基于Spring的IoC思想设计的,但更为轻量级。它允许开发者声明、管理和注入...

    nutz需要的jar包

    `nutz-dao`包含的jar包如`jdbc-driver`,用于连接不同的数据库,而`nutz-runtimex`则提供了运行时环境的扩展功能,如异常处理和缓存管理。 另外,`nutz-mvc`是Nutz的模型视图控制器组件,它负责处理HTTP请求并将其...

    Nutz 例子,从mvc ioc 到数据插入

    这篇博客“Nutz 例子,从mvc ioc 到数据插入”深入探讨了如何使用Nutz进行MVC架构设计、依赖注入以及数据库操作。 首先,让我们了解一下MVC模式。MVC是一种软件设计模式,将应用程序分为三个主要部分:模型(Model...

    nutz搭建的MVC框架

    Nutz是一个轻量级、高性能的Java开源框架,它提供了丰富的功能,包括MVC(Model-View-Controller)架构支持,使得开发者能够快速构建小型到中型的Web应用。本篇文章将详细介绍如何利用Nutz搭建MVC框架,并探讨其在...

    nutz初使用之MVC HelloWorld (netbeans html,js版)

    - Model(模型):负责处理业务逻辑,与数据库交互,存储和管理数据。 - View(视图):展示数据,通常为HTML页面,负责用户界面的渲染。 - Controller(控制器):接收用户请求,处理后调用模型并更新视图,起到...

    nutz-1.b.52.zip

    Nutz, 它是一组轻便小型的框架的集合。 -------------Nutz 可以做什么? Dao -- 针对 JDBC 的薄封装,事务模板,无缓存 Ioc -- JSON 风格的配置文件,声明时切片支持 Mvc -- 注解风格的配置,内置多文件上传功能 ...

    高效,小巧的开源JAVA WEB 开发框架-Nutz (源码,开发文档)

    数据库访问层 -- Nutz.Dao 反转注入支持 -- Nutz.Ioc Mvc 框架 -- Nutz.Mvc Json 解析器 -- Nutz.Json 更多的简化Java语法的函数和类 -- Nutz.Lang 以及 Nutz.Castors 不依赖任何第三方 Jar 包,从而便于程序员建立...

    wendal-nutz-master.zip

    - 示例应用:可能会有一个简单的Web应用实例,展示NUTZ的MVC功能和数据库操作。 通过研究这些内容,你可以逐步了解NUTZ框架的工作原理,学习如何使用NUTZ创建自己的Java Web应用。NUTZ的文档和社区也非常活跃,遇到...

    Nutz-1.b.38

    同传统的 SSH 相比,它具备如下特点:轻 -- 当前最新版,整个 jar 文件共 910kB -- 针对 JDBC 的薄封装,无缓存全 -- 提供了 Dao (ORM, SQL 管理), Ioc, Aop, Mvc, Json解析 等必要功能活 -- 各个部分可以独立使用,...

    nutz初使用之MVC HelloWorld (netbeans jsp版)

    Nutz的MVC模块提供了一种简单的方式来组织和管理Web应用的各个部分。 1. **创建新项目** - 在NetBeans中,选择“文件”-&gt;“新建项目”,然后在“Java Web”类别下选择“Web Application”。为项目命名,例如...

    nutz-1.r.61-发布包

    Nutz 是一个轻量级的Java框架,它集成了MVC、ORM、DAO、AOP、IOC等核心功能,适用于构建各种类型的Web应用。Nutz的设计理念是简洁实用,它提供了丰富的API和工具,让开发者能更高效地进行开发工作。 2. **Nutz-1.r...

    使用Nutz[1.b.38]对数据库表的CRUD操作

    在IT行业中,数据库管理是核心任务之一,而高效地对数据库表进行CRUD(Create、Read、Update、Delete)操作是开发过程中不可或缺的部分。Nutz是一个轻量级且功能强大的Java框架,它提供了全面的数据访问支持,包括对...

    nutz 一个使用简单功能强大的mvc框架

    该框架是一个开源项目,可以免费下载, 集成的DAO,MVC,Spring 等框架的功能 不需要其他jar包 学习容易,好用

    nutz.ar包---框架

    Web开发框架,java,提供Ioc,Aop,el等机制;

    nutz框架使用手册.zip

    Nutz框架由一系列子项目组成,包括Nutz IOC(依赖注入)、Nutz DAO(数据访问对象)、Nutz MVC(模型视图控制器)等,涵盖了Web开发的多个层面,旨在简化开发流程,提高开发效率。 在"nutz框架使用手册.zip"中,...

    nutz-master.zip

    Dao层是数据库访问层,Nutz提供了一个强大的Dao框架,支持多种数据库(如MySQL、Oracle、SQL Server等),通过简单的API进行CRUD操作。Nutz Dao使用了代码生成工具,可以自动生成与数据库表对应的Java类,减少手动...

    Nutz框架文档

    全 -- 提供了 Dao (ORM, SQL 管理), Ioc, Aop, Mvc, Json解析 等必要功能 活 -- 各个部分可以独立使用,比如在 Spring 里采用 Nutz.Dao ,又比如在 Nutz.Ioc 里使用 Hibernate 等 整 -- 它所有功能均不依赖第三方 ...

Global site tag (gtag.js) - Google Analytics