回 帖 发 新 帖 刷新版面

主题:[讨论]JSP tomcat MSSQL 问题(急,先谢谢了)

我准备做一个系统,当我做安装测试时,数据库不能连接.
在之前,我测试了JDK, tomcat都通过了,同时我也安装了MSSQL的驱动,
我的测试程序是在网上找的,当然我不明白用户,密码要怎么设置,同时也不知道在驱动程序下的三个文件为什么要放到tomcat……下,更晕的是,我不知道我要连接上数据库学要做什么准备工作。
   请各位高手指点一下,不胜感激。

回复列表 (共9个回复)

沙发

另外我的JDK TOMCAT 的配置如下:
第一步:----安装J2SDK:

      到SUN官方站点(http://java.sun.com)下载J2SDK的安装文件:j2sdk-1_4_2_04-windows-i586-p.exe,下载之后
      安装好J2SDK;
      安装完之后,设置环境变量:我的电脑---属性---高级---环境变量;
      选择---系统变量(S):
         设置JAVA_HOME环境变量:
             单击---新建,在变量名中输入:JAVA_HOME
                          在变量值中输入:D:\Java
                          (假设J2SDK安装在目录D:\Java下,反正就是J2SDK的安装目录。)
             然后---确定,到此已经设置好JAVA_HOME环境变量。
         设置CLASSPATH环境变量:
             单击---新建,在变量名中输入:CLASSPATH
                          在变量值中输入:D:\Java\bin;.;D:\Java\lib;D:\Java\lib\dt.jar;D:\Java\lib\tools.jar
                          (中间的点号“.”和分号“;”必不可少。)
             然后---确定,到此已经设置好CLASSPATH环境变量。
         设置PATH环境变量:
             单击---新建,在变量名中输入:PATH
                          在变量值中输入:D:\Java;.;D:\Java\bin
                          (中间的点号“.”和分号“;”必不可少。)
             然后---确定,到此已经设置好JAVA_HOME环境变量。
      三个环境变量设置好后,写一个简单的java程序来测试J2SDK是否已安装成功:
         在D:\下新建一个目录test;然后写如下程序:
              public class Test { 
                   public static void main(String args[]) { 
                        System.out.println("This is a test program."); 
                   } 
              }
         将上面的这段程序保存为文件名为Test.java的文件,保存在目录D:\test下。
         然后打开命令提示符窗口,cd到你的test目录,然后键入下面的命令  
              javac Test.java 
              java Test 
         此时如果看到打印出来This is a test program.的话说明安装成功了,
         如果没有打印出这句话,你需要仔细检查一下你的配置情况。 

         如果上面的J2SDK安装成功的话,接下来继续安装Tomcat:

第二步:----安装Tomcat:

      到tomcat官方站点(http://www.apache.org/dist/jakarta/tomcat-4/)下载tomcat:
      jakarta-tomcat-4.1.30.exe,下载之后安装。(比如安装在D:\Tomcat下。)
      安装完之后,设置环境变量:我的电脑---属性---高级---环境变量;
      选择---系统变量(S):
         设置CATALINA_HOME环境变量:
             单击---新建,在变量名中输入:CATALINA_HOME
                          在变量值中输入:D:\Tomcat
             然后---确定,到此已经设置好CATALINA_HOME环境变量。
         设置CATALINA_BASE环境变量:
             单击---新建,在变量名中输入:CATALINA_BASE
                          在变量值中输入:D:\Tomcat
             然后---确定,到此已经设置好CATALINA_BASE环境变量。
      然后修改环境变量中的CLASSPATH,把Tomat安装目录下的common\lib下的servlet.jar追加到CLASSPATH中去,
      修改后的CLASSPATH如下: 
      CLASSPATH=D:\Java\bin;.;D:\Java\lib;D:\Java\lib\dt.jar;D:\Java\lib\tools.jar;D:\Tomcat\common\lib\servlet.jar 
      接着可以启动tomcat,在IE中访问http://localhost:8080,如果看到tomcat的欢迎页面的话说明安装成功了。

      如果上面的tomcat安装成功的话,接下来继续安装JSP访问SQL Server 2000的驱动程序:

第三步:----安装JSP访问SQL Server 2000的驱动程序:

      从微软的网站上下载驱动程序:SQL Server 2000 For JDBC 驱动程序,在Google中随便搜索就有。
      然后将它安装好。(比如安装目录是D:\SQLDriverForJDBC。)
      然后必须将安装目录中的lib目录下三个jar文件:
      msbase.jar, mssqlserver.jar, msutil.jar拷贝到Tomcat目录下common\lib目录下,之后,
      修改环境变量中的CLASSPATH,
      把SQL Server 2000 For JDBC 驱动程序安装目录下的
         D:\SQLDriverForJDBC\lib\msbase.jar;D:\SQLDriverForJDBC\lib\mssqlserver.jar;D:\SQLDriverForJDBC\msutil.jar
      追加到CLASSPATH中去,
      修改后的CLASSPATH如下: 
      CLASSPATH=D:\Java\bin;.;D:\Java\lib;D:\Java\lib\dt.jar;D:\Java\lib\tools.jar;D:\LubeeTomcat\common\lib\servlet.jar;D:\SQLDriverForJDBC\lib\msbase.jar;D:\SQLDriverForJDBC\lib\mssqlserver.jar;D:\SQLDriverForJDBC\msutil.jar

      必须重新启动Tomcat!
      这样做的目的是,jsp页面在编译过程中不会出现找不到sql server driver类库的问题

板凳

我的测试程序是:
<%@ page contentType="text/html;charset=gb2312" language="java"
  import="java.sql.*,javax.sql.*,javax.naming.*,javax.naming.*" errorpage="" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=gb2312">
<title>连接池连接MS SQL SERVER 2000</title>
</head>
<body>
<%
  out.print("使用连接池连接MS SQL SERVER 2000<br>");
  out.println("<br>");
  Context ctx=null;
  DataSource ds=null;
  Statement stmt=null;
  ResultSet rs=null;
  Connection con=null;
  ResultSetMetaData md=null;
  try{
   ctx=new InitialContext();
   ds=(DataSource)ctx.lookup("java:comp/env/jdbc/first");
   con=ds.getConnection();
   stmt=con.createStatement();
   rs=stmt.executeQuery("select * from student");
   md=rs.getMetaData();
   out.print(md.getColumnLabel(1)+" ");
   out.print(md.getColumnLabel(2)+"<br>");
   while(rs.next()){
      out.print("rs.getString(1)+" ");
      out.print("rs.getString(2)+"<br>");
     }
   }catch(Exception e){
     out.print(e);
   }finally{
      if(rs!=null)rs.close();
      if(stmt!=null)stmt.close();
      if(con!=null)con.close();
  }
%>
</body>
</html>

3 楼

运行后报了很多错
错误如下:
type Exception report

message 

description The server encountered an internal error () that prevented it from fulfilling this request.

exception 

org.apache.jasper.JasperException: /sss.jsp(1,1) Page directive has invalid attribute: errorpage
    org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:39)
    org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:409)
    org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:200)
    org.apache.jasper.compiler.JspUtil.checkAttributes(JspUtil.java:304)
    org.apache.jasper.compiler.Validator$DirectiveVisitor.visit(Validator.java:100)
    org.apache.jasper.compiler.Node$PageDirective.accept(Node.java:549)
    org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163)
    org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2213)
    org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2219)
    org.apache.jasper.compiler.Node$Root.accept(Node.java:456)
    org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163)
    org.apache.jasper.compiler.Validator.validate(Validator.java:1438)
    org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:214)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:495)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:476)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:464)
    org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:511)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:295)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


