一、信息系统的开发架构
客户层-------显示层-------业务层---------数据层---------数据库
1.客户层:客户层就是客户端,简单的来说就是浏览器。
2.显示层:JSP/Servlet,用于给浏览器显示。
3.业务层:对于数据层的原子操作进行整合。
4.数据层:对于数据库进行的原子操作,增加、删除等;
二、DAO(Data Access Object)介绍
DAO应用在数据层那块,用于访问数据库,对数据库进行操作的类。
三、DAO设计模式的结构
DAO设计模式一般分为几个类:
1.VO(Value Object):一个用于存放网页的一行数据即一条记录的类,比如网页要显示一个用户的信息,则这个类就是用户的类。
2.DatabaseConnection:用于打开和关闭数据库。
3.DAO接口:用于声明对于数据库的操作。
4.DAOImpl:必须实现DAO接口,真实实现DAO接口的函数,但是不包括数据库的打开和关闭。
5.DAOProxy:也是实现DAO接口,但是只需要借助DAOImpl即可,但是包括数据库的打开和关闭。
6.DAOFactory:工厂类,含有getInstance()创建一个Proxy类。
四、DAO的好处
DAO的好处就是提供给用户的接口只有DAO的接口,所以如果用户想添加数据,只需要调用create函数即可,不需要数据库的操作。
五、DAO包命名
对于DAO,包的命名和类的命名一定要有层次。
六、实例解析
1.Emp.java
- package org.vo;
- import java.util.*;
- public class Emp{
- private int empno;
- private String ename;
- private String job;
- private Date hireDate;
- private float sal;
- public Emp(){
- }
- public int getEmpno(){
- return empno;
- }
- public void setEmpno(int empno){
- this.empno = empno;
- }
- public String getEname(){
- return ename;
- }
- public void setEname(String ename){
- this.ename = ename;
- }
- public Date getHireDate(){
- return hireDate;
- }
- public void setHireDate(Date hireDate){
- this.hireDate = hireDate;
- }
- public float getSal(){
- return sal;
- }
- public void setSal(float sal){
- this.sal = sal;
- }
- public String getJob(){
- return job;
- }
- public void setJob(String job){
- this.job = job;
- }
- }
2.DatabaseConnection.java
- package org.dbc;
- import java.sql.*;
- public class DatabaseConnection{
- private Connection con = null;
- private static final String DRIVER = "com.mysql.jdbc.Driver";
- private static final String USER = "root";
- private static final String URL = "jdbc:mysql://localhost:3306/mldn";
- private static final String PASS = "12345";
- public DatabaseConnection()throws Exception{
- Class.forName(DRIVER);
- con = DriverManager.getConnection(URL,USER,PASS);
- }
- public Connection getConnection()throws Exception{
- return con;
- }
- public void close()throws Exception{
- if(con!=null){
- con.close();
- }
- }
- }
3.IEmpDAO.java
- package org.dao;
- import java.util.List;
- import org.vo.*;
- public interface IEmpDAO{
- public boolean doCreate(Emp emp)throws Exception;
- public List<Emp> findAll()throws Exception;
- public Emp findById(int empno)throws Exception;
- }
4.EmpDAOImpl.java
- package org.dao.impl;
- import org.dao.*;
- import java.sql.*;
- import org.vo.*;
- import java.util.*;
- public class EmpDAOImpl implements IEmpDAO{
- private Connection con;
- private PreparedStatement stat = null;
- public EmpDAOImpl(Connection con){
- this.con = con;
- }
- public boolean doCreate(Emp emp)throws Exception{
- String sql = "INSERT INTO emp(empno,ename,job,hiredate,sal) VALUES(?,?,?,?,?)";
- stat = con.prepareStatement(sql);
- stat.setInt(1,emp.getEmpno());
- stat.setString(2,emp.getEname());
- stat.setString(3,emp.getJob());
- stat.setDate(4,new java.sql.Date(emp.getHireDate().getTime()));
- stat.setFloat(5,emp.getSal());
- int update = stat.executeUpdate();
- if(update>0){
- return true;
- }
- else{
- return false;
- }
- }
- public List<Emp> findAll()throws Exception{
- String sql = "SELECT empno,ename,job,hiredate,sal FROM emp";
- stat = con.prepareStatement(sql);
- ResultSet rs = stat.executeQuery();
- Emp emp = null;
- List<Emp> list = new ArrayList<Emp>();
- while(rs.next()){
- int empno = rs.getInt(1);
- String ename = rs.getString(2);
- String job = rs.getString(3);
- float sal = rs.getFloat(5);
- emp = new Emp();
- emp.setEmpno(empno);
- emp.setEname(ename);
- emp.setJob(job);
- emp.setHireDate(rs.getDate(4));
- emp.setSal(sal);
- list.add(emp);
- }
- return list;
- }
- public Emp findById(int empno)throws Exception{
- String sql = "SELECT empno,ename,job,hiredate,sal FROM emp WHERE empno=?";
- stat = con.prepareStatement(sql);
- stat.setInt(1,empno);
- ResultSet rs = stat.executeQuery();
- Emp emp = null;
- if(rs.next()){
- String ename = rs.getString(2);
- String job = rs.getString(3);
- float sal = rs.getFloat(5);
- emp = new Emp();
- emp.setEmpno(empno);
- emp.setEname(ename);
- emp.setJob(job);
- emp.setHireDate(rs.getDate(4));
- emp.setSal(sal);
- }
- return emp;
- }
- }
5.EmpDAOProxy.java
- package org.dao.impl;
- import org.dao.*;
- import java.sql.*;
- import org.vo.*;
- import java.util.*;
- import org.dbc.*;
- public class EmpDAOProxy implements IEmpDAO{
- private DatabaseConnection dbc;
- private IEmpDAO dao = null;
- public EmpDAOProxy()throws Exception{
- dbc = new DatabaseConnection();
- dao = new EmpDAOImpl(dbc.getConnection());
- }
- public boolean doCreate(Emp emp)throws Exception{
- boolean flag = false;
- if(dao.findById(emp.getEmpno())==null){
- flag = dao.doCreate(emp);
- }
- dbc.close();
- return flag;
- }
- public List<Emp> findAll()throws Exception{
- List<Emp>list = dao.findAll();
- dbc.close();
- return list;
- }
- public Emp findById(int empno)throws Exception{
- Emp emp = dao.findById(empno);
- dbc.close();
- return emp;
- }
- }
6.DAOFactory.java
- package org.dao.factory;
- import org.dao.*;
- import java.sql.*;
- import org.vo.*;
- import java.util.*;
- import org.dbc.*;
- import org.dao.impl.*;
- public class DAOFactory{
- public static IEmpDAO getInstance(){
- IEmpDAO dao = null;
- try{
- dao = new EmpDAOProxy();
- }
- catch(Exception e){
- e.printStackTrace();
- }
- return dao;
- }
- }
7.TestDAO.java
- package org.dao.test;
- import org.dao.factory.*;
- import org.vo.*;
- import org.dao.*;
- public class TestDAO{
- public static void main(String args[])throws Exception{
- Emp emp = null;
- for(int i=0;i<5;i++){
- emp = new Emp();
- emp.setEmpno(i);
- emp.setEname("xiazdong-"+i);
- emp.setJob("stu-"+i);
- emp.setHireDate(new java.util.Date());
- emp.setSal(500*i);
- DAOFactory.getInstance().doCreate(emp);
- }
- }
- }
通过DAO设计模式,可以在JSP中屏蔽了数据库连接的操作,达到JSP只负责显示的效果。
相关推荐
在这个基于DAO设计模式的新闻发布系统中,我们可以深入探讨以下几个核心知识点: 1. DAO设计模式:DAO模式的核心思想是创建一个接口,该接口定义了对数据存储的通用操作,然后实现这个接口以处理具体的数据库交互。...
【标题】:“jsp + javaBean +Dao 写的博客程序” ...这个博客程序提供了一个学习和实践Java Web开发的好机会,通过分析和运行代码,你可以深入了解JSP、JavaBean和DAO模式的用法,以及如何将它们结合到实际项目中。
首先,JavaBean是Java中的一个标准组件,它遵循一定的命名规范和设计模式,通常用于封装业务逻辑和数据。在JSP应用中,JavaBean可以作为控制器或模型层,处理请求、管理状态并提供数据给视图层(JSP页面)。JavaBean...
本系统“学生信息管理系统-JSP+Servlet+JavaBean+DAO”就是这样一个典型的应用,它利用了Java Web技术栈,包括JSP、Servlet、JavaBean以及DAO设计模式,实现了对学生信息的高效管理和操作,具备基本的增删改查功能。...
在IT行业中,JavaBean和DAO(Data Access Object)模式是Web开发中常用的技术,尤其是在传统的JSP(JavaServer Pages)应用程序中。这个压缩包“jsp.javaBean.DAO.rar_javabean dao_jsp java dao”似乎包含了一个...
总的来说,这个学生成绩管理系统展示了Java Web开发的基本流程和设计模式,虽然简单,但它涵盖了从数据封装到业务处理和用户交互的核心概念。对于初学者来说,这是一个很好的实践项目,有助于理解和掌握相关技术。...
在没有使用DAO设计模式之前,数据库操作通常直接在JSP页面中使用JDBC代码,或者通过JavaBean和Servlet来实现,这样做的结果是代码混杂,难以维护。而DAO模式正是为了解决这些问题而生,它将数据库的操作封装起来,让...
基于JSP+Servlet+JavaBean+JDBC+DAO的Web架构设计该系统,进一步了解并掌握如何对数据库进行操作,以及如何分析、设计一个应用系统。 需求要求: 该系统的基本需求是,系统要实现如下的基本管理功能: (1)用户分为...
在本章中,我们将深入探讨JavaBean及其在DAO(Data Access Object)模式中的应用。 首先,JavaBean遵循一定的规范,它是一个公共类,具有默认的无参构造函数,属性都是私有的,并提供getter和setter方法进行访问...
在IT领域,尤其是在Web开发中,`JSP (JavaServer Pages)`、`...这种分层架构使得代码更易于维护和扩展,同时也遵循了MVC(Model-View-Controller)设计模式的思想,即模型处理数据,视图负责展示,控制器协调交互。
利用jsp+servlet+JavaBean+DAO,采用B/S模式设计和实现一个功能完善可自定义栏目的网站新闻发布系统,实现实时动态显示新闻及系统管理,可用根据需求的变换及时作出反应,提供新闻信息分类显示及新闻内容显示等功能...
DAO(Data Access Object)模式是软件设计模式之一,它的主要作用是提供对数据库的一层抽象,将数据操作逻辑与业务逻辑分离。这样可以提高系统的可维护性和可测试性,因为业务层只需要与DAO交互,而无需直接操作...
首先,`Javabean`是Java编程中的一种设计模式,它用于封装数据并提供相应的操作方法。在`Zrlog`中,`Javabean`通常被用来表示业务对象,如用户信息。一个简单的`User` `Javabean`可能会包含属性如`username`、`...
总的来说,`jsp+servlet+javabean`模式是Java Web开发的经典模式,它的优势在于清晰的角色划分,提高了代码的可维护性和可扩展性。在实际项目中,这三种技术的组合可以高效地处理各种Web应用需求,包括但不限于增删...
DAO(Data Access Object)设计模式是JavaBean在这个模式中常见的一个组件,它用于封装对数据库的操作。DAO类通常包含了一系列的方法,如增删改查,用来与数据库进行交互。这样做的好处是可以让业务逻辑层与数据访问...
总的来说,JavaBeanDAO设计是Java应用中常见的一种数据访问模式,它结合了JavaBean的面向对象特性与DAO的数据库访问功能,为应用程序提供了一种结构化的数据操作方式。通过合理的设计和实现,可以有效地提升代码的...
DAO(Data Access Object)模式是用于访问数据库或其他持久化存储的一种设计模式。它的主要目标是将业务逻辑和数据访问操作分离,提高代码的可重用性和可测试性。在Java中,DAO接口定义了一组操作数据库的方法,具体...
整个系统的架构遵循MVC(Model-View-Controller)设计模式,其中Model由JavaBean构成,View由JSP页面实现,Controller则由Servlet担当。这种模式有利于代码的组织和维护,提高了系统的可扩展性和可维护性。 总的来...
4. **MVC(Model-View-Controller)模式**:这是一个常用的设计模式,用于分离应用程序的业务逻辑、用户界面和数据模型。在这个项目中,JSP负责View(视图),Servlet担当Controller(控制器),JavaBean作为Model...
系统的架构设计通常采用MVC(Model-View-Controller)模式,其中模型(Model)由javaBean组成,视图(View)由jsp页面实现,控制器(Controller)则是servlet。这种模式将业务逻辑、数据和用户界面分离,提高了代码...