欢迎光临
我们一直在努力

Jsp 连接 mySQL、Oracle 数据库备忘(Windows平台)-JSP教程,Jsp/Servlet

建站超值云服务器,限时71元/月

 jsp 环境目前最流行的是 tomcat5.0。tomcat5.0 自己包含一个 web 服务器,如果是测试,就没必要把 tomcat 与 iis 或 apache 集成起来。在 tomcat 自带的 web 服务器下可以进行 jsp 测试。
    安装 tomcat5.0 前需要安装 jdk(如果是 windows server 2003 就必须安装 jdk,因为 windows server 2003 是不带 jvm 的-windows server 2003 发行时 ms 和 sun 刚好闹别扭呢)。安装完后,要设置几个环境变量:

    java_home = e:\j2sdk1.4.2_04
    classpath = e:\j2sdk1.4.2_04\lib;e:\j2sdk1.4.2_04\lib\tools.jar
    path 中加 .;e:\j2sdk1.4.2_04\bin;
    catalina_home = e:\tomcat 5.0
    tomcat_home = e:\tomcat 5.0

    解释如下:我的 jdk版本是 1.4.2,安装在 e:\j2sdk1.4.2_04 文件夹下。

    环境变量 java_home 和 catalina_home 是一定要加的(至少参考资料都是这么说的)。classpath 也说要加,但是我没加似乎也没什么影响。path 中加 “.;e:\j2sdk1.4.2_04\bin;”也一样,我不加 jsp 也能运行起来,但是在 dos 窗口下手工编译 .java 类到 .class 文件有影响,因为找不到 javac.exe 编译命令文件。至于 path 中加的那个点“.”,我原来在 resin 下是需要的,在 tomcat 下还没确定它是不是必须的。
    大家还发现 catalina_home 和 tomcat_home 的值是一样的,我估计 tomcat_home 是 tomcat 的旧版本使用的,现在用的都是 catalina_home。不过这2个好象并不是不相容的,都加上,或者加其中任意一个,jsp 都不手影响。不过我建议用一个 catalina_home 就算了。

    tomcat5.0 设置虚拟路径比较方便了,因为可以在 web 环境下管理。http://[url]:8080/admin 可以进入管理界面(管理员admin密码在 tomcat 安装过程中可以设置),在 tomcat server-service (catalina)-host (localhost)下可以添加 context,类似于 iis
里的虚拟路径:document base 指的是从实际 e:\tomcat 5.0\webapps\root 为起点的文件路径,path 指的是从虚拟“/”开始的虚拟路径名,如“/mytest”。这里 tomcat 好象设计的有点不完善,只要加了新的 context,保存,再点“commit changes”按钮,再点context 去看时,界面就会退到登录界面,但是有时页面就出错了,必须再次手工进入http://[url]:8080/admin。加了 context,apache tomcat 服务必须“关闭/启动”一下(在windows管理控制台的服务里)。有资料说在 http://localhost:8088/manager 管理界面下可以 start 和 stop 来重新启动对应的 context,但是我 stop 后就是 start 不起来。点了一下 undeploy,就把 context 删除了,注意:把 context 对应的物理文件夹也给删除了!!就是说你做了个应用,移到这里,如果不小心,就给删了-比病毒还厉害。小心啊!!

    下来我说一下 jsp 连接 mysql 的问题。如果用 jsp 去连接 access,我感觉就是把裙子穿在男人身上。access 和 asp 才是天造地设的一对。jsp 连接 mysql 或者 oracle 才算合情合理。原因我认为是:用 jsp 做开发,其优势就是跨 os 平台,如果用 jsp + access 组合,跨平台的优势就没有了。asp 和 access 已经工作的很好了,也简单,你何必要别扭的去用 jsp 开发?当然,如果您对 jsp 非常熟悉(或者对 asp 非常不熟悉),或者非常喜欢 jsp(或者非常不喜欢 asp),或者您有大量的数据积累在 access 里,您要用 jsp+access 在技术上也不是不行的。
    mysql 的安装非常简单,基本安装完毕都能正常使用,建立数据库,设置用户,都可以在 mysql 的环境下完成。就是对用惯了 gui 界面的人,感觉不顺手。网上能下载到一些 mysql 的图形用户界面的管理工具,但好象不是免费的。

    用 jsp 连接 mysql 数据库,从表里取数据,写一段代码测试一下:

