JSP到MVC开发模式的转变(2)

 

2、  DAO开发模式

 

在实际的开发中,对数据库的连接与关闭是一个最公共的部分,所以我们可以生成一个专门用于数据库连接的模块,建立一个com.test.util包,在下面建立一个DataBaseConnection类,如下:

package com.test.util;

 

import java.sql.*;

 

public class DataBaseConnection

{

    //数据库驱动

    String dbDriver = "org.gjt.mm.mysql.Driver";

    //数据库连接字符串

    String dbUrl = "jdbc:mysql://localhost:3306/test001";

    //数据库用户名

    String dbUName = "root";

    //数据库用户密码

    String dbUPassword = "root";

    //声明一个数据库连接对象

    Connection conn = null;

      

    //在构造函数中打开数据库

    public DataBaseConnection()

    {

           try

           {

              //加载数据库驱动

              Class.forName(dbDriver).newInstance();

              //连接数据库

              conn = DriverManager.getConnection(dbUrl,dbUName,dbUPassword);

           }

           catch (Exception e)

           {

              e.printStackTrace();

           }

    }

 

    //返回数据库连接

    public Connection getConnection()

    {

       return this.conn;

    }

 

    //关闭数据库连接

    public void closeConnection()

    {

       try

       {

           conn.close();

       }

       catch (Exception e )

       {

           e.printStackTrace();

       }

    }

}

 

         然后再将对数据库表的操作剥离出来,建立一个专门用于定义操作方法的接口,建立一个com.test.dao包,下面建立一个PersonDao接口,如下

package com.test.dao;

 

//使用PersonVo类

 

import com.test.model.*;

 

public interface PersonDao

{

    //登陆验证方法

    public boolean isLogin(Person person);

}

 

    对这个接口中定义的方法需要由一个实现类,建立一个com.test.dao.impl包,将对接口的实现建立一个实现类PersonDaoImpl,这个类需要集成接口PersonDao,如下:

package com.test.dao.impl;

 

 

import java.sql.* ;

import com.test.dao.* ;

import com.test.model.*;

import com.test.util.*;

 

public class PersonDaoImpl implements PersonDao

{

         public boolean isLogin(Person person)

         {

                   boolean flag = false;

                  

                   //声明一个数据库预处理操作对象

                   PreparedStatement pstmt = null;

                   //声明一个结果集对象

                   ResultSet rs = null;

                   //声明一个SQL语句变量

                   String sqlStr = null;

 

                   //DataBaseConnection为具体的数据库连接和关闭类

                   DataBaseConnection dbc = null;

 

                   dbc = new DataBaseConnection();

 

                   sqlStr = "select name from person where id = ? and password = ?";

                  

                   try

                   {

                            //实例化数据库操作对象

                            pstmt = dbc.getConnection().prepareStatement(sqlStr);

                            //设置pstmt参数的内容

                            pstmt.setString(1, person.getId());

                            pstmt.setString(2, person.getPassword());

                           

                            rs = pstmt.executeQuery();

 

                            if(rs.next())

                            {

                                     //有记录,执行此部分

                                     pv.setName(rs.getString(1));

                                     flag = true;

                            }

                           

                            //依次关闭

                            rs.close();

                            pstmt.close();

                  

                   }

                   catch(Exception e)

                   {

                            e.printStackTrace();

 

                   }

                   finally

                   {

                            dbc.closeConnection();

                   }

                   return flag;

         }

}

 

         上面Dao文件中用到了一个Person对象,这就是我们所要操作的数据信息,也就是我们从用户提交的表单中所收集来的信息,与数据库中的一个表相对应,里面定义的就是一些属性和各个属性的Setter、Getter方法,一般建立一个com.test.model包,专门存放这样的JavaBean文件,如下:

 

package com.test.model;

 

public class Person

{

    private String id;

 

    private String name;

 

    private String password;

 

    //生成setter和getter方法

 

    public void setId(String id)

    {

       this.id = id;

    }

 

    public String getId()

    {

       return this.id;

    }

 

    public void setName(String name)

    {

       this.name = name;

    }

 

    public String getName()

    {

       return this.name;

    }

 

    public void setPassword(String password)

    {

       this.password = password;

    }

 

    public String getPassword()

    {

       return this.password;

    }

}

        

         在JSP页面中我们并不直接调用这个对数据库操作的Dao类,而是通过一个工厂来封装、管理它,有这个工厂给我们生成一个Dao实例,然后我们通过工厂调用这个Dao,我们在建立一个com.test.factory包,存放管理Dao的工厂类,如下:

package com.test.factory;

 

 

import com.test.dao.*;

import com.test.dao.impl.*;

 

public class DaoFactory

{

         public static PersonDao getPersonDaoInstance()

         {

                   return new PersonDaoImpl();

         }

}

 

最后我们在JSP页面中使用JavaBean的自省机制收集提交过来的表单数据,然后通过调用工厂来实现对数据库的操作,具体实现如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值