javabean调用数据源问题?
代码如下:
jsp文件:
<%@ page contentType="text/html;charset=GBK" %>
<%@ page language="java" %>
<html>
<head>
<title>the javabeanSource test</title>
</head>
<body>
<center>
<jsp:useBean id="bean2" scope="page" class="mybean.NewsListSource" />
<jsp:setProperty name="bean2" property="tableName" value="news" />
<jsp:getProperty name="bean2" property="buffer"/>
</center>
</body>
</html>
JAVA文件:
package mybean;
/*
* 显示新闻标题列表只显示前10条.
* 使用数据源连接.
*/
import java.sql.*;
import mybean.DBConnSource;
public class NewsListSource {
private String tableName="";
private Statement stmt;
private StringBuffer buffer;
public NewsListSource(){
try{
DBConnSource dbc=new DBConnSource("jdbc/myweb");
Statement stmt = dbc.getStmt();
}catch(Exception e){
System.out.print("不能连接到数据源");
}
}
public void setTableName(String n){
this.tableName=n;
}
public StringBuffer getBuffer(){
try{
StringBuffer buffer=new StringBuffer();
String strsql="SELECT * FROM "+tableName+" ORDER BY id LIMIT 10";
ResultSet rs = stmt.executeQuery(strsql);
buffer.append("<table border=3>");
buffer.append("<TR><TD>序号</TD><TD>标题</TD><TD>分类</TD><TD>来源</TD><TD>发布时间</TD></TR>");
rs.afterLast();
while(rs.previous()){
String title=rs.getString("title");
String style=rs.getString("style");
String pfrom=rs.getString("pfrom");
String posttime=rs.getString("posttime");
buffer.append("<TR><TD>"+rs.getInt(1)+"</TD><TD>"+title+"</TD><TD>"+style+"</TD><TD>"+pfrom+"</TD><TD>"+posttime+"</TD></TR>");
}
buffer.append("</table>");
rs.close();
}
catch(SQLException e){
System.out.print(e.toString());
}
return buffer;
}
}
再附上我的数据源JAVA封装:
package mybean;
import java.sql.*;
import javax.sql.*;
import javax.naming.*;
public class DBConnSource {
private Connection conn;
private Statement stmt;
private PreparedStatement pstmt;
public DBConnSource(String dsName){
try{
Context initCtx = new InitialContext();
Context ctx =(Context)initCtx.lookup("java:comp/env");
DataSource ds =(DataSource)ctx.lookup(dsName);
conn = ds.getConnection();
}
catch(Exception e)
{
System.out.print(e.toString());
}
}
public synchronized Statement getStmt()throws Exception
{
stmt=conn.createStatement();
return stmt;
}
public synchronized PreparedStatement getPstmt(String sql)throws Exception
{
pstmt=conn.prepareStatement(sql);
return pstmt;
}
}
错误提示:
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
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.lang.NullPointerException
mybean.NewsListSource.getBuffer(NewsListSource.java:31)
org.apache.jsp.newslistsource_jsp._jspService(newslistsource_jsp.java:63)
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)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.17 logs.
好象是空指针错误.是不是?帮忙看看问题出在哪儿?谢谢了.