网页能够正常打开,也没有报错误,因为加了if(rs!=null)。可是网页打开后里面原本该出现的内容都没有出现,而且数据库连接正常,却无法登入。求救!!!代码如下。<%@ page contentType="text/html; charset=gb2312" %>
<%@ page import="java.sql.*"%> 
<jsp:useBean id="con" class="com.bwm.db.Conn" scope="page"/>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link href="css/default.css" rel="stylesheet" type="text/css">
</head>
<body background="images/bg.jpg">
<table width="100%"  border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td height="27" colspan="3" align="right"><div id="link"></div></td>
  </tr>
  <tr>
    <td width="1" height="36" background="images/gbnavl.gif"></td>
    <td width="99%" background="images/gbnavm.gif"><div id="link1"><a href="student/">学生注册</a> <a href="company/">企业注册</a></div></td>
    <td width="1" background="images/gbnavr.gif"></td>
  </tr>
</table>
<table width="100%"  border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td height="50"  bgcolor="#FFFFFF"><div id="top"><img src="images/top.gif" width="340" height="38"></div></td>
  </tr>
</table>
<table width="100%" height="400"  border="0" cellpadding="0" cellspacing="0">
  <tr>
    <td valign="top" background="images/index_bg.jpg" bgcolor="#FFFFFF"><table width="100%"  border="0" cellspacing="0" cellpadding="0">
      <tr align="center" >
        <td width="50%" height="22"><div id="font1">学生求职</div></td>
        <td width="50%" height="22"><div id="font1">企业招聘</div></td>
      </tr>
      <tr>
        <td valign="top"><table width="100%"  border="0" cellspacing="0" cellpadding="0">
<%
ResultSet rs=con.getRs("SELECT a.jobid,b.name,b.school,b.specialty,b.knowledge,a.job,a.emolument FROM tb_sjob AS a,tb_student AS b WHERE a.sname=b.sname and getdate()<=atime ORDER BY ptime DESC");
        if(rs!=null)
{
        while(rs.next()){
%>
      <tr>
        <td valign="top"><font id="reg">&lt;&lt;</font><a target="_blank" href="view.jsp?sid=<%=rs.getString(1)%>">[<%=rs.getString(2)%>]毕业于[<%=rs.getString(3)%>,<%=rs.getString(4)%>,<%=rs.getString(5)%>],欲求[<%=rs.getString(6)%>]职位,要求薪水[<%=rs.getString(7)%>]。</a>&nbsp;</td>
      </tr>
<%
        }
}
        con.close();

%>
      <tr>
        <td>&nbsp;</td>
      </tr>
    </table></td>
        <td valign="top"><table width="100%"  border="0" cellspacing="0" cellpadding="0">
<%
rs=con.getRs("SELECT a.jobid,b.name,b.manage,a.job,a.emolument FROM  tb_cjob AS a,tb_company AS b WHERE a.cname=b.cname and getdate()<=atime ORDER BY ptime DESC");
        if(rs!=null)
{
        while(rs.next()){
%>
      <tr>
        <td valign="top"><font id="reg">&gt;&gt;</font><a  target="_blank" href="view.jsp?cid=<%=rs.getString(1)%>">[<%=rs.getString(2)%>]主要经营[<%=rs.getString(3)%>],招聘[<%=rs.getString(4)%>]职位,承诺薪水[<%=rs.getString(5)%>]。</a></td>
      </tr>
<%
        }
}
        con.close();
%>

      <tr>
        <td>&nbsp;</td>
      </tr>
    </table></td>
      </tr>
    </table></td>
    <td width="180" rowspan="2" valign="top" bgcolor="#F5f7f7"><table width="100%"  border="0" cellspacing="0" cellpadding="0">
          <tr>
        <td><table width="100%"  border="0" cellspacing="0" cellpadding="0">
          <tr>
            <td height="22" colspan="2" align="center"  background="images/tdbg.jpg"><div id="font1">登录入口</div></td>
          </tr>
          <form name="form1" method="post" action="login.jsp"><tr>
            <td width="37%" height="22" align="center">用户名:</td>
            <td width="63%">
              <input name="username" type="text" size="12">
            </td>
          </tr>
          <tr>
            <td height="22" align="center">密&nbsp;&nbsp;码:</td>
            <td height="22"><input name="password" type="password" size="12"></td>
          </tr>
          <tr align="center">
            <td height="30" colspan="2">
              <input name="select" type="radio" value="student" checked >
              学生
              <input type="radio" name="select" value="company">
              企业</td>
          </tr>
          <tr align="center">
            <td height="30" colspan="2">
              <input type="submit" name="Submit2" value="进入">
              &nbsp;
