以下是一个jsp页面和数据库连接bean
在执行jsp的时候,不知道为什么总是出现异常,提示null point,不知是不是数据库连接不上?怎么样才能正确连接?各位帮忙提点,不胜感激!【付】:我已把mysql-connector-java-5.0.4-bin.jar,mysql-connector-java-5.0.4-bin-g.jar加到了classpath下
//jsp.jsp页面
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<jsp:useBean id="ConnBean" scope="page" class="db.ConnMySQL"/>
<html><body><%
String sql="select * from Customer";
ConnBean.setConnParam("com.mysql.jdbc.Driver","jdbc:mysql://localhost:3306/ConDa","root","sa");
ResultSet rs=ConnBean.executeQuery(sql);
try{
while(rs.next()) {%> 您的第一个字段内容为:<%=rs.getString(1)%> 您的第二个字段内容为:<%=rs.getString(2)%>
<%}
}
catch(Exception ex){
out.print(ex.getMessage());
}
%><%out.print("数据库操作成功,恭喜你");%><%rs.close();
ConnBean.close();
%></body></html>
//以下是我的数据库连接bean
package db;
import java.sql.*;public class ConnMySQL{ 
private Connection connect = null; 
private ResultSet rs = null;
private String driverName = null;
private String jdbcURL = null;
private String userName = null;
private String uPwd = null; public void setConnParam(String dr,String ju,String un,String pwd){
this.driverName = dr;
this.jdbcURL = ju;
this.userName = un;
this.uPwd = pwd;
}

private void open(){
try{
if(connect.isClosed()){
Class.forName(driverName).newInstance();
this.connect = DriverManager.getConnection(jdbcURL,userName,uPwd);
}
}
catch(Exception ex){
System.err.print(ex.getMessage());
}
} public ResultSet executeQuery(String sql) 

try { 
this.open();
Statement stmt=this.connect.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); 
rs=stmt.executeQuery(sql); 

catch(SQLException ex) 

System.err.println(ex.getMessage()); 

catch(Exception ex) 

System.err.println(ex.getMessage()); 
}
return rs; 
}  public int executeUpdate(String sql) 

int result=0; 
try { 
this.open();
Statement stmt=this.connect.createStatement(); 
result=stmt.executeUpdate(sql); 

catch(SQLException ex) 

System.err.println(ex.getMessage()); 

catch(Exception ex) 

System.err.println(ex.getMessage()); 

return result; 
}  public void close(){
try{
if(!connect.isClosed()){
connect.close();
}
}
catch(SQLException ex) 

System.err.println(ex.getMessage()); 

catch(Exception ex){
System.err.print(ex.getMessage());
}
}
}

解决方案 »

  1.   

    type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:207)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:240)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:187)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:809)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:200)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:146)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:209)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:144)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
    at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2358)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:133)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
    at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:118)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:116)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:127)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
    at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:152)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
    at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
    at java.lang.Thread.run(Unknown Source)
    root cause java.lang.NullPointerException
    at org.apache.jsp.jsp_jsp._jspService(jsp_jsp.java:81)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:92)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:809)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:162)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:240)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:187)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:809)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:200)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:146)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:209)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:144)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
    at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2358)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:133)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
    at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:118)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:116)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:127)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
    at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:152)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
    at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
    at java.lang.Thread.run(Unknown Source)
      

  2.   

    把你的ConnMySQL.java改为
    package db;
    import java.sql.*;/*--------------------------------
     Function Detail : 根据连接池连接数据库,并提供相对对表的操作
     Date            : 2006-8-12
     Author          : liaohaiying
     Version         : longying 1.0
    */
    public class ConnMySQL

        private  Connection mobjConn = null;
        private  Statement mobjState = null;
    private  Statement mobjState1 = null;
        private  ResultSet mobjRs = null;
        private  CallableStatement pobjCst = null;
        
        //构造函数
        public ConnMySQL() throws Exception 
        {
    Class.forName("com.mysql.jdbc.Driver").newInstance();
    String url ="jdbc:mysql://localhost/ConDa?user=root&password=sa&useUnicode=true&characterEncoding=gb2312";
    mobjConn = DriverManager.getConnection(url);   
            mobjState = mobjConn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
    mobjState1 = mobjConn.createStatement();
        }
        
        public Connection getConnection()
        {
           return mobjConn;
        }    //返回只读ResultSet对象
        public ResultSet getResultSetForwardOnly(String pstrSql) throws SQLException
        {
            mobjRs = mobjState.executeQuery(pstrSql);
            return mobjRs;
        }
        
    //返回ResultSet对象
    public ResultSet getResultSet(String pstrSql) throws SQLException
    {
    mobjRs = mobjState1.executeQuery(pstrSql);
    return mobjRs;
    }
        
        //执行SQL语句,并返回结果
        public boolean executeUpdate(String pstrSql) throws SQLException
        {
            return (mobjState.executeUpdate(pstrSql) > 0 ? true:false);
        }
        
        //创建CallableStatement对象,其创建的ResultSet可以滚动
        public CallableStatement getCallableMove(String pstrProcName) throws SQLException
        {
            pobjCst = mobjConn.prepareCall(pstrProcName,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
            return pobjCst;
        } //通过执行SQL语句,返回 PreparedStatement
        public PreparedStatement getPreparedStatement(String pstrSQL) throws SQLException
        {
            return mobjConn.prepareStatement(pstrSQL);
        }
        
    //通过执行SQL语句,返回 Statement
    public Statement createStatement() throws SQLException
    {
    return mobjState;
    }
    public void setAutoCommit() throws SQLException
    {
    mobjConn.setAutoCommit(true);
    }
    public void commit() throws SQLException
    {
    mobjConn.commit();
    }
    }
    再把你的JSP文件中改成这一段
    <%
    try{
    ConnMySQL mobjDatabase = new ConnMySQL();
    String pstrSQL = "select * from Customer";
    ResultSet rs = mobjDatabase.getResultSetForwardOnly(pstrSQL);
    while (rs.next())
    {
    %> 您的第一个字段内容为:<%=rs.getString(1)%> 您的第二个字段内容为:<%=rs.getString(2)%>
    <%
    }
    rs.close();
    }
    catch(Exception ex){
    out.print(ex.getMessage());
    }%>