//-------------------------------------------------------------
                inquire.jsp
//-----------------------------------------------------------------
<%@ page contentType="text/html;Charset=GB2312"%>
<%@ page import="database.operation.QueryBean" %>
<jsp:useBean id="base" class="database.operation.QueryBean" scope="session"/>
<jsp:setProperty name="base"  property="*"/>
<html><body bgcolor=cyan><font size=3>
<form action="" method="post">
输入数据库名:<input type="text" name="databaseName" size=9>
输入表的名字:<input type="text" name="tableName" size=9>
<br>输入用户名:<input type="text" name="user" size=9>
<br>输入密码:<input type="password" name="secret" size=9>
<br><input type="submit" value="提交" >
</form>
在<jsp:getProperty name="base" property="tableName"/>表中查询到记录:
<br><jsp:getProperty name="base" property="queryResult"/>
</font>
</body></html>
//-------------------------------------------------------------
          QueryBean.java
//---------------------------------------------------------
package database.operation;
import java.sql.*;
public class QueryBean
{
String databaseName="";//数据库名
String tableName="";//表名
String user="";//用户
String secret="";//密码
StringBuffer queryResult;//查询结果
public QueryBean()
{
queryResult=new StringBuffer();
try
 {
//Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
 }
catch (Exception e)
 {  }
}
public void setDatabaseName(String s)
{
databaseName=s.trim();
queryResult=new StringBuffer();
    }
public String getDatabaseName()
{
return databaseName;
}
  public void setTableName(String s)
{
tableName=s.trim();
queryResult=new StringBuffer();
    }
public String getTableName()
{
return tableName;
}
  public void setSecret(String s)
{
secret=s.trim();
queryResult=new StringBuffer();
    }
public String getSecret()
{
return secret;
}

  public void setUser(String s)
{
user=s.trim();
queryResult=new StringBuffer();
    }
public String getUser()
{
return user;
}
public StringBuffer getQueryResult()
{
Connection con;
Statement sql;
ResultSet rs;
try
{
queryResult.append("<table border=1>");
String uri="jdbc:sqlserver:127.0.0.1:1433;DatabaseName="+databaseName;
String id=user;
String password=secret;
con=DriverManager.getConnection(uri,id,password);
//con=DriverManager.getConnection("jdbc:odbc:sql2005",id,password);
//------------------------------------------
//取得表中的所有字段名
DatabaseMetaData metadata=con.getMetaData();
ResultSet rs1=metadata.getColumns(null,null,tableName,null);
int sum=0;//字段个数
queryResult.append("<tr>");
while (rs1.next())
{
sum++;
String clumnName=rs1.getString(4);
queryResult.append("<td>"+clumnName+"</td>");
}
//--------------------------------------------
queryResult.append("</tr>");
sql=con.createStatement();
rs=sql.executeQuery("select * from "+tableName);
while (rs.next())
{
queryResult.append("<tr>");
for (int k=1;k<=sum ;k++ )
{
queryResult.append("<td>"+rs.getString(k)+"</td>");
}
                     queryResult.append("</tr>");
}
queryResult.append("</table>");
con.close();
}
catch (SQLException e)
{
queryResult.append("请输入正确的用户名和密码");
}
return queryResult;
}
}
//-----------------------------------------------------------------------
inquire.jsp保存在\webapps\ch6服务器目录下,而QueryBean.class保存在\webapps\ch6\WEB_INF\classes\database\operation下,运行却
报错:
HTTP Status 500 -type Exception reportmessagedescription The server encountered an internal error () that prevented it from fulfilling this request.exceptionorg.apache.jasper.JasperException: /inquire.jsp(3,0) The value for the useBean class attribute database.operation.QueryBean is invalid.
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:148)
org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:1203)
org.apache.jasper.compiler.Node$UseBean.accept(Node.java:1160)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2343)
org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2393)
org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2399)
org.apache.jasper.compiler.Node$Root.accept(Node.java:489)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2343)
org.apache.jasper.compiler.Generator.generate(Generator.java:3365)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:199)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:315)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:295)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:282)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:586)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)请问是什么原因?怎样解决呢?

解决方案 »

  1.   

    是长了点,不过内容很明确,就是在jsp页面中调用一个连接和处理数据库的javabean,但出了问题!
      

  2.   

    org.apache.jasper.JasperException: /inquire.jsp(3,0) The value for the useBean class attribute database.operation.QueryBean is invalid. 
    应该是你输入的文本框的值在连接数据库或者查询的时候为无效值,不是你路径什么的错误。