<input name="Submit" type="reset" value="重置"></td>
          </tr></form>
        </table></td>
      </tr>
<tr>
        <td><table width="100%"  border="0" cellpadding="0" cellspacing="0" background="images/tdbg.jpg" >
          <tr>
            <td height="27"><div id="font1">友情链接</div></td>
          </tr>
<%
rs=con.getRs("SELECT address,name FROM tb_flink");
        if(rs!=null)
{
        while(rs.next()){
%>
          <tr>
            <td height="22"><div id="link2"><a href="<%=rs.getString(1)%>" target="_blank"><%=rs.getString(2)%></a></div></td>
          </tr>
<%
        }
}
        con.close();

%>
        </table></td>
      </tr>
      <tr>
        <td>&nbsp;</td>
      </tr>
    </table></td>
  </tr>
</table>
<table width="100%" height="50"  border="0" cellpadding="0" cellspacing="0">
  <tr>
    <td height="1"bgcolor="#FFFFFF"><hr size="1" color="#CC3300" style="position:absolute;"></td>
  </tr>
  <tr>
    <td bgcolor="#FFFFFF">&nbsp;<a href="mailto:[email protected]">联系本站</a> | <a href="admin/">管理员入口</a> | &copy;2010 大学 </td>
  </tr>
</table>
</body>
</html>whilers.next

