我架设了 TOMCAT服务器,就是 WINXP+TOMCAT5.5,ORACLE服务器在另一台主机上面,
请问我要如何能够实现JSP连接到数据库上呢?
就是页面上查询按钮~! 点击后 直接执行JSP里面的 SELECT * FROM SFIS.1H
并把结果返回到网页上面~!
我弄和很久都没弄好,是在TOMCAT上面出了问题还是JSP出了问题~!还是服务器架设的问题?谁有详细的解决方法 能给说一下么~!我TOMCAT的默认主页可以在别的机器上访问,但是执行我写的JSP的时候就给出异常来~!
如下:
type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: Exception in JSP: /fy.jsp:1916: 
17: 
18: Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
19:   Connection sqlCon = DriverManager.getConnection(url,"sfsh1","sfsh1");
20:        
21:   Statement sqlStmt =sqlCon.createStatement(); 
22: 
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:504)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause javax.servlet.ServletException: Io 异常: The Network Adapter could not establish the connection
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:858)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:791)
org.apache.jsp.fy_jsp._jspService(fy_jsp.java:221)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause java.sql.SQLException: Io 异常: The Network Adapter could not establish the connection
oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:168)
oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:210)
oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:323)
oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:263)
oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:365)
oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:260)
java.sql.DriverManager.getConnection(Unknown Source)
java.sql.DriverManager.getConnection(Unknown Source)
org.apache.jsp.fy_jsp._jspService(fy_jsp.java:62)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