程序代码1:
<!–首先导入一些必要的packages–>
<%@ page import=”java.io.*”%>
<%@ page import=”java.util.*”%>
<!–告诉编译器使用sql包–>
<%@ page import=”java.sql.*”%>
<!–设置中文输出–>
<%@ page contenttype=”text/html; charset=gb2312″ %>

<html>
<head>
  <title>mysql test</title>
</head>
<body>
<%
  connection con;
  statement stmt;
  resultset rs;

  //加载驱动程序,下面的代码为加载mysql驱动程序
  class.forname(“com.mysql.jdbc.driver”);

  //注册mysql驱动程序
  drivermanager.registerdriver(new com.mysql.jdbc.driver());

  //用适当的驱动程序连接到数据库
  //string dburl = “jdbc:mysql://localhost:3306/mysql?useunicode=true&characterencoding=gb2312”;
  //string dbuser = “root”;  //用户名
  //string dbpwd = “abcd1001”;  //密码
  //建立数据库连接
  //con = java.sql.drivermanager.getconnection(dburl, dbuser, dbpwd);

  string dburl =”jdbc:mysql://localhost:3306/mysql?user=root&password=abcd1001&useunicode=true&characterencoding=gb2312″;
  con = drivermanager.getconnection(dburl);

  //创建一个jdbc声明
  stmt = con.createstatement();

  //增加新记录
  //stmt.executeupdate(“insert into books (id,name,title,price) values (999,tom,tomcat bible,44.5)”);

  //查询记录
  rs = stmt.executequery(“select * from user”);

  //输出查询结果
  out.println(“<table border=1 width=400>”);
  while (rs.next())
  {
  string col1 = rs.getstring(1);
  string col2 = rs.getstring(2);
  string col3 = rs.getstring(3);
  string col4 = rs.getstring(4);
  //打印所显示的数据
  out.println(“<tr><td>”+col1+”</td><td>”+col2+”</td><td>”+col3+”</td><td>”+col4+”</td></tr>”);
  }
  out.println(“</table>”);

  //关闭数据库连结
  rs.close();
  stmt.close();
  con.close();
%>
</body>
</html>

程序代码2:
<%@ page contenttype=”text/html;charset=gb2312″%>
<%@ page import=”java.sql.*”%>
<html>
<body>
<%
class.forname(“org.gjt.mm.mysql.driver”).newinstance();
string url =”jdbc:mysql://localhost/chclyb?user=root&password=abcd1001&useunicode=true&characterencoding=8859_1″;
//testdb为你的数据库名
connection conn= drivermanager.getconnection(url);
statement stmt=conn.createstatement(resultset.type_scroll_sensitive,resultset.concur_updatable);
string sql=”select * from test”;
resultset rs=stmt.executequery(sql);
while(rs.next()) {%>
第一个字段内容为:<%=rs.getstring(1)%>
第二个字段内容为:<%=rs.getstring(2)%><br>
<%}%>
<%out.print(“数据库操作成功,恭喜你”);%>
<%rs.close();
stmt.close();
conn.close();
%>
</body>
</html>

    我的以上 2 段代码都能工作。注意以上2段代码的 class.forname(…) 部分的不同:

    class.forname(“com.mysql.jdbc.driver”);  //在程序代码1中
    class.forname(“org.gjt.mm.mysql.driver”).newinstance();  //在程序代码2中

    程序代码 2 中的代码是为了兼容 mysql 的老版本而保留的,现在都用 class.forname(“com.mysql.jdbc.driver”); 驱动了。
    以上的代码拷贝到 tomcat 的虚拟路径下能成功执行吗?恐怕不行。因为还有个重要的事情没有做:需要给 tomcat5.0 安装 mysql 的 jdbc 驱动程序!这个问题,网上的大多数文章都没讲,给贴一段连接 mysql 的代码,就让我们去连接数据库了,连不上的!
    mysql 的驱动需要从网上下载,下载完毕,拷贝到 e:\tomcat 5.0\common\lib 路径下(我下载下来文件名是mysql-connector-java-3.2.0-alpha-bin.jar),把 tomcat 服务来个stop/start 安装就结束了。文件名可以改的,不影响使用,因为这是个压缩包,tomcat 能自动认识到包里的内容,并把有关类注册进来。前面说的 class.forname(…) 部分的不同可以在包里找到答案,因为包里正有 com/mysql/jdbc/driver 和 org/gjt/mm/mysql/driver 2 个路径,下面放的类文件是一样的。

    用 jsp 连接 oracle 数据库测试,就好说了,但是同样必须在 e:\tomcat 5.0\common\lib 路径下拷贝和注册 oracle 的 jdbc 驱动,这个驱动文件没必要在网上四处打听,显得很菜的样子(我当初就是这样!),这个文件在 oracle 的 e:\oracle\ora90\jdbc\lib 路径下,文件名是 classes12.jar。我的示例代码如下:

