下面我们通过另一个简单的 Servlet 小程序来向读者介绍如何在 Solaris 下部署基于数据库的 Servlet ,为了简便起见笔者在这里使用的数据库是 Java JDK 中自带的 Derby 数据库,读者可根据自己的需求安装其他数据库进行测试。
( 1 )使用 Java JDK 自带的 Derby 数据库,我们需要先对 Solaris 的环境变量进行设置,同样打开系统根目录下“ etc ”文件夹下的“ profile ”文件,在其中添加如下内容
DERBY_HOME=/jdk6/db
export DERBY_HOME
在“ CLASSPATH ”中添加如下内容,在这里同样用“ : ”与前后内容隔开
$DERBY_HOME/lib/derby.jar:$DERBY_HOME/lib/derbytools.jar
配置完后如图 2-5-1 所示
图 2-5-1
( 2 )保存关闭后,重新启动计算机,我们可以通过在“终端”键入如下命令,来验证我的对 Derby 的设置是否成功
java org.apache.derby.tools.sysinfo
如果我们的设置没有问题,“终端”窗口将会显示 Java 系统的很多信息,如图 2-5-2 所示
图 2-5-2
( 3 )接下来我们使用管理工具 ij 来对 Derby 数据库进行操作
ij 是 Derby 自带的一个功能强大的数据库管理工具,可以进行很多数据库操作,完成上一步的操作后,就可以启动并使用 ij 了。在“终端”窗口键入如下命令
java org.apache.derby.tools.ij
命令执行后如图 2-5-3 所示
图 2-5-3
从图中可以看出 ij 工具成功启动,并出现了系统提示符“ ij> ”。
( 4 )使用 ij 创建以及连接指定的数据库,其命令语法如下啊
connect 'jdbc:< 数据库路径 >;create=true';
这里“数据库路径”指的是指定数据库在磁盘上存放的位置,笔者在这里将数据库建在了 Solaris 系统根目录下,并命名为“ db ”,其命令如下
connect 'jdbc:/db;create=true';
命令成功执行后将在系统根目录下生成一个“ db ”文件夹如图 2-5-4 所示
图 2-5-4
( 5 )下面我们通过如下命令来对数据库进行操作,我们将新建一个“ person ”表并向表中插入一条数据,读者需要注意的是,连接到数据库后一定要使用“ disconnect ”命令关闭数据库的连接,否则会影响其他应用对数据库的使用。
create table person (name varchar(20),upassword varcher(20));
insert into person values(‘test1’,’aaaa’);
selet * from person;
commit;
disconnect;
exit;
运行结果如图 2-5-5 所示,这样我们就成功的建立了一个“ person ”表,并成功插入了一条数据。
图 2-5-5
( 6 )在“ tomcat6 ”目录下的“ webapps ”中新建一个名为“ DerbyTest ”的文件夹如图 2-5-6 所示
图 2-5-6
( 7 )在“ DerbyTest ”文件夹下新建一个“ WEB-INF ”文件夹,再并在此文件夹下新建一个“ classes ”文件夹
( 8 )在“ classes ”文件夹下开发我们程序所需的 Java 代码,首先开发 PersonBean.java 其代码如下
package xsz;
import java.sql.*;
import javax.sql.DataSource;
import javax.naming.*;
public class PersonBean{
String uid ;
String name;
String upassword;
Connection con;
PreparedStatement pstmt;
final String sql = "SELECT name FROM person WHERE name=? and upassword=?";
public PersonBean(){
try{
Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
// 获取指定数据库的连接
con=DriverManager.getConnection("jdbc:derby:/db", "", "");
pstmt = con.prepareStatement(sql);
System.out.println(" 链接!!! ");
} catch(Exception e ){e.printStackTrace();}
}
public static void main(String args[]){new PersonBean();}
public void setName(String name){this.name = name;}
public String getName(){return name;}
public void setUpassword(String upassword){this.upassword = upassword;}
public String getUpassword(){return upassword;}
// 验证用户名和密码
public Boolean isvalidate(){
Boolean flag = false;
// 声明一个结果集对象
ResultSet rs = null;
try{
pstmt.setString(1,name);
pstmt.setString(2,upassword);
// 查询记录
rs = pstmt.executeQuery();
// 判断是否有记录
if(rs.next()){flag = true;} // 如果有记录,则用户是合法的
}catch(Exception ex){ex.printStackTrace();}
finally{
try{
if(rs != null){
rs.close();
rs = null;
}
}catch(Exception ex){ex.printStackTrace();}
}
return flag;
}}
( 9 )再在“ classes ”文件夹下开发我们程序所需的另一个 Java 代码, CenterServlet.java 其完整代码如下
package xsz;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
public class CenterServlet extends HttpServlet{
PersonBean person;
public void init(){person=new PersonBean();}
public void doPost(HttpServletRequest req,HttpServletResponse resp)
throws ServletException,IOException{
List errors = new ArrayList();
String action = req.getParameter("action");
if("login".equals(action)){
String name =req.getParameter("name");
String upassword =req.getParameter("upassword");
person.setName(name);
person.setUpassword(upassword);
if(person.isvalidate()){
// 用户 ID ,密码合法
req.setAttribute("name",name);
forward(req,resp,"login_success.jsp");
}else{// 用户 ID 、密码非法
errors.add(" 错误的用户 ID 及密码 !");
req.setAttribute("errors",errors);
forward(req,resp,"login.jsp");
}}
}
public void doGet(HttpServletRequest req,HttpServletResponse resp)
throws ServletException,IOException
{doPost(req,resp) ;}
public void forward(HttpServletRequest req,HttpServletResponse resp,String url)
throws ServletException,IOException
{ req.getRequestDispatcher(url).forward(req,resp);}
}
( 10 )完成以上两个业务代码的开发后,我们接下来对其进行编译 , 在“终端”窗口中使用如下命令切换到当前 Java 文件所在目录
cd \tomcat6
cd \webapps
cd \DerbyTest
cd \WEB-INF
cd \classes
( 11 )使用如下命令,同时对“ classes ”目录下的两个 java 文件进行编译
javac *.java
命令执行后如图 2-5-7 所示
图 2-5-7
(12) 成功编译后,我们回到“ classes ”目录下会看见两个新生成的“ .class ”文件分别是“ CenterServlet.clsss ”和“ PersonBean.class ”如图 2-5-8 所示
图 2-5-8
这时在“ classes ”目录下新建一个“ xsz ”的文件夹,这是两个 Java 程序所需要的包名,读者可根据自己所起的包名来命名此文件夹,但读者需要注意的是自己开发时 Java 程序中的包名一定要与此文件夹名一致,否则,程序将无法正常运行。
( 13 )接下来,我们在“ WEB-INF ”目录下创建一个“ web.xml ”文件,其代码如下
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<display-name>Tomcat Documentation</display-name>
<description>Tomcat Do