- 浏览: 1536484 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (525)
- SEO (16)
- JAVA-EE-Hibernate (6)
- JAVA-EE-Struts (29)
- JAVA-EE-Spring (15)
- Linux (37)
- JAVA-SE (29)
- NetWork (1)
- CMS (14)
- Semantic Research (3)
- RIA-Flex (0)
- Ajax-Extjs (4)
- Ajax-Jquery (1)
- www.godaddy.com (0)
- SSH (34)
- JavaScript (6)
- SoftwareEngineer (9)
- CMMI (0)
- IDE-Myeclipse (3)
- PHP (1)
- Algorithm (3)
- C/C++ (18)
- Concept&Items (2)
- Useful WebSite (1)
- ApacheServer (2)
- CodeReading (1)
- Socket (2)
- UML (10)
- PowerDesigner (1)
- Repository (19)
- MySQL (3)
- SqlServer (0)
- Society (1)
- Tomcat (7)
- WebService (5)
- JBoss (1)
- FCKeditor (1)
- PS/DW/CD/FW (0)
- DesignPattern (11)
- WebSite_Security (1)
- WordPress (5)
- WebConstruction (3)
- XML|XSD (7)
- Android (0)
- Project-In-Action (9)
- DatabaseDesign (3)
- taglib (7)
- DIV+CSS (10)
- Silverlight (52)
- JSON (7)
- VC++ (8)
- C# (8)
- LINQ (1)
- WCF&SOA (5)
- .NET (20)
- SOA (1)
- Mashup (2)
- RegEx (6)
- Psychology (5)
- Stock (1)
- Google (2)
- Interview (4)
- HTML5 (1)
- Marketing (4)
- Vaadin (2)
- Agile (2)
- Apache-common (6)
- ANTLR (0)
- REST (1)
- HtmlAnalysis (18)
- csv-export (3)
- Nucth (3)
- Xpath (1)
- Velocity (6)
- ASP.NET (9)
- Product (2)
- CSS (1)
最新评论
-
lt26w:
理解成门面模式应该比较容易明白吧
FacadePattern-Java代码实例讲解 -
lt26w:
看下面的例子比较明白.
FacadePattern-Java代码实例讲解 -
javaloverkehui:
这也叫文档,别逗我行吗,也就自己看看。
HtmlCleaner API -
SE_XiaoFeng:
至少也应该写个注释吧。
HtmlCleaner API -
jfzshandong:
...
org.springframework.web.filter.CharacterEncodingFilter 配置
工厂设计:
使用工厂设计,使前台不用知道具体子类是谁,是前台显示与后台逻辑操作分离,便于修改。
实例:在DAO设计模式中加入工厂设计
DAOFactory.java:使用工厂设计设置子类
view source
<embed id="highlighter_772179_clipboard" title="copy to clipboard" type="application/x-shockwave-flash" width="16" height="16" src="http://mgc.ahau.edu.cn/common/SyntaxHighlighter/scripts/clipboard.swf" allowscriptaccess="always" wmode="transparent" flashvars="highlighterId=highlighter_772179" menu="false"></embed>
print
?
01.
package
mgc.dao.factory;
02.
03.
import
mgc.dao.test.*;
04.
import
mgc.dao.test.impl.*;
05.
public
class
DAOFactory {
06.
public
static
MemberDAO getMemberDAOInstance() {
07.
return
new
MemberDAOImpl();
08.
}
09.
}
MemberDAO.java:数据库操作接口类
view source
<embed id="highlighter_76257_clipboard" title="copy to clipboard" type="application/x-shockwave-flash" width="16" height="16" src="http://mgc.ahau.edu.cn/common/SyntaxHighlighter/scripts/clipboard.swf" allowscriptaccess="always" wmode="transparent" flashvars="highlighterId=highlighter_76257" menu="false"></embed>
print
?
01.
package
mgc.dao.test;
02.
03.
import
java.util.*;
04.
import
mgc.dao.vo.*;
05.
//规定操作member表的全部方法
06.
public
interface
MemberDAO {
07.
//插入数据
08.
public
void
insert(Member member)
throws
Exception;
09.
//修改数据
10.
public
void
update(Member member)
throws
Exception;
11.
//删除数据
12.
public
void
delete(
int
id)
throws
Exception;
13.
//按ID查询
14.
public
Member queryById(
int
id)
throws
Exception;
15.
//全部查询
16.
public
List queryAll()
throws
Exception;
17.
}
Member.java:VO对象类
view source
<embed id="highlighter_308880_clipboard" title="copy to clipboard" type="application/x-shockwave-flash" width="16" height="16" src="http://mgc.ahau.edu.cn/common/SyntaxHighlighter/scripts/clipboard.swf" allowscriptaccess="always" wmode="transparent" flashvars="highlighterId=highlighter_308880" menu="false"></embed>
print
?
01.
package
mgc.dao.vo;
02.
03.
public
class
Member {
04.
private
int
id;
05.
private
String username;
06.
private
String password;
07.
08.
public
void
setId(
int
id){
09.
this
.id=id;
10.
}
11.
public
void
setUsername(String username){
12.
this
.username=username;
13.
}
14.
public
void
setPassword(String password){
15.
this
.password=password;
16.
}
17.
public
int
getId(){
18.
return
this
.id;
19.
}
20.
public
String getUsername(){
21.
return
this
.username;
22.
}
23.
public
String getPassword(){
24.
return
this
.password;
25.
}
26.
}
DatabaseConnection.java:数据库连接类
view source
<embed id="highlighter_592693_clipboard" title="copy to clipboard" type="application/x-shockwave-flash" width="16" height="16" src="http://mgc.ahau.edu.cn/common/SyntaxHighlighter/scripts/clipboard.swf" allowscriptaccess="always" wmode="transparent" flashvars="highlighterId=highlighter_592693" menu="false"></embed>
print
?
01.
package
mgc.dao.test.dbc;
02.
03.
import
java.sql.*;
04.
05.
public
class
DataBaseConnection {
06.
07.
private
final
String DBDRIVER=
"sun.jdbc.odbc.JdbcOdbcDriver"
;
08.
private
final
String DBURL=
"jdbc:odbc:member"
;
09.
private
Connection conn=
null
;
10.
11.
public
DataBaseConnection() {
12.
try
{
13.
Class.forName(DBDRIVER);
14.
this
.conn=DriverManager.getConnection(DBURL);
15.
}
16.
catch
(Exception e){}
17.
}
18.
19.
public
Connection getConnection() {
20.
return
this
.conn;
21.
}
22.
23.
public
void
close() {
24.
try
{
25.
this
.conn.close();
26.
}
27.
catch
(Exception e){}
28.
}
29.
}
MemberDAOImpl.java:数据库操作类
001.
package
mgc.dao.test.impl;
002.
003.
import
java.util.*;
004.
import
java.sql.*;
005.
import
mgc.dao.vo.*;
006.
import
mgc.dao.test.*;
007.
import
mgc.dao.test.dbc.*;
008.
009.
public
class
MemberDAOImpl
implements
MemberDAO {
010.
011.
//插入数据
012.
public
void
insert(Member member)
throws
Exception {
013.
String sql=
"Insert INTO member (username,password) VALUES (?,?)"
;
014.
PreparedStatement pstmt=
null
;
015.
DataBaseConnection dbc=
null
;
016.
try
{
017.
//连接数据库
018.
dbc=
new
DataBaseConnection();
019.
pstmt=dbc.getConnection().prepareStatement(sql);
020.
pstmt.setString(
1
, member.getUsername());
021.
pstmt.setString(
2
, member.getPassword());
022.
//操作数据库
023.
pstmt.executeUpdate();
024.
pstmt.close();
025.
}
026.
catch
(Exception e) {
027.
throw
new
Exception(e);
028.
}
029.
finally
{
030.
//关闭数据库
031.
dbc.close();
032.
}
033.
}
034.
035.
//修改操作
036.
public
void
update(Member member)
throws
Exception {
037.
String sql=
"Update member SET username=?,password=? Where ID=?"
;
038.
PreparedStatement pstmt=
null
;
039.
DataBaseConnection dbc=
null
;
040.
try
{
041.
//连接数据库
042.
dbc=
new
DataBaseConnection();
043.
pstmt=dbc.getConnection().prepareStatement(sql);
044.
pstmt.setString(
1
, member.getUsername());
045.
pstmt.setString(
2
, member.getPassword());
046.
pstmt.setInt(
3
,member.getId());
047.
//操作数据库
048.
pstmt.executeUpdate();
049.
pstmt.close();
050.
}
051.
catch
(Exception e) {
052.
throw
new
Exception(e);
053.
}
054.
finally
{
055.
//关闭数据库
056.
dbc.close();
057.
}
058.
}
059.
060.
public
void
delete(
int
id)
throws
Exception {
061.
String sql=
"Delete FROM member Where ID=?"
;
062.
PreparedStatement pstmt=
null
;
063.
DataBaseConnection dbc=
null
;
064.
065.
try
{
066.
//连接数据库
067.
dbc=
new
DataBaseConnection();
068.
pstmt=dbc.getConnection().prepareStatement(sql);
069.
pstmt.setInt(
1
, id);
070.
//操作数据库
071.
pstmt.executeUpdate();
072.
pstmt.close();
073.
}
074.
catch
(Exception e) {
075.
throw
new
Exception(e);
076.
}
077.
finally
{
078.
//关闭数据库
079.
dbc.close();
080.
}
081.
}
082.
083.
public
Member queryById(
int
id)
throws
Exception {
084.
String sql=
"Select * FROM member Where ID=?"
;
085.
PreparedStatement pstmt=
null
;
086.
DataBaseConnection dbc=
null
;
087.
ResultSet rs=
null
;
088.
Member member=
null
;
089.
try
{
090.
//连接数据库
091.
dbc=
new
DataBaseConnection();
092.
pstmt=dbc.getConnection().prepareStatement(sql);
093.
pstmt.setInt(
1
, id);
094.
//操作数据库
095.
rs=pstmt.executeQuery();
096.
if
(rs.next()) {
097.
//将查询结果保存在Member对象中
098.
member=
new
Member();
099.
member.setUsername(rs.getString(
"username"
));
100.
member.setPassword(rs.getString(
"password"
));
101.
}
102.
rs.close();
103.
pstmt.close();
104.
}
105.
catch
(Exception e) {
106.
throw
new
Exception(e);
107.
}
108.
finally
{
109.
//关闭数据库
110.
dbc.close();
111.
}
112.
return
member;
113.
}
114.
115.
public
List queryAll()
throws
Exception {
116.
String sql=
"Select * FROM member"
;
117.
PreparedStatement pstmt=
null
;
118.
DataBaseConnection dbc=
null
;
119.
ResultSet rs=
null
;
120.
List all=
new
ArrayList();
121.
try
{
122.
//连接数据库
123.
dbc=
new
DataBaseConnection();
124.
pstmt=dbc.getConnection().prepareStatement(sql);
125.
//操作数据库
126.
rs=pstmt.executeQuery();
127.
while
(rs.next()) {
128.
//将查询结果保存在Member对象中
129.
Member member=
new
Member();
130.
member.setUsername(rs.getString(
"username"
));
131.
member.setPassword(rs.getString(
"password"
));
132.
all.add(member);
133.
}
134.
rs.close();
135.
pstmt.close();
136.
}
137.
catch
(Exception e) {
138.
throw
new
Exception(e);
139.
}
140.
finally
{
141.
//关闭数据库
142.
dbc.close();
143.
}
144.
return
all;
145.
}
146.
}
dao.jsp:前台显示页面
view source
<embed id="highlighter_126215_clipboard" title="copy to clipboard" type="application/x-shockwave-flash" width="16" height="16" src="http://mgc.ahau.edu.cn/common/SyntaxHighlighter/scripts/clipboard.swf" allowscriptaccess="always" wmode="transparent" flashvars="highlighterId=highlighter_126215" menu="false"></embed>
print
?
01.
<%@page contentType="text/html;charset=GB2312" %>
02.
<%@page import="java.util.*" %>
03.
<%@page import="mgc.dao.factory.*" %>
04.
<%@page import="mgc.dao.test.impl.*" %>
05.
<%@page import="mgc.dao.vo.*" %>
06.
<
html
>
07.
<
head
>
08.
<
title
>dao.jsp</
title
></c
发表评论
-
UML、Design Pattern、OOD、OOP關係圖 (OO) (Design Pattern) (UML)
2009-12-06 17:55 1663http://moncs.cs.mcgill.ca/pe ... -
學習Design Pattern的小技巧 (OO) (Design Pattern)
2009-12-06 17:53 1554Abstract很多人學習Design Pattern,總是被 ... -
桥梁(Bridge)模式
2009-12-06 17:49 1077设计模式(16)-Bridge Pattern ... -
设计模式(22)-Strategy Pattern
2009-12-06 17:01 1066设计模式(22)-Strategy Pattern ... -
Facade Pattern
2009-12-06 17:00 1026一、 门面(Facade) ... -
facade pattern
2009-12-06 16:57 1146facade是我學到的第三個pattern,也是個很簡單的pa ... -
Proxy Pattern
2009-12-06 14:41 1166代理模式:给某一对象提供代理对象,并由代理对象控制具体对象的引 ... -
门面模式概要
2009-12-05 11:01 1294一、门面模式定义 ... -
FacadePattern-Java代码实例讲解
2009-12-05 10:49 1765Facade Pattern 外观模式 提供一个 ... -
FacadePattern
2009-12-05 10:40 923在过去几年中 ...
相关推荐
在这个“DAO设计模式(工厂+代理)”的例子中,我们将探讨如何结合工厂模式和代理模式来实现更灵活、更易于维护的DAO层。 首先,让我们理解DAO的基本概念。DAO是一个接口或抽象类,定义了对数据库进行操作的方法,...
DAO(Data Access Object)设计模式是软件开发中一种常见的用于处理数据访问的模式,它将业务逻辑与数据访问逻辑分离,使得代码结构更加...因此,深入理解并灵活运用DAO设计模式对于提升Java应用程序的质量至关重要。
在学习DAO设计模式的过程中,可以参考博客"设计模式5——DAO",该博客可能是对DAO模式的深入讲解,包括原理、优缺点、使用场景以及实践案例。同时,通过阅读这个压缩包中的"dao"文件,你可能能获取更具体的实现示例...
在DAO设计模式中,事务的管理至关重要,因为这关系到数据的一致性和完整性。 - **事务划分**:决定事务的开始与结束时机。 - **编程性事务**:开发者需要显式地通过编程的方式来控制事务的开始、提交和回滚。 - **...
DAO设计模式可以通过采用抽象工厂和工厂方法模式来变得非常的灵活. 当底层数据存储实现不需要发生改变时,该策略可以使用工厂方法设计模式实现,来产生应用中所需的DAO. 当底层数据储存实现不得不发生变化的时候, ...
在DAO设计模式中,首先定义一个DAO接口,这个接口声明了所有对数据库的操作方法。例如,对于一个用户管理模块,可能包含如下方法: - `void addUser(User user)` - `User getUserById(int id)` - `List<User> getAll...
在本精讲中,我们将深入探讨DAO设计模式的原理、实现方式以及在实际项目中的应用。 **DAO设计模式的核心思想** DAO设计模式的核心是创建一个接口,该接口定义了对数据库进行操作的方法,如查询、插入、更新和删除...
在实际项目中,DAO设计模式可以结合其他设计模式,比如Spring框架中的`Repository`接口,进一步简化数据库操作。通过使用ORM(Object-Relational Mapping)工具如Hibernate或MyBatis,可以减少手动编写SQL的繁琐工作...
#### 一、DAO设计模式的概念 **DAO**(Data Access Object)设计模式是一种在Java EE环境中广泛使用的数据访问模式,它主要应用于处理数据存储组件的交互。这种模式的主要目的是将底层数据访问操作与业务逻辑分开,...
总结来说,DAO设计模式在Java开发中扮演着重要的角色,尤其是在处理数据持久化问题时,它提供了一种灵活且可扩展的方式来管理数据访问,降低了系统的复杂性,提高了代码的可维护性。通过将数据访问逻辑封装在DAO中,...
总结一下,Java DAO设计模式是软件开发中的一种重要实践,它分离了数据访问层与业务逻辑层,使得系统更易于理解和维护。在实际应用中,我们需要根据项目需求选择合适的持久层框架,合理地设计DAO接口和实现,以及...
在软件设计模式中,工厂模式和DAO(Data Access Object)模式是两种常用的设计模式,它们在实际开发中扮演着至关重要的角色。工厂模式是创建型设计模式,它提供了一种创建对象的最佳方式,而DAO模式则是一种数据访问...
在"DAO设计模式"项目中,我们可能看到以下几个关键部分: 1. **用户实体(User Entity)**:这是业务层的对象,通常包含用户的相关属性,如用户名、密码、邮箱等。这些对象不直接与数据库交互,而是通过DAO来处理数据...
在没有使用DAO设计模式之前,数据库操作通常直接在JSP页面中使用JDBC代码,或者通过JavaBean和Servlet来实现,这样做的结果是代码混杂,难以维护。而DAO模式正是为了解决这些问题而生,它将数据库的操作封装起来,让...
通过这个实例,你可以看到DAO模式如何在实际项目中被应用,以及如何与其他设计模式(如工厂模式用于创建DAO实例)结合使用。理解并熟练运用DAO设计模式对于提升软件系统的质量至关重要。在实际开发中,可以根据项目...
工厂模式和DAO(Data Access Object)模式是两种常见的设计模式,它们在处理数据库操作时发挥着关键作用。本示例旨在帮助初学者理解如何结合这两种模式来高效地与数据库交互。 首先,我们来详细探讨工厂模式。工厂...
这个"JavaWeb DAO设计模式DEMO"是一个示例项目,旨在帮助初学者理解并掌握DAO模式的实现。 DAO模式的主要目标是创建一个独立于数据库访问的接口,这样业务逻辑组件就可以通过这个接口来操作数据,而不需要知道具体...
本项目“工厂模式很DAO模式实现购物车”是使用Java语言实现的一个购物车系统,旨在帮助初学者理解并运用这两种设计模式。 首先,我们来看**工厂模式**。工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳...
本文将深入探讨DAO设计模式的核心概念、实现方式以及在J2EE中的应用。 首先,我们来理解DAO的基本结构。DAO是一个接口,它定义了对数据源进行操作的方法,如增删查改。这些方法不关心具体的数据库访问细节,而是...