程序代码3:

<%@ page contenttype=”text/html;charset=gb2312″%>
<%@ page import=”java.sql.*”%>
<html>
<body>
<%
  class.forname(“oracle.jdbc.driver.oracledriver”);   //.newinstance();
  string url=”jdbc:oracle:thin:@10.0.1.1:1521:mydb”; //mydb为数据库的sid,10.0.1.1 为 数据库服务器 ip
  string user=”system”;
  string password=”abcd1001″;
  connection conn= drivermanager.getconnection(url, user, password);
  statement stmt=conn.createstatement(resultset.type_scroll_sensitive,resultset.concur_updatable);
  string sql=”select * from test”;  //test 是表名,要先建立这个表,再送几条记录
  resultset rs=stmt.executequery(sql);
  while(rs.next())
  {
%>
    第一个字段内容为:<%=rs.getstring(1)%>
    第二个字段内容为:<%=rs.getstring(2)%> <br>
<%
  }
  out.print(“数据库操作成功,恭喜。”);

  rs.close();
  stmt.close();
  conn.close();
%>
</body>
</html>

    关于 oracle 数据库:我安装的是 oracle9i 企业版(windows server 2003 下),安装完毕后,oracle 将占用 80 端口运行自带的 apache1.3 web服务器,还占用 8080 端口运行 tnslsnr 服务(tnslsnr.exe文件在 x:\oracle\ora90\bin 下),提供一些 log 及文档。所以建议安装 oracle 的机器就不要安装 iis 了,如果 iis 先启动起来,oracle 的 http 服务就不能启动了。也不能占用 8080 端口。问题是如果还安装 tomcat,tomcat 默认正好用的是 8080 端口,所以安装 tomcat 时最好把端口设成别的值,如 8088。
    oracle 里建立表,必须先建立表空间,还可以加一个数据文件(也可以不加,因为建立表空间时默认已经建了一个数据文件。以后可以视需要再添加)。再建立一个用户(以后的“方案”名和用户名一样)。建立表时,要选择表空间和方案名,最好把表建立在对应的方案下,把他们对应起来,以后好管理。如果把表建立在别的“方案”下,用 sql*plus 语句访问时要用 [方案].[表名]的格式。

    稀稀拉拉说了这么多,是我的一些笔记类的东西。有些东西真的不太懂的,因为刚刚接触了一些非 microsoft 的东西。希望高手指出我说的和理解不对的地方。新手也不要完全接收我的东西,多想一下,看在您的环境下,我说的能不能调试成功。

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » Jsp 连接 mySQL、Oracle 数据库备忘(Windows平台)-JSP教程,Jsp/Servlet
分享到: 更多 (0)