JSP+DAO实现数据库的CRUD

今天在看李兴华《JavaWeb实战经典》时候,看到了用JSP+DAO整合起来做了一个数据库的增删改查操作。程序不难,但是具备借鉴意义。一般来说javaweb项目主要操作就是操作数据库,其本质也就是操作数据库。什么mvc,javabean从某种角度都是多余的,如果用户会写sql,那要View干什么,直接数据库查找不就好了?

一般来说可以实现一个最简单BS项目,可以有这么几个模式:

1  JSP + JDBC   这样写jsp里面全是java代码,很不利于维护与扩展。

2  JSP + DAO   这样业务逻辑还是写在jsp里面了

3  JSP + Servlet + JDBC(MVC) 这样好处是可以在跳转servlet时候调用下层服务,也就是业务逻辑。(JSP页面美观化可以使用EL,JSTL)

4  各种框架组合。Spring,Struts,Hibernate。Spring是接管所有层的框架。Struts是web层的框架,Hibernate是持久层框架。据我所知,持久层成熟产品很多,单就数据连接池这里有C3P0,Apache 的DBCP,Alibaba Druid(号称世界上最快的连接池),总之java世界里,只要想不到,没有实现不了的。

5  以上只是单机情况下的框架,如果到了分布式环境以及高并发环境下,设计的复杂程度将跨越一个数量级。分布式环境下的session,cookies怎么放?怎么设计分布式session框架?JVM怎么调优?I/O读取?.....暂时没研究。

画了一章李兴华老师书里案例的调用关系图:

例子虽然不难,但是用了两个Java设计模式以及接口解耦,还用了J2ee设计模式:有DAO模式,还有VO模式(其实就是JavaBean,传对象可以减少网络开销)。觉得案例很不错。也明白了为什么在相邻JSP跳转的时候必须经过一个servlet,而这是这个servlet调用了下层服务。远比JSP里面调用要方便和更具备模块化。

后面又把图修改了下:

可以看出,分层思想在其中起到核心作用。每一层做自己职责内的事情,多管闲事带来程序复杂度提高。业务一复杂就界面感觉很乱。其实分层是种抽象,逻辑上的分层,实际上就是多写了几个JSP和Java文件而已么。

这个程序虽然不难,但是这么一个程序里面的设计思想以及设计模式很值得思考。Java中有GOF23设计模式,在J2ee中也有21种设计模式,两大设计模式派系。

有图为证:

看来我又要荐书了:

又看到几张好图:

睡了,好累!

写了这么久,才1000字,晕!

时间: 2024-12-19 22:36:05

JSP+DAO实现数据库的CRUD的相关文章

jsp DAO设计模式

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

JSP+DAO设计模

在开发中通常包含显示层.控制层.数据层的操作,DAO设计模式就是将这些操作统一交给JSP或JavaBean来进行处理,将显示操作都写入JSP页面,业务层都写成JavaBean形式,将程序代码封装成组件.JavaBean将负责大部分的数据处理,如执行数据库操作等,再将数据处理后的结果返回至JSP页面上显示,如图1所示. 图1  DAO设计模式流程图 在这个模式中DAO主要完成数据的操作,客户端依靠DAO接口进行操作,服务端要将接口进行具体实现.DAO的主要组成由以下几个部分组成. 1.Databa

javaweb(三十三)——使用JDBC对数据库进行CRUD

一.statement对象介绍 Jdbc中的statement对象用于向数据库发送SQL语句,想完成对数据库的增删改查,只需要通过这个对象向数据库发送增删改查语句即可. Statement对象的executeUpdate方法,用于向数据库发送增.删.改的sql语句,executeUpdate执行完后,将会返回一个整数(即增删改语句导致了数据库几行数据发生了变化). Statement.executeQuery方法用于向数据库发送查询语句,executeQuery方法返回代表查询结果的Result

以编程的方式使用SQLite数据库 执行CRUD(创建 读取 更新 删除)操作

DBAdapter数据库辅助类 package com.databses; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.database.s

完成对数据库的CRUD操作

PS:查询相对复杂,要处理结果集,增删改则不用. 1 package it.cast.jdbc; 2 3 import java.sql.Connection; 4 import java.sql.ResultSet; 5 import java.sql.SQLException; 6 import java.sql.Statement; 7 8 public class CRUD { 9 10 /** 11 * @param args 12 * @throws ClassNotFoundExc

JSP与oracle数据库交互案例

本案例为咖啡销售情况录入查询系统 一.数据输入系统: 1.  设计输入信息页面 代码如下: <html> <head> </head> <body> <center><H1>咖啡管理系统--录入系统</H1></center> 欢迎来到录入系统<br /> <form action="inputaction.jsp" method="post" name

java web 程序---jsp连接mysql数据库的实例基础+表格显示

<%@ page language="java" import="java.util.*,java.sql.*" pageEncoding="gb2312"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <body> <center>JSP连接mysql数据库</

深入分析JavaWeb Item28 -- 使用JDBC对数据库进行CRUD

一.statement对象介绍 Jdbc中的statement对象用于向数据库发送SQL语句,想完成对数据库的增删改查,只需要通过这个对象向数据库发送增删改查语句即可. Statement对象的executeUpdate方法,用于向数据库发送增.删.改的sql语句,executeUpdate执行完后,将会返回一个整数(即增删改语句导致了数据库几行数据发生了变化). Statement.executeQuery方法用于向数据库发送查询语句,executeQuery方法返回代表查询结果的Result

mysql如何用jsp代码进行数据库备份

mysql如何用jsp代码进行数据库备份 //导出 String mysql="mysqldump -uroot -proot --opt databasename > d:/test.sql"; java.lang.Runtime.getRuntime().exec("cmd /c "+mysql); 导入: String mysql="mysqladmin -uroot -proot create databasename"; java