先给上代码:
conn.java
package tzm.conn;
import java.sql.*;
public class conn{
private static String DBDRIVER="sun.jdbc.odbc.JdbcOdbcDriver";
private static String DBURL="jdbc:odbc:TY";
public Connection DBconn=null;public conn(){
try
{
Class.forName(DBDRIVER);
}
catch(Exception e)
{
System.out.println("加载驱动错误");
}
try{
DBconn=DriverManager.getConnection(DBURL);
}
catch(Exception ex)
{
System.out.println(ex);
}
}
}loginChecked.jsp
<%@ page contentType="text/html;charset=GBK"%>
<%@ page language="java"%>
<%@ page import="java.sql.*"%>
<%@ page import="java.io.*"%>
<%@ page import="java.util.*"%>
<%@ page import="tzm.conn.*" %>
<h1 align="center">JDBC登陆验证</h1>
<br>
<jsp:useBean id="conn" class="tzm.conn.conn" scope="request"/>
<%
String name = request.getParameter("zh") ;
String passwd = request.getParameter("passwd") ;
Connection DBconn=null;
ResultSet rs=null;
PreparedStatement pstmt;
String sql = "SELECT name,passwd FROM student WHERE name=? and passwd=?";

pstmt = DBconn.prepareStatement(sql) ;
pstmt.setString(1,name);
              pstmt.setString(2,passwd);
rs = pstmt.executeQuery() ;
if(rs.next())
{
out.println("登陆成功!") ;
}
else
{
out.println("登陆失败!") ;
}%>提示错误:
type Exception reportmessage 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:460)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:373)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
root cause java.lang.NullPointerException
org.apache.jsp.loginChecked_jsp._jspService(loginChecked_jsp.java:74)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.28 logs.求教,我也搞不懂是什么问题。有时候会提示:
loginChecked.jsp中pstmt = DBconn.prepareStatement(sql) ;
这里有问题。