解决方案 »

  1.   

    这是网络问题哦,可能ORACLE有什么服务没有开,可能防火墙限制了端口!
      

  2.   

    网络适配器不能建立这个连接。
    你先看看URL中ORACLE的SID是否拼写错误,或者看看Oracle的适配器是否启动和服务是否启动
      

  3.   

    楼上的各位老大! 我的ORACLE服务器SID是什么我还真的不清楚
    只知道IP地址。服务名,和NET服务名。SID这个要怎么查啊!我是不是JSP的TOMCAT服务器和ORACLE连接配置出了问题???这个要怎么做!
    SQLPLUS连接Oracle是没问题的,ORACLE服务器是没问题的!问题在JSP服务器上!
      

  4.   

    oracle 的SID 就是数据库名,在安装的时候可以更改,默认是orcl
      

  5.   

    看了SHaird的笔记中TOMCAT和ORACLE的解决方法已经把问题解决了!
    请问分页要怎么做,我一个页面取出来了N个数据,以至于我512的内存提示虚拟内存不足,估计有个很多万条记录吧!
    还有我在写String sql="select * from sfism4.r107 where mo_number='11' and group_name='11' order by group_name";的时候JSP就提示出错了,在JSP内写多行SQL语句的时候要怎么写啊???
    这个是我的代码,可以执行的。就是没有几个GB内存的机器打开了会死的很惨~!
    <%@ page info="database handler"%><%@ page import="java.io.*"%> 
    <%@ page import="java.util.*"%> <%@ page import="java.sql.*"%><%@ page import="javax.servlet.*"%> <%@ page import="javax.servlet.http.*"%>  <html><body>
    <p>
      <%Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");  
    String url="jdbc:odbc:sfsh1DB";
    String user="sfis1"; 
    String password="sfis1"; 
    Connection conn= DriverManager.getConnection(url,user,password); 
    Statement stmt=stmt = conn.createStatement(); 
     String sql="select * from sfism4.r107";
     
     ResultSet rs=stmt.executeQuery(sql);while(rs.next()){%>
     
       <br>
       </br>
     </p>
    <table width="887" border="0">
      <tr>
        <td><%=rs.getString(1)%></td>
        <td><%=rs.getString(2)%></td>
        <td><%=rs.getString(3)%></td>
        <td><%=rs.getString(4)%></td>
        <td><%=rs.getString(5)%></td>
        <td><%=rs.getString(6)%></td>
      </tr>
      <tr>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
      </tr>
    </table>
    <p>
      <%rs.close();stmt.close();conn.close();%>
       <%}%>
    </p>
    </body>
     </html>
      

  6.   

    页现在是分了,但是 下一页前面的链接是 怎么写的请帮下忙?
    <%@ page contentType="text/html;charset=gb2312"%>
    <% 
    //变量声明 
    java.sql.Connection sqlCon; //数据库连接对象 
    java.sql.Statement sqlStmt; //SQL语句对象 
    java.sql.ResultSet sqlRst; //结果集对象 
    java.lang.String strCon; //数据库连接字符串 
    java.lang.String strSQL; //SQL语句 
    int intPageSize; //一页显示的记录数
    int intRowCount; //记录总数 
    int intPageCount; //总页数 
    int intPage; //待显示页码 
    java.lang.String strPage; 
    int i,j,k; //设置一页显示的记录数 
    intPageSize = 10; //取得待显示页码 
    strPage = request.getParameter("page"); 
    if(strPage==null){
    //表明在QueryString中没有page这一个参数,此时显示第一页数据 
    intPage = 1; 
    } else{
    //将字符串转换成整型 
    intPage = java.lang.Integer.parseInt(strPage); 
    if(intPage<1) intPage = 1; }Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");  
    String url="jdbc:odbc:sfsh1DB";
    //设置数据库连接字符串 
    strCon = "jdbc:odbc:sfsh1DB";
    //连接数据库 
    sqlCon = java.sql.DriverManager.getConnection(url,"sfis1","sfis1"); 
    //创建SQL语句对象 
    sqlStmt = sqlCon.createStatement(); 
    //获取记录总数 
    strSQL = "select count(*) from sfism4.r105"; 
    sqlRst = sqlStmt.executeQuery(strSQL); sqlRst.next(); //记录集刚打开的时候,指针位于第一条记录之前 
    intRowCount = sqlRst.getInt(1); 
    sqlRst.close(); //关闭结果集 //记算总页数 
    intPageCount = (intRowCount+intPageSize-1) / intPageSize; 
    //调整待显示的页码 if(intPage>intPageCount) intPage = intPageCount; 
    //设置获取数据SQL语句 
    strSQL = "select * from sfism4.r105"; 
    //执行SQL语句并取得结果集 
    sqlRst = sqlStmt.executeQuery(strSQL);
    //将记录指针定位到待显示页的第一条记录上 
    i = (intPage-1) * intPageSize; 
    for(j=0;j<i;j++) sqlRst.next(); %> <html> 
    <head>
    <title>JSP数据库操作例程 - 数据分页显示 - JDBC-ODBC</title>
    <style type="text/css">
    <!--
    td,body {
    font-family: "Arial", "Helvetica", "sans-serif";
    font-size: 14px;
    }
    -->
    </style></head> <body>
    <table width=770 border="1" align="center" cellpadding="0" cellspacing="0" bordercolor="#0066CC" style="border-collapse: collapse">
     <% 
    //显示数据 
    i = 0; 
    while(i<intPageSize && sqlRst.next()){ 
    %>
     <tr> 
      <td><%=sqlRst.getString(1)%></td>
      <td><%=sqlRst.getString(2)%></td>
      <td><%=sqlRst.getString(3)%></td>
      <td><%=sqlRst.getString(4)%></td>
     </tr>
     <% i++; } %>
     <tr> 
      <td colspan=4 align=center> 第<%=intPage%>页 共<%=intPageCount%>页 
    <%if(intPage>1){%> <a href="">上一页</a>
    <%
    }
    %>       
    //就是这里,会有出错的提示!//<%if(i<intPageSize){%> <a href="1.jsp?i=<%=intPage+1%>;&sqlCon=<%=sqlCon%>;">下一页</a>
    <%}%>    
    </td>
     </tr>
    </table>
    </body> 
    </html> <% 
    //关闭结果集 
    sqlRst.close(); 
    //关闭SQL语句对象 
    sqlStmt.close(); 
    //关闭数据库
    sqlCon.close();
    %>