解决方案 »

  1.   

    ResultSet rs=con.getRs("SELECT a.jobid,b.name,b.school,b.specialty,b.knowledge,a.job,a.emolument FROM tb_sjob AS a,tb_student AS b WHERE a.sname=b.sname and getdate()<=atime ORDER BY ptime DESC");1.输出rs ,按你的描述应该为NULL,那么检查con.getRs函数内部实现2 确认这里面的sql在你的数据库能不能查到数据2 仅关闭rs,不知道你的Conn的设计,一个页面只需关闭一次
      

  2.   

    不加if(rs!=null)会报错?
    那证明你的rs = null啊
    是不是本来sql语句执行就没有符合条件的结果。然后close操作放在最后一步,
    rs的名字不要重复
      

  3.   


    呃,那如果要把那句SQL语句修改应该怎么修改?  数据库里是都有的啊。 而且如果点注册填完资料后都是可以保存到数据库里的。
      

  4.   


    1.不会
    2.数据库里都是有的
    3.conn在这里。package com.bwm.db;import java.sql.*;/**
     *class explain:Database connection
     *set up name: crazyadept
     *set up time: 11/22/2004
     */
    public class Conn {
        private static Connection con;
        private Statement stmt;
        private ResultSet rs;
        private static final String drivername =
            "com.microsoft.jdbc.sqlserver.SQLServerDriver";
        private static final String url = "jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=db_Job;user=sa;password=;";    /**
         *method explain:   Get Connection DataBase
         *modify time: 12/20/2004
         */
        public static synchronized Connection getCon() throws Exception {
            try {
                Class.forName(drivername);
                con = DriverManager.getConnection(url);
                return con;
            } catch (SQLException e) {
                System.err.println(e.getMessage());
                throw e;
            }
        }    /**
         *output parameter: in order select in SQL
         *modify time: 12/20/2004
         */
        public Statement getStmtread() {
            try {
                con = getCon();
                stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
                                           ResultSet.CONCUR_READ_ONLY);
                return stmt;
            } catch (Exception e) {
                System.err.println(e.getMessage());
                e.printStackTrace();
            }
            return null;
        }    /**
         *output parameter: Data
         *input parameter:  SQL select sentence
         *modify time:      11/29/2004
         */
        public ResultSet getRs(String sql) {
            try {
                stmt = getStmtread();
                rs = stmt.executeQuery(sql);
                return rs;
            } catch (Exception e) {
                System.err.println(e.getMessage());
                e.printStackTrace();
            }
            return null;
        }    /**
         *output parameter: not in order select in str SQL
         *modify time:      11/29/2004
         */
        public Statement getStmt() {
            try {
                con = getCon();
                stmt = con.createStatement();
                return stmt;
            } catch (Exception e) {
                System.err.println(e.getMessage());
                e.printStackTrace();
            }
            return null;
        }    /**
         *method explain:   Close DataBase Connection
         *modify time:      11/29/2004
         */
        public synchronized void close() {
            try {
                if (rs != null) {
                    rs.close();
                    rs = null;
                }
            } catch (Exception e) {
                System.err.println(e.getMessage());
                e.printStackTrace();
            }
            try {
                if (stmt != null) {
                    stmt.close();
                    stmt = null;
                }
            } catch (Exception e) {
                System.err.println(e.getMessage());
                e.printStackTrace();
            }
            try {
                if (con != null) {
                    con.close();
                    con = null;
                }
            } catch (Exception e) {
                System.err.println(e.getMessage());
                e.printStackTrace();
            }
        }
    }
      

  5.   

    就不能Jsp,纯显示吗?将sql收索做到1个serlvet里面。不是很好?  try {
                if (rs != null) {
                    rs.close();
                    rs = null;
                }
            } catch (Exception e) {
                System.err.println(e.getMessage());
                e.printStackTrace();
            }这里红色部分。你重写的close方法,直接将rs改为null了。是不是这里出错了!
      

  6.   

    你可以测试下,第一段红色部分去掉if(rs!=null)看看报错吗?
    不报错就是我说得。你的close方法有问题
    因为你在第一段红色部分后跟了个con.close();过早的将 rs = null了,怎么改自己看吧
      

  7.   


    报错。。原本就是有错所以才些了if(rs!=null)的、、
      

  8.   


    不会。。 怎么弄、?
    不过RS应该就是个NULL值。。
      

  9.   


    不会。。 怎么弄、?
    不过RS应该就是个NULL值。。1.判断一下页面中con是否存在问题;
    2.将sql语句复制到数据库执行一下看下是否存在字段错误等问题;
    3.查看一下getRs(String sql)方法是否异常
      

  10.   

    lz。没看懂我的意思啊
      if(rs!=null)
    {
            while(rs.next()){
    %>
          <tr>
            <td valign="top"><font id="reg">&lt;&lt;</font><a target="_blank" href="view.jsp?sid=<%=rs.getString(1)%>">[<%=rs.getString(2)%>]毕业于[<%=rs.getString(3)%>,<%=rs.getString(4)%>,<%=rs.getString(5)%>],欲求[<%=rs.getString(6)%>]职位,要求薪水[<%=rs.getString(7)%>]。</a>&nbsp;</td>
          </tr>
    <%
            }
    }

    这段我意思你去掉if(rs!=null)看看报错吗?不报错,那么我的判断就对了。你的Conn 类中的close()方法中有个
     try {
                if (rs != null) {
                    rs.close();
                    rs = null;
                }

    这个代码中有个rs=null;这里就是错误的关键!,你看看rs=null。怎么替代。估计这个方法也不是你写的吧
      

  11.   

    lz。没看懂我的意思啊
      if(rs!=null)
    {
            while(rs.next()){
    %>
          <tr>
            <td valign="top"><font id="reg">&lt;&lt;</font><a target="_blank" href="view.jsp?sid=<%=rs.getString(1)%>">[<%=rs.getString(2)%>]毕业于[<%=rs.getString(3)%>,<%=rs.getString(4)%>,<%=rs.getString(5)%>],欲求[<%=rs.getString(6)%>]职位,要求薪水[<%=rs.getString(7)%>]。</a>&nbsp;</td>
          </tr>
    <%
            }
    }

    这段我意思你去掉if(rs!=null)看看报错吗?不报错,那么我的判断就对了。你的Conn 类中的close()方法中有个
     try {
                if (rs != null) {
                    rs.close();
                    rs = null;
                }

    这个代码中有个rs=null;这里就是错误的关键!,你看看rs=null。怎么替代。估计这个方法也不是你写的吧 
      

  12.   

    或者你也不用改,所有红色部分用完再调用conn.close()。
      

  13.   


    这个我也修改了。我觉得应该是ResultSet rs=con.getRs("SELECT a.jobid,b.name,b.school,b.specialty,b.knowledge,a.job,a.emolument FROM tb_sjob AS a,tb_student AS b WHERE a.sname=b.sname and getdate()<=atime ORDER BY ptime DESC");
    这个有问题。  
    但不知道是数据库错了还是这句话错了。
    我有注册功能,注册功能可以成功的记录到数据库里。 但是登入和这页面显示的,却提取不到数据库里的内容。
      

  14.   

    首先conn.close肯定放的位置不对,其次,那就如同2楼大神说的
    “SELECT a.jobid,b.name,b.school,b.specialty,b.knowledge,a.job,a.emolument FROM tb_sjob AS a,tb_student AS b WHERE a.sname=b.sname and getdate()<=atime ORDER BY ptime DESC”
    有问题。你可以在你的SQL上直接使用这个SQL语句看报错否。。
      

  15.   


    不会。。 怎么弄、?
    不过RS应该就是个NULL值。。1.判断一下页面中con是否存在问题;
    2.将sql语句复制到数据库执行一下看下是否存在字段错误等问题;
    3.查看一下getRs(String sql)方法是否异常1.按这情况来说,,。应该不存在。。
    2.
    消息 102,级别 15,状态 1,第 1 行
    '=' 附近有语法错误。
    消息 103,级别 15,状态 4,第 1 行
    以 'SELECT a.jobid,b.name,b.school,b.specialty,b.knowledge,a.job,a.emolument FROM tb_sjob AS a,tb_student AS b WHERE a.sname=b.sname' 开头的 标识符 太长。最大长度为 128
      

  16.   


    嗯,有报错了。 在上面的那个回复里。。 但是我不会改这代码那个conn.close我放到最后去了。
      

  17.   

    org.apache.jasper.JasperException:发生了异常处理JSP页面/ index.jsp的36行33:<td valign="top"> <表width="100%"> border="0" cellspacing="0" cellpadding="0">
    34:<%
    35:结果RS = con.getRs(b.name“SELECT a.jobid,b.school,b.specialty b.knowledge a.job作为FROM tb_sjob中,a.emolument,为B tb_student的a.sname = b.sname GETDATE()<=的atime ORDER BY PTIME DESC“);
    36:而(方法rs.next()){
    37:%>
    38:<TR>
    39:<td valign="top"> <font id="reg"> <<< / FONT> <目标=“_blank”
    堆栈跟踪:
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:470)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    javax.servlet.http.HttpServlet.service(HttpServlet.java 722)
    根本原因java.lang.NullPointerException
    org.apache.jsp.index_jsp._jspService(index_jsp.java:104)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java 722)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    javax.servlet.http.HttpServlet.service(HttpServlet.java 722)
    这是没有if(rs!=null)后的报错。
      

  18.   

    SELECT a.jobid,b.name,b.school,b.specialty,b.knowledge,a.job,a.emolument FROM tb_sjob AS a,tb_student AS b WHERE a.sname=b.sname
    好像是mysql的语句,或者oracle的。你用得是sqlserver的,会不会。sql语句有差别啊。我使用了自己的表差乘。好像没问题。
    消息 103,级别 15,状态 4,第 1 行
    以 'SELECT a.jobid,b.name,b.school,b.specialty,b.knowledge,a.job,a.emolument FROM tb_sjob AS a,tb_student AS b WHERE a.sname=b.sname' 开头的 标识符 太长。最大长度为 128
     
    貌似说你的=使用不对,改成==看看? 或者直接用like试试