1.案例分析:
在同一Web系统中会有许多的程序都需要进行数据库的连接,以及数据库记录的各种操作,如人事管理系统的用户登录验证,员工档案信息的新增、删除、修改和查询等。如果每个程序中都重复地编写数据库连接代码,将造成代码冗余;而且若数据库的基础信息发生变化(如数据库服务器名称变化)则需要进行大量代码的修改,这样后期的维护工作量将很大。因此,JavaBean在JSP中的一个典型应用就是将对数据库的一些常用操作封装到JavaBean中,访问数据库的程序可以借助JSP提供的JavaBean动作元素来实现对JavaBean的调用。
本案例以人事管理系统数据库hrms为例说明使用JavaBean封装对数据库的访问操作。
2.案例学习目标:
学习使用JavaBean封装对数据库的访问操作。
3. 案例知识要点:
封装通用数据库访问操作的JavaBean的编写和使用。
4.案例完成步骤:
(1) 将第5章案例2中下载并解压后的sqlJDBC.jar文件复制到ch6/WEB-INF/lib目录下。
(2) 编写封装数据库访问操作的JavaBean文件BaseDAO.java。
package mybean;
import java.sql.*;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.*;
public class BaseDAO {
Connection con;
Statement stm = null;
ResultSet rs = null;
String connstr;
String strUser = "";
String strPassword="";
public Connection getConnection() throws Exception {
try {
connstr="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=hrms";
strUser="sa";
strPassword="111111";
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
con = DriverManager.getConnection(connstr,strUser,strPassword);
} catch (Exception e) {
System.out.println(e) ;
}
return con;
}
public int Exec(String sql){
int n = 0;
try{
con=getConnection();
stm = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
n = stm.executeUpdate(sql);
}catch(Exception e){
System.out.print(e.toString());
}
return n;
}
public ResultSet getRs(String sql) throws SQLException{
try{
con=getConnection();
stm = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs=stm.executeQuery(sql);
return rs; }
catch(Exception e){
System.out.print(e);
return null;
}
}
public void closeCon()
{
try
{
if (rs!=null)
rs.close();
}
catch(Exception e)
{
e.printStackTrace();
}
try
{
if (stm!=null)
stm.close();
}
catch(Exception e)
{
e.printStackTrace();
}
try
{
if (con!=null)
con.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
(3) 将BaseDAO.java编译为一个类(BaseDAO.class)文件,并把该类(连同所在的包)存放在指定的Tomcat应用程序中的classes文件夹(本案例存放位置为D:\Tomcat6.0\webapps\ch6\WEB-INF\classes)。
(4) 将案例3中的登录页面复制到ch6目录下,并重命名为login2.htm,同时将第14行代码修改为如下所示代码,即指定本页面的表单由Sample6_4.jsp负责处理。
<html>
<head>
<title>用户登录</title>
<script type="text/javascript">
function check(){
var username = document.all('username').value;
var password = document.all('password').value;
if(username.length<1){
alert("姓名不能为空!");
return false;
}else if(password.length<1){
alert("密码不能为空!");
return false;
}
}
</SCRIPT>
</head>
<body>
<form method="post" action="Sample6_4.jsp" onsubmit="return check()">
<p>
用户名:
<input type="text" name="username" size="20">
</p>
<p>
密 码:
<input type="password" name="password" size="20">
</p>
<p>
<input type="submit" value="登录" name="ok">
<input type="reset" value="取消" name="cancel">
</p>
</form>
</body>
</html>
(5) 在ch6目录中编写实现用户用户登录验证的JSP页面Sample6_4.jsp。
(6)启动Tomcat服务器,在浏览器的地址栏中输入“http://localhost:8080/ch6/login2.htm”,验证程序是否能正确执行。