JSP+DAO设计模

在开发中通常包含显示层、控制层、数据层的操作,DAO设计模式就是将这些操作统一交给JSP或JavaBean来进行处理,将显示操作都写入JSP页面,业务层都写成JavaBean形式,将程序代码封装成组件。JavaBean将负责大部分的数据处理,如执行数据库操作等,再将数据处理后的结果返回至JSP页面上显示,如图1所示。

图1  DAO设计模式流程图

在这个模式中DAO主要完成数据的操作,客户端依靠DAO接口进行操作,服务端要将接口进行具体实现。DAO的主要组成由以下几个部分组成。

1、DatabaseConnection:专门负责数据库打开与关闭操作的类。

2、VO:主要由属性、setter、getter方法,VO类中的属性与数据表中的字段相对应。每一个VO对象相当于表中的一条记录。

3、DAO接口:主要定义数据库操作的接口,定义数据库的原子性操作,如增删改,按ID查询。

4、Impl:DAO的具体实现类,完成具体的数据库操作,但是不负责数据库的打开和关闭,接口类的名称首字母用“I”,表示其是一个接口。

5、Proxy:代理实现类。主要完成数据库的打开和关闭,并调用Impl类对象的操作,之所以增加代理类是为了以后的拓展,如果一个程序可以A-B,那么中间         最好加一个过渡,使用A-B-C的形式,可以有效减少程序的耦合度,使开发结构更加清晰。

6、Factory:工厂类,通过工厂类取得一个DAO的实例化对象,编写工厂类也是为了降低代码的耦合度,工厂类产生实例的方法通常是静态函数,这样一来就       可以通过工厂类名直接生成实例。

用JSP+DAO模式开发的程序可读性高和可重复利用性高,这是由JavaBean的特性决定的,由于大部分程序代码在JavaBean中,不会和JSP中的标记搞混,可读性好,有利于后期维护。另一方面,程序中的类都编写在JavaBean中,大大减少了编写重复性程序代码的工作,最适合小型的程序开发。

这种模式也有它的弊端——没有流程控制。对程序中每一个JSP页都需要检查参数是否正确,条件判断、异常时发生的处理,而且显示操作和与具体业务代码耦合在一起,维护起来困难。MVC设计模式很好地避免了这个弊端。

时间: 2024-10-01 10:14:20

JSP+DAO设计模的相关文章

JSP+DAO实现数据库的CRUD

今天在看李兴华<JavaWeb实战经典>时候,看到了用JSP+DAO整合起来做了一个数据库的增删改查操作.程序不难,但是具备借鉴意义.一般来说javaweb项目主要操作就是操作数据库,其本质也就是操作数据库.什么mvc,javabean从某种角度都是多余的,如果用户会写sql,那要View干什么,直接数据库查找不就好了? 一般来说可以实现一个最简单BS项目,可以有这么几个模式: 1  JSP + JDBC   这样写jsp里面全是java代码,很不利于维护与扩展. 2  JSP + DAO  

DAO设计模版

一.VO类 1 package cn.mldn.lxh.vo; 2 3 import java.util.Date; 4 5 public class Emp { 6 private int empno; 7 private String ename; 8 private String job; 9 private Date hiredate; 10 private float sal; 11 public int getEmpno() { 12 return empno; 13 } 14 pu

jsp DAO设计模式

DAO(Data Access Objects)设计模式是属于J2EE体系架构中的数据层的操作. 一.为什么要用DAO? 比较在JSP页面中使用JDBC来连接数据库,这样导致了JSP页面中包含了大量的HTML代码和JSP代码,将显示和功能代码混在一起,难以维护.并且在JSP页面中使用JDBC代码,必须导入相应的"java.sql.*"包.基于使得JSP页面专注于数据的表现的思想,我们只是希望JSP主要负责数据的显示,而不需要关注数据的来源和途径.同时在JSP进行JDBC操作,重复编码太

JSP DAO 学习笔记

DAO部分关键步骤: 1. import java.util.*; 2. public List queryAll() throws Exception { List all = new ArrayList() ; 每查到一句执行  all.add(note) ; return all ; } JSP部分关键步骤: 1. List all = null ; 2. all = queryAll(); 3. 进行遍历: Iterator iter = all.iterator() ; while(i

JPA的泛型DAO设计及使用

使用如Hibernate或者JPA作为持久化的解决方案时,设计一个泛型的DAO抽象父类可以方便各个实体的通用CRUD操作.由于此时大部分实体DAO的CRUD操作基本一样,采用泛型设计解决这个问题,带来了简洁代码的好处. 问题的关键在于我们需要在代码中获取抽象DAO父类(BaseEntityDAOImpl<T>)中的泛型信息. 由于Java的泛型是基于泛型擦除实现的,因此无法直接获取如果直接获取,在Java中,如果子类继承一个泛型的父类,会保存父类中泛型的信息,因此可以采用如下方法获取泛型信息.

阅读高手编写的类似QQ聊天的服务端代码DAO设计总结

1.数据访问层DAO的设计(已该工程为例) (1)首先定义一个接口,规范算法框架.(若子类和基类有很多公用的东西,则应该设计成抽象类) package com.way.chat.dao public interface UserDao { //注册成功返回用户id public int register(User u); public ArrayList<User> login(User u); public ArrayList<User> refresh(int id); pub

JSP DAO(Model)

示例代码: 1. Users类 package com.po; public class Users { private String username; private String password; public Users(){} public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public Str

使用JDBC连接MySQL数据库--典型案例分析(九)----财务帐号的DAO设计及其实现

转载请注明:http://blog.csdn.net/uniquewonderq 问题: 1.新增财务帐号: 2.修改某个财务帐号的信息. 3.修改某个财务帐号的状态. 4.查询所有的财务帐号. 5.根据某个财务帐号ID查询该财务帐号的全部信息. 方案: 在企业开发时,通常采用分层模式,常用的层次划分为表现层+控制层+业务层+持久层+数据源.持久层的功能是通过某些技术货框架将数据库的内容映射成对象,通过操作这些对象实现对数据库的操作.其主要目的是minutes业务对象和数据源那关系表之间的差异,

JDBC学习笔记(10):DAO设计思想与骨架搭建(小练习)

实体类User: 1 package com.xxyh.jdbc.domain; 2 3 import java.util.Date; 4 5 public class User { 6 private int id; 7 private String name; 8 private Date birthday; 9 private float money; 10 11 public int getId() { 12 return id; 13 } 14 public void setId(in