标准DAO模式代码示例
//:Account.java源码:
/**
* @author
*
* To change this generated comment edit the template variable "typecomment":
* Window>Preferences>Java>Templates.
* To enable and disable the creation of type comments go to
* Window>Preferences>Java>Code Generation.
*/
public class Account implements java.io.Serializable {
/**
* Constructor for Account.
*/
public Account() {
super();
}
/* Private Fields */
private String userId;
private String password;
private String email;
private String name;
private String status;
private String addr1;
private String addr2;
private String city;
private String state;
private String zip;
private String country;
private String phone;
/* JavaBeans Properties */
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getAddr1() {
return addr1;
}
public void setAddr1(String addr1) {
this.addr1 = addr1;
}
public String getAddr2() {
return addr2;
}
public void setAddr2(String addr2) {
this.addr2 = addr2;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public String getZip() {
return zip;
}
public void setZip(String zip) {
this.zip = zip;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
//这个类只用于传递值对象
}///~
package com.webshop.db;
import java.sql.*;
import com.webshop.domain.Account;
/**
* @author 时金奎
*
* To change this generated comment edit the template variable "typecomment":
* Window>Preferences>Java>Templates.
* To enable and disable the creation of type comments go to
* Window>Preferences>Java>Code Generation.
*/
public class AccountDAO {
Connection con;//数据库连接
String newAccount="insert into account values(?,?,?,?,?,?,?,?,?,?,?,?)";
String signon="select * from account where userId=? and password=?";
String selectAccountById="select * from account where userId=?";
/**
* 构造方法
*/
public AccountDAO()
{
}
/**
* 增加新的帐号
* @param Account
* @return
* table_Info:
* userid varchar(80) not null,
password varchar(25) not null,
email varchar(80) not null,
name varchar(80) not null,
status varchar(2),
addr1 varchar(80) not null,
addr2 varchar(40),
city varchar(80) not null,
state varchar(80) not null,
zip varchar(20) not null,
country varchar(20) not null,
phone varchar(80) not null,
*/
public void createNewAccount(Account account)throws Exception
{
try
{
con=DatabaseConnection.getConnection();
}
catch(Exception e)
{
throw e;
}
try
{
PreparedStatement pstmt=con.prepareStatement(newAccount);
pstmt.setString(1,account.getUserId());
pstmt.setString(2,account.getPassword());
pstmt.setString(3,account.getEmail());
pstmt.setString(4,account.getName());
pstmt.setString(5,"0");
pstmt.setString(6,account.getAddr1());
pstmt.setString(7,account.getAddr2());
pstmt.setString(8,account.getCity());
pstmt.setString(9,account.getState());
pstmt.setString(10,account.getZip());
pstmt.setString(11,account.getCountry());
pstmt.setString(12,account.getPhone());
pstmt.executeUpdate();
con.close();
}
catch(SQLException e)
{
throw e;
}
finally
{
try
{
if(con!=null)
con.close();
}
catch(Exception e2)
{
}
}
}
/**
* 根据用户的ID获得帐号信息
*/
public Account getAccountById(String userId)throws Exception
{
Account account=null;
try
{
con=DatabaseConnection.getConnection();
}
catch(Exception e)
{
throw e;
}
try
{
PreparedStatement pstmt=con.prepareStatement(selectAccountById);
pstmt.setString(1,userId);
ResultSet rst=pstmt.executeQuery();
if(rst.next())
{
account=new Account();
account.setUserId(userId);
account.setAddr1(rst.getString("addr1"));
account.setAddr2(rst.getString("addr2"));
account.setCity(rst.getString("city"));
account.setState(rst.getString("state"));
account.setZip(rst.getString("zip"));
account.setCountry(rst.getString("country"));
account.setName(rst.getString("name"));
account.setEmail(rst.getString("email"));
account.setPhone(rst.getString("phone"));
account.setStatus(rst.getString("status"));
account.setPassword(rst.getString("password"));
}
con.close();
}
catch(SQLException e)
{
throw e;
}
finally
{
try
{
if(con!=null)
con.close();
}
catch(Exception e2)
{
}
}
return account;
}
/**
* 用户登录,进行用户名和密码验证
*/
public boolean signon(String userId,String password)throws Exception
{
boolean validate=false;
try
{
con=DatabaseConnection.getConnection();
}
catch(Exception e)
{
throw e;
}
try
{
PreparedStatement pstmt=con.prepareStatement(signon);
pstmt.setString(1,userId);
pstmt.setString(2,password);
ResultSet rst=pstmt.executeQuery();
if(rst.next())
{
validate=true;
}
con.close();
}
catch(SQLException e)
{
throw e;
}
finally
{
try
{
if(con!=null)
con.close();
}
catch(Exception e2)
{
}
}
return validate;
}
//关键是这个类进行操作数据库
}///~
//:NewAccountServlet.java 控制器类
package com.webshop.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.webshop.domain.Account;
import com.webshop.db.AccountDAO;
/**
* @version 1.0
* @author
*/
public class NewAccountServlet extends HttpServlet {
/**
* @see javax.servlet.http.HttpServlet#void (javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req,resp);
}
/**
* @see javax.servlet.http.HttpServlet#void (javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String targetPage="/account/login.jsp";
Account account=new Account();
account.setUserId(req.getParameter("userId"));
account.setPassword(req.getParameter("password"));
account.setEmail(req.getParameter("email"));
account.setName(req.getParameter("name"));
account.setPhone(req.getParameter("phone"));
account.setAddr1(req.getParameter("addr1"));
account.setAddr2(req.getParameter("addr2"));
account.setCity(req.getParameter("city"));
account.setState(req.getParameter("state"));
account.setZip(req.getParameter("zipCode"));
account.setCountry(req.getParameter("country"));
try
{
AccountDAO accountBean=new AccountDAO();
accountBean.createNewAccount(account);
}
catch(Exception e)
{
e.printStackTrace();
targetPage="/account/newUser.jsp";
req.setAttribute("errorMessage","在创建新用户时出错!可能因为用户已经存在,请重新再试。错误信息="+e.getMessage()+"!");
}
javax.servlet.RequestDispatcher requestDispatcher = req.getRequestDispatcher(targetPage);
requestDispatcher.forward(req,resp);
return;
}
}
login.jsp
<html><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><%@ page contentType="text/html;charset=gb2312"%>
<head>
<title>::用户登录:: </title>
<script language="JavaScript">
<!--
function check()
{
if(document.form1.userId.value=="")
{
window.alert("请输入用户名!");
document.form1.userId.focus();
return false;
}
if(document.form1.password.value=="")
{
window.alert("请输入密码!");
document.form1.password.focus();
return false;
}
}
-->
</script>
<%
String errorMessage = (String)request.getAttribute("errorMessage");
String targetPage=(String)request.getAttribute("targetPage");
if(targetPage==null||"null".equals(targetPage))
targetPage=request.getParameter("targetPage");
%>
<jsp:include page="/include/top.jspf" flush="true"/>
<%
if ( errorMessage != null ) {
%>
<center><font color=red>
<%=errorMessage%></font>
</center>
<br>
<%
}
%>
<form action="/servlet/signonServlet" method="POST">
<input type=hidden name=targetPage value=<%=targetPage%>>
<table align="center" border="0">
<tr>
<td colspan="2">请输入用户名和密码.
<br /> </td>
</tr>
<tr>
<td>用户名:</td>
<td><input type="text" name="userId" value="webshop" /></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password" name="password" value="webshop" /></td>
</tr>
<tr>
<td> </td>
<td><input type="image" border="0" src="/images/button_submit.gif" /></td>
</tr>
</table>
</form>
<jsp:include page="/include/bottom.jspf" flush="true"/>
</html>
//////////////////login.jsp///////////////////////////
<%
session.invalidate();
response.sendRedirect("/index.jsp");
%>
//////////////////newUser.jsp////////////////////////
<html><meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<%@ page contentType="text/html;charset=gb2312"%>
<head>
<title>新用户注册 </title>
<jsp:include page="/include/top.jspf" flush="true"/>
<script language="JavaScript">
<!--
function check()
{
if(document.form1.userId.value=="")
{
window.alert("请输入用户名名称!");
document.form1.userId.focus();
return false;
}
if(document.form1.country.value=="")
{
window.alert("请输入国别!");
document.form1.country.focus();
return false;
}
if(document.form1.name.value=="")
{
window.alert("请输入真实姓名!");
document.form1.userId.focus();
return false;
}
if(document.form1.addr1.value=="")
{
window.alert("请输入地址信息!");
document.form1.userId.focus();
return false;
}
if(document.form1.city.value=="")
{
window.alert("请输入城市信息!");
document.form1.userId.focus();
return false;
}
if(document.form1.state.value=="")
{
window.alert("请完整输入信息!");
document.form1.userId.focus();
return false;
}
if(document.form1.zipCode.value=="")
{
window.alert("请输入邮编信息!");
document.form1.userId.focus();
return false;
}
if(document.form1.phone.value=="")
{
window.alert("请完整输入信息!");
document.form1.phone.focus();
return false;
}
if(document.form1.email.value=="")
{
window.alert("请输入邮件地址信息!");
document.form1.email.focus();
return false;
}
if(document.form1.password.value!=document.form1.confirmpassword.value|document.form1.password.value=="")
{
window.alert("请正确输入密码!");
document.form1.password.focus();
return false;
}
return true;
}
//-->
</script>
<%
String errorMessage = (String)request.getAttribute("errorMessage");
String userId = request.getParameter("userId");
if ( userId == null ) {
userId = "";
}
String country = request.getParameter("country");
if ( country == null ) {
country = "";
}
String email = request.getParameter("email");
if ( email == null ) {
email = "";
}
String name = request.getParameter("name");
if ( name == null ) {
name = "";
}
String phone = request.getParameter("phone");
if ( phone == null ) {
phone = "";
}
String addr1 = request.getParameter("addr1");
if ( addr1 == null ) {
addr1 = "";
}
String addr2 = request.getParameter("addr2");
if ( addr2 == null ) {
addr2 = "";
}
String city = request.getParameter("city");
if ( city == null ) {
city = "";
}
String state = request.getParameter("state");
if ( state == null ) {
state = "";
}
String zipCode = request.getParameter("zipCode");
if ( zipCode == null ) {
zipCode = "";
}
%>
<%
if ( errorMessage != null ) {
%>
<span class="headingred"><font color=red>
<%=errorMessage%></font>
</span>
<br>
<%
}
%>
<form method="post" action="/servlet/newAccountServlet" name="form1">
<TABLE class=font1 cellSpacing=0 borderColorDark=#ffffff cellPadding=2 width="99%" align=center bgColor=#ffffff borderColorLight=#003686 border=1>
<tr>
<td colspan=2><IMG height=35 alt="" src="/images/new_user.gif" width=160 border=0><br></td>
</tr>
<tr><td colspan="6"><IMG height=10 alt="" src="/images/spacer.gif" width=1 border=0></td></tr>
<tr>
<td>用户名:</td>
<td><input size="15" name="userId" value="<%=userId%>"></input></td>
</tr>
<tr><td colspan="6"><IMG height=3 alt="" src="/images/spacer.gif" width=1 border=0></td></tr>
<tr>
<td>密码:</td>
<td><input type="password" size="15" name="password"></input></td>
</tr>
<tr>
<td>确认密码:</td>
<td><input type = "password" size="15" name="confirmpassword"></input></td>
</tr>
<tr>
<td>真实姓名:</td>
<td><input size="15" name="name" value="<%=name%>"></input></td>
</tr>
<tr>
<td>电话:</td>
<td><input size="15" name="phone" value="<%=phone%>"></input></td>
</tr>
<tr>
<td>email:</td>
<td><input size="15" name="email" value="<%=email%>"></input></td>
</tr>
<tr>
<td>地址1:</td>
<td><input size="15" name="addr1" value="<%=addr1%>"></input></td>
</tr>
<tr>
<td>地址2:</td>
<td><input size="15" name="addr2" value="<%=addr2%>"></input></td>
</tr>
<tr>
<td>城市:</td>
<td><input size="15" name="city" value="<%=city%>"></input></td>
</tr>
<tr>
<td>省:</td>
<td><input size="15" name="state" value="<%=state%>"></input></td>
</tr>
<tr>
<td>邮编:</td>
<td><input size="15" name="zipCode" value="<%=zipCode%>"></input></td>
</tr>
<tr>
<td>国别/地区:</td>
<td><select name="country">
<option value="中国大陆">中国大陆</option>
<option value="中国香港">中国香港</option>
<option value="美国">美国</option>
</select>
</td>
</tr>
<tr>
<td colspan=2 align=center><input type="image" src="/images/submit.gif" name="submit" onClick="return check()"></input></td>
</tr>
</table>
</form>
<jsp:include page="/include/bottom.jspf" flush="true"/>
相关推荐
首先,DAO.java 文件应该是包含了一个Java类,该类实现了对Oracle数据库的操作。这个类通常会封装SQL查询和其他数据库交互逻辑,使得业务代码与数据库操作解耦。以下是一些可能在DAO.java中涉及的关键知识点: 1. *...
"JDBC_DAO.rar"这个压缩包文件显然包含了关于使用Java数据库连接(JDBC)实现数据访问对象(DAO)分层模型的相关资源。这是一个常见的设计模式,用于将业务逻辑与数据操作进行解耦,提高代码的可重用性和可维护性。 ...
"DAO.rar_dao vc_vc dao"这个压缩包可能包含了相关的代码示例、教程文档或数据库样本,可以帮助初学者快速上手VC++下的数据库编程。"www.pudn.com.txt"可能是一个链接到更多资源的文本文件,而"DAO.wps"可能是关于...
在"JDBCDemo_DAO.rar"这个压缩包中,我们看到的是一个基于Java语言实现的DAO模式示例。Java作为一门面向对象的语言,非常适合用来构建这种模式。下面我们将详细探讨DAO设计模式以及在Java中的应用。 **DAO设计模式...
在这个"dao.rar"压缩包中,包含了一个名为"dao"的文件,我们可以假设这是该系统的数据访问对象的实现。 在Java或类似的面向对象语言中,DAO通常包含一系列方法,用于执行诸如增删查改(CRUD:Create, Read, Update,...
标题"dao.zip_dao_java dao_java数据库连接_struts_struts dao"暗示了这个压缩包包含与DAO相关的内容,特别是关于Java中的数据库连接以及如何在Struts框架中应用DAO。 描述提到"java数据库连接,主要适用于struts...
【标题】"DAO.rar_MyEclipse dao_dao mysql_myeclipse jsp DAO_myeclipse mysq" 提供的信息表明,这是一个关于使用MyEclipse 7.0开发的项目,其中涉及了DAO(数据访问对象)模式的设计,该设计与MySQL数据库以及JSP...
标题中的“huarongdao.rar_索爱”可能是指一个名为“华容道”的游戏,针对索爱(Sony Ericsson)品牌手机的J2ME(Java 2 Micro Edition)平台进行了优化。J2ME是Java的一个子集,专门用于开发在资源有限的设备上运行...
- **MDB 文件**:MDB 文件是 Microsoft Access 数据库的标准格式,用于存储数据表、查询、窗体、报表等多种数据库对象。 - **DAO (Data Access Objects)**:DAO 是一种用于访问 Microsoft Jet 数据库引擎(包括 ...
标题"JDBC+DAO.rar_DAO JDBC_java d_jdbc d_jdbc dao_留言系统"中,关键词主要包括"JDBC"、"DAO"和"留言系统",这表明这是一个基于Java的数据库操作(JDBC)和数据访问对象(DAO)模式实现的简单留言系统。...
DAO (Data Access Objects) 是一种用于访问 Microsoft Jet 数据库引擎的标准接口。它允许开发者创建、查询和管理数据库中的数据。`dao350.dll` 文件是 DAO 的一部分,对于许多基于 VB 的应用程序来说,它是必不可少...
在这个“dao.rar_timesheet java”项目中,我们看到的是一个关于时间表(timesheet)管理的Java实现。时间表通常用于追踪员工的工作时间,以便于计算工资、项目成本管理和绩效评估。 `TimesheetConfig.java`可能...
标题“dao.rar_oracle”和描述“向oracle数据库中,导入excel源码”指向一个具体的IT操作场景,即使用Java编程语言将Excel数据导入Oracle数据库。这个过程涉及到多个技术知识点,包括Oracle数据库管理、Java编程、...
在“District_Medical_DAO.rar”这个压缩包中,我们很可能是找到了一个与社区医疗系统相关的数据库访问对象(DAO)的代码库或文档,这对于我们理解社区医疗系统的运作机制和技术实现至关重要。 首先,我们需要了解...
在Java企业级应用开发中,JDBC(Java Database Connectivity)是一种标准的接口,用于与各种数据库进行交互。在第24讲中,我们探讨了JDBC编程中的DAO(Data Access Object)模式,这是一种常用的数据访问策略,用于...
本项目“dao.rar”显然是一个关于使用JSP、SQL和Servlet实现javaweb应用中雇员管理的实例,涵盖了数据的增删改查(CRUD)基本操作。下面我们将详细探讨这些知识点。 1. **JSP(JavaServer Pages)**:JSP是JavaWeb...
JDBC(Java Database Connectivity)是Java平台中用于访问数据库的标准API,但它直接使用起来繁琐且易出错。为了简化JDBC的使用,Spring框架提供了JDBCTemplate,它是一个基于模板方法设计模式的数据库访问类,能够...
1. 初始化棋盘:使用二维数组存储棋子的位置和类型,根据华容道的标准布局进行初始化。 2. 移动棋子:监听棋子控件的OnClick事件,获取点击的棋子位置,并判断移动是否合法。如果合法,更新棋子的位置并刷新界面。 3...
在安装和使用DAO 3.5时,需要注意的是,由于它是一个较老的技术,可能不支持最新的数据库特性,也不提供对现代安全标准的完全支持。因此,如果可能,建议将依赖DAO的应用程序迁移至更现代的数据访问技术,以提高性能...
在Java开发中,DAO模式用于隔离应用程序和数据存储层的交互,提供了一种标准的访问数据库的方式。DAO类通常包含对数据库的操作,如查询、插入、更新和删除数据,而这些操作的实现细节对调用者是透明的。通过使用DAO...