解决方案 »

  1.   

    Connection DBconn=null;  你还没给这个对象初始化呢肯定报空指针错误了
      

  2.   

    Connection DBconn=new tzm.conn.conn().conn();
    楼主的代码实在不敢恭维。  我觉的这不叫什么封装。 楼主加油哦。
      

  3.   

    跟你们说嘛,我们才在学JSP,哎呀哎呀,那才师出的考题就是要封装。我们班就我一个人,整得似懂非懂,其它的,更不要说了,所以才到CSDN来向你们学习。谢谢哈~!
      谢谢大家!我会加油的~~(*-*)
      

  4.   

    description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: Unable to compile class for JSP: An error occurred at line: 13 in the jsp file: /loginChecked.jsp
    Type mismatch: cannot convert from conn to Connection
    10: <%
    11:  String name = request.getParameter("zh") ;
    12:  String passwd = request.getParameter("passwd") ;
    13:  Connection DBconn=new tzm.conn.conn();
    14:  ResultSet rs=null;
    15:  PreparedStatement pstmt;
    16: 还是不对。55555
      

  5.   

    Unable to compile class for JSP
    你的类没有编译。 上面写的很清楚了
      

  6.   

    不是吧,我编译了的呀,编译文件在F:\jspwork\WEB-INF\classes\tzm\conn下面
    JSP文件在F:\jspwork下面
      

  7.   

    Connection DBconn=new tzm.conn.conn(); 这错了Connection DBconn=new tzm.conn.conn().conn();  我上面是这样写的
      

  8.   

    org.apache.jasper.JasperException: Unable to compile class for JSP: An error occurred at line: 13 in the jsp file: /loginChecked.jsp
    The method conn() is undefined for the type conn
    10: <%
    11:  String name = request.getParameter("zh") ;
    12:  String passwd = request.getParameter("passwd") ;
    13:  Connection DBconn=new tzm.conn.conn().conn();
    14:  ResultSet rs=null;
    15:  PreparedStatement pstmt;
    16: 
    不行呀
      

  9.   

    conn()方法里返回一个Connection对象
      

  10.   

    conn()返回类型改为Connection 方法里加"return DBconn;"
      

  11.   

    public Connection conn(){
    try
    {
    Class.forName(DBDRIVER);
    }
    catch(Exception e)
    {
    System.out.println("加载驱动错误");
    }
    try{
    DBconn=DriverManager.getConnection(DBURL);
    }
    catch(Exception ex)
    {
    System.out.println(ex);}
    return DBconn;
    }
    }
     是这样改的吗?
      

  12.   


    private static final String driverName="com.microsoft.jdbc.sqlserver.SQLServerDriver";
    private static final String conStr="jdbc:microsoft:sqlserver://localhost:1433;databaseName=Demo";
    private static final String user="sa";
    private static final String pwd="";

    /**
     * 获得连接,JDBC方式
     * */
    public static Connection getConn(){
    Connection con=null;
    try {
    Class.forName(driverName);
    con=DriverManager.getConnection(conStr,user,pwd); } catch (Exception e) {
    e.getMessage();
    }
    return con;
    }
      

  13.   

    String url = "jdbc:sqlserver://localhost:1433;DatabaseName=" + dbName;
    Connection conn = DriverManager.getConnection(url, userName, password);
      

  14.   

    14楼15楼发的是SQL的连接方式呀,我刚复制过去,把驱动换成ACCESS的不行呀。有没有哪个大哥帮我把代码调一下呀。改去改来都改晕了
      

  15.   

    哎,刚学的嘛,只是想把数据库连接写在一个bean文件里面,以后用到数据库连接都可以直接调用。没想到弄得这么难。哎~
      

  16.   

    public class DBManager {
    private String driverClass = "com.mysql.jdbc.Driver";
    private String url = "jdbc:mysql://localhost:3306/test";
    private String username = "root";
    private String psw = "root"; /**
     * 加载驱动
     */
    public DBManager() { try {
    Class.forName(driverClass);
    } catch (ClassNotFoundException e) {
    e.printStackTrace();
    }
    } /**
     * 获取连接
     * 
     * @return
     */
    public Connection getConnection() {
    Connection conn = null;
    try {
    conn = DriverManager.getConnection(url, username, psw);
    } catch (SQLException e) {
    e.printStackTrace();
    }
    return conn;
    } /**
     * 关闭资源
     * 
     * @param conn
     * @param stmt
     * @param rs
     */
    public void closeResource(Connection conn, Statement stmt, ResultSet rs) {
    try {
    if (rs != null) {
    rs.close();
    }
    } catch (SQLException e) {
    e.printStackTrace();
    } finally {
    try {
    if (stmt != null) {
    stmt.close();
    }
    } catch (SQLException e) {
    e.printStackTrace();
    } finally {
    try {
    if (conn != null) {
    conn.close();
    }
    } catch (SQLException e) {
    e.printStackTrace();
    }
    }
    } }
    }类名要大写不会不知道吧,还有
    public conn()你这是要写个构造方法呢?还是要写个方法外部调用获取连接?
    我发的这个是连接mysql的 你自己改改看吧
      

  17.   

    写个方法外部调用获取连接。在JSP页面怎么用这个Conn.class呢?
      

  18.   

    Conn.javapackage tzm.conn;
    import java.sql.*;
    public class Conn{
    private static String DBDRIVER="sun.jdbc.odbc.JdbcOdbcDriver";
    private static String DBURL="jdbc:odbc:TY";
    public Connection DBconn=null;public Connection conn(){
    try
    {
    Class.forName(DBDRIVER);
    }
    catch(Exception e)
    {
    System.out.println("加载驱动错误");
    }
    try{
    DBconn=DriverManager.getConnection(DBURL);
    }
    catch(Exception ex)
    {
    System.out.println(ex);}
    return DBconn;
    }
    }loginChecked.jsp<%@ page contentType="text/html;charset=GBK"%>
    <%@ page language="java"%>
    <%@ page import="java.sql.*"%>
    <%@ page import="java.io.*"%>
    <%@ page import="java.util.*"%>
    <%@ page import="tzm.conn.Conn" %>
    <h1 align="center">JDBC登陆验证</h1>
    <br>
    <jsp:useBean id="conn" class="tzm.conn.Conn" scope="request"/>
    <%
    String name = request.getParameter("zh") ;
    String passwd = request.getParameter("passwd") ;
    Connection DBconn=new tzm.conn.conn().conn();
    ResultSet rs=null;
    PreparedStatement pstmt=null;
    String sql = "SELECT name,passwd FROM student WHERE name=? and passwd=?";

    pstmt = DBconn.prepareStatement(sql) ;
    pstmt.setString(1,name);
                  pstmt.setString(2,passwd);
    rs = pstmt.executeQuery() ;
    if(rs.next())
    {
    out.println("登陆成功!") ;
    }
    else
    {
    out.println("登陆失败!") ;
    }%>
    错误:
    org.apache.jasper.JasperException: Unable to compile class for JSP: An error occurred at line: 13 in the jsp file: /loginChecked.jsp
    tzm.conn.conn cannot be resolved to a type
    10: <%
    11:  String name = request.getParameter("zh") ;
    12:  String passwd = request.getParameter("passwd") ;
    13:  Connection DBconn=new tzm.conn.conn().conn();
    14:  ResultSet rs=null;
    15:  PreparedStatement pstmt=null;
    16: 
      

  19.   

    Connection DBconn=new tzm.conn.Conn().conn();
    类名搞错了
      

  20.   

    晕 ! Connection DBconn=new tzm.conn.conn().conn(); ===》
     Connection DBconn=new tzm.conn.Conn().conn();你看看你上次写的代码 类名叫conn  后面你给的代码叫Conn。
    tzm.conn.conn cannot be resolved to a type 说的类型不配陪。楼主仔细点呀
      

  21.   

    问题解决了,的确是实例化对像的问题 
    <jsp:useBean id="conn" class="tzm.conn.Conn" scope="request"/>
    <%
    这句useBean 用了CLASS tzm.conn.Conn 取的实例化对象名为id为conn那么
    在下面实例化调用conn()的时候 就应该是Connection DBconn=conn.conn();
    这样就对了。谢谢大家了~!