站内搜索: 请输入搜索关键词

当前页面: 开发资料首页JSP 专题jsp调用bean连接数据库的初级问题,请各位大虾赐教

jsp调用bean连接数据库的初级问题,请各位大虾赐教

摘要: jsp调用bean连接数据库的初级问题,请各位大虾赐教


jsp是这样的

<%@ page language="java" contentType="text/html;charset=GBK" %>


<body>




<%
out.print(test.getMaxUser());
%>

</body>


/**********DBConnection.java如下***********/

package db;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class DBConnection
{
private Connection con;

private Statement stsm;

DBConnection()
{
String url = "jdbc:odbc:test";

try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection(url, "sa", "sa");
stsm = con.createStatement();
} catch (ClassNotFoundException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}

}

public Connection getCon()
{
return con;
}

public Statement getStsm()
{
return stsm;
}

public String getMaxUser() throws SQLException
{
ResultSet rs = this.getStsm().executeQuery("select max(usercname) from c_user;");
rs.next();
return (rs.getString("usercname"));

}

public static void main(String arg[])
{
DBConnection dbc = new DBConnection();
try
{
ResultSet rs = dbc.getStsm().executeQuery("select * from c_user;");
while(rs.next())
{
System.out.println(rs.getString("usercname"));
}
rs.close();
} catch (SQLException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}

//////////////////////////////
DBConnection.java在eclips中运行一切正常
jsp如果换作其他bean也正常
但是这个jsp调用DBConnection.java执行结果是:

exception

org.apache.jasper.JasperException: Unable to compile class for JSP

An error occurred at line: 6 in the jsp file: /user.jsp

Generated servlet error:
[javac] Compiling 1 source file

E:/tomcat-5.0.19/work/Catalina/localhost/_/org/apache/jsp/user_jsp.java:51: DBConnection() ? db.DBConnection ??????????????????????
test = new db.DBConnection();
^
1 ??


org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:127)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:351)
org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:415)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:458)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:439)


请各位帮帮忙了




<%
out.print(test.getMaxUser());
%>
这里没有处理异常,在getMaxUser()你抛出异常


楼上的是正解


public String getMaxUser() throws SQLException
{
ResultSet rs = this.getStsm().executeQuery("select max(usercname) from c_user;");
rs.next();
return (rs.getString("usercname"));

}

这里你生命了 throws SQLException
所以在jsp中使用这个方法要用try catch 捕获这个异常
能不能继续声明抛出
我就不清楚了


我在DBConnection里面新增了方法:

public String getTeststr()
{
return "test".toString();
}

调用这个方法:
<%
out.print(test.getTeststr());
%>

报同样的错,从他报的错来看应该是实例化DBConnection的时候出错,但是我同样的方法改成调用其它class就没问题。不过还是谢谢2位提点!


你的javaBean有问题,一个标准的JavaBean有如下几个特征:
(1)是一个public类
(2)必须有个一无参的构造函数
(3)属性的取得和设置必须使用getXXX和setXXX方法

你的DBConnection设置属性时不是通过setXXX方法进行的。

其他还有没有问题试过再说


说明你的jsp页面根本编译不过去啊,你编译一下你的页面看看报什么错.


终于搞定了,其实问题出在构造函数是否是public上:
。。。
public DBConnection()
。。。

谢谢cseu,他说的3个原则
(1)是一个public类
(2)必须有个一无参的构造函数
(3)属性的取得和设置必须使用getXXX和setXXX方法
前两个是必要的,第三个是使用getProperty所需要的,虽然没用直接提到问题关键点,但是还是提醒了我,谢谢


↑返回目录
前一篇: JSP分页有点问题,帮忙看看
后一篇: 获取JSP中的数据!