note The full stack trace of the root cause is available in the Apache Tomcat/5.0.30 logs.


--------------------------------------------------------------------------------

Apache Tomcat/5.0.30

4 楼

而我在JB下运行,运行生成的页面是:
使用连接池连接MS SQL SERVER 2000
javax.naming.NameNotFoundException: Name jdbc is not bound in this Context 

哪一位高手知道是怎么一回事的话,请回帖,不胜感激。

5 楼

我后来又做了一个运行程序,这个程序可以在JB下运行通过,并得到正确结果。
程序如下:
<%@ page contentType="text/html;charset=gb2312" import="java.sql.*" %>
<html>
<head>
<meta http-equiv="Content_Type" content="text/html;charset=gb2312">
<title>数据库连接</title>
</head>
<body>
<%
   String sql="select * from student";
   String drivername="sun.jdbc.odbc.JdbcOdbcDriver";
   String url="jdbc:odbc:first";
   Connection con=null;
   Statement state=null;
   ResultSet rs=null;
   out.print("JDBC_ODBC桥接器连接 MSSQL SERVER 2000<br>");
   out.println("<br>");
   try{
        Class.forName(drivername);
        con=DriverManager.getConnection(url);
        state=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
        rs=state.executeQuery(sql);
        while(rs.next()){
           String id=rs.getString(1);
           String username=rs.getString(2);
           out.print(id+" ");
           out.print(username+"<br>");
           }
        }catch(Exception e){
           out.print("Exception>>"+e.getMessage());
        }
          if(rs!=null)rs.close();
          if(state!=null)state.close();
          if(con!=null)con.close();
      
%> 
</body>     
</html>

但这个程序在我上面配置的环境下运行不了。
报得错问是:

JDBC_ODBC桥接器连接 MSSQL SERVER 2000

Exception>>[Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序 

请各位大虾指点一下,急用。

6 楼


看贴的人那么多,怎么就没有一个回贴的呢,
请各位大虾指点一下。
先谢了。

7 楼

type Exception report

message 

description The server encountered an internal error () that prevented it from fulfilling this request.

exception 

org.apache.jasper.JasperException: /sss.jsp(1,1) Page directive has invalid attribute: errorpage
    

这句错误意思是,你的 errorpage 值为空



JDBC_ODBC桥接器连接 MSSQL SERVER 2000

Exception>>[Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序 


这个错,不看就知道,你数据源没有配

8 楼

很是谢谢你,
  可我同一个程序在JB下运行通过了啊,
  如果我的数据源有问题的话,
  怎么会在JB下运行通过呢???

9 楼


 我想可能错在JDBC驱动上,我今天看了一本书,书上说,JDK自带JDBC驱动。
 我有点头晕了,不知道是真是假,还有你能告诉我怎么配那个**.xml文件啊

我来回复

您尚未登录,请登录后再回复。点此登录或注册