我这个jsp要实现的功能很简单,第一次访问他的时候会自动打出这个数据库里面的所有项,然后会有一个表单叫你填选,这样就可以寻找你要超找的那一个数据项,第一个功能是可以正常工作的,载入这个jsp的时候可以打印这个数据库中所有的项目,第二个功能就不行了,我提交这个表单以后,就会出错,出错信息在最下面。
<%@ page language="java" contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<%@ page import="com.db.databean" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=gb2312">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<center>
<div><b><font color="#8A0000" face="华文隶书" size="5">查询学生信息
</font></b></div>
<%
  String sql=null;
  String FieldName=request.getParameter("FieldName");
  String value=request.getParameter("value");
  if((value==null)||(value.trim().equals("")))
  sql="SELECT * from student"; //若参数值为空,则查询所有记录
  else//参数值不为空,则设置相应的sql查询语句
  {
    value=new String(value.getBytes("8859_1"));
    sql="SELECT * from student where"+FieldName+"="+value;
    
  }
  databean db=new databean();//创建javabean实例
  db.setCon();
  ResultSet rs=db.getSearchRs(sql);
  %>
  <table border=1>
  <tr>
  <td><b>序号</b></td>
  <td><b>学号</b></td>
  <td><b>姓名</b></td>
  <td><b>年龄</b></td>
  <td><b>系别</b></td>
  </tr>
  <%
  //int n=0;
  while(rs.next())
  { %>
  <tr>
  
  <td><%String str_1;str_1=new String(rs.getString(1).getBytes("8859_1"));out.print(str_1);%></td>
  <td><%String str_2;str_2=new String(rs.getString(2).getBytes("8859_1"));out.print(str_2);%></td>
  <td><%String str_3;str_3=new String(rs.getString(3).getBytes("8859_1"));out.print(str_3);%></td>
  <td><%String str_4;str_4=new String(rs.getString(4).getBytes("8859_1"));out.print(str_4);%></td>
  </tr>
  <%
  }
  %>
  </table>
  </center>
  <br>
  <form name="form1" method="post" action="selectInfo.jsp">
  选择查询字段:<select name="FieldName">
  <%
  ResultSetMetaData rsmd=rs.getMetaData();
  int numberOfColumns=rsmd.getColumnCount();
  for(int i=0;i<numberOfColumns;i++)
  { %>
  <option value="<%=rsmd.getColumnName(i+1)%>">
  <%=rsmd.getColumnName(i+1) %></option>
  <% 
  }
  db.CloseDataBaseCon();
  %>
  </select>
  <br><br>
  输入查询关键字:<input type="text" name="value"><br><br>
  <input type="submit">
  </form>
  <table width="532" border="0" align="center">
  <tr>
  <td width="526">
  <div align="right"><a href="index.htm">首页&gt;&gt;&gt;</a></div>
  </td>
  </tr>
  </table>
  </body>
  </html>
 
 
 
 
HTTP Status 500 - --------------------------------------------------------------------------------type Exception report
message 
description The server encountered an internal error () that prevented it from fulfilling this request.
exception 
org.apache.jasper.JasperException: An exception occurred processing JSP page /selectInfo.jsp at line 4037:   </tr>
38:   <%
39:   //int n=0;
40:   while(rs.next())
41:   { %>
42:   <tr>
43:   
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:524)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:435)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
root cause 
java.lang.NullPointerException
org.apache.jsp.selectInfo_jsp._jspService(selectInfo_jsp.java:96)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.13 logs.--------------------------------------------------------------------------------Apache Tomcat/6.0.13

解决方案 »

  1.   

      String FieldName=request.getParameter("FieldName"); 
      String value=request.getParameter("value"); 
    手动把这两个变量赋个初值试试呢?
    String FieldName = "自己对应着填写";
    String value = "自己对应着填写";试试看能不能查出结果来。
    我感觉你的错误信息是空指针错误。
    加油!
      

  2.   

    Stacktrace:
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:524)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:435)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    root cause
    java.lang.NullPointerException
    org.apache.jsp.selectInfo_jsp._jspService(selectInfo_jsp.java:96)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    note The full stack trace of the root cause is available in the Apache Tomcat/6.0.13 logs. 应该是rs为空,可能是你前面定义的ResultSet rs=db.getSearchRs(sql); 在后面直接用这个对象rs,不知道在不同的代码段,这样的定义对象可不可用。你可以把它们放在一个代码段试试。