<%@page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@page import="java.sql.*"%>
<html>
<body>
<%
String tablename=request.getParameter("tablename");
if(tablename==null) tablename="";
byte[] b=tablename.getBytes("ISO-8859-1"); tablename=new String(b);
out.println(tablename);
final String DRIVER = "org.gjt.mm.mysql.Driver";
final String DURL = "jdbc:mysql://localhost:3306/application";
final String DUSER = "root";
final String DPASS = "594daidai";
Connection conn = null;
try{
Class.forName(DRIVER);
}catch(ClassNotFoundException e){
e.printStackTrace();
}
try{
conn = DriverManager.getConnection(DURL,DUSER,DPASS);
}catch(SQLException e){
e.printStackTrace();
}
out.println(conn);
try{
conn.close();
}catch(SQLException e){
e.printStackTrace();
}
%>
</body>
</html>
HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: An exception occurred processing JSP page /bookMinage/docreatetable.jsp at line 28
25: }
26: out.println(conn);
27: try{
28: conn.close();
29: }catch(SQLException e){
30: e.printStackTrace();
31: }
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:524)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:435)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
root cause
java.lang.NullPointerException
org.apache.jsp.bookMinage.docreatetable_jsp._jspService(docreatetable_jsp.java:82)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
conn.close(); 这句报空指针, 说明你之前的连接没有获取到,肯定是上面的语句抛了异常
建议你按照如下代码调试,就可以找到问题所在了,有可能是没有找到驱动的JAR,有可能用户名密码不对,具体看异常打印吧。
Connection conn = null;
try{
Class.forName(DRIVER);
conn = DriverManager.getConnection(DURL,DUSER,DPASS);
out.println(conn);
conn.close();
}catch(ClassNotFoundException e){
out.println(e);
}catch(SQLException e){
out.println(e);
}
目测是你的数据库连接有问题,数据库连接就没有连上,然后你又尝试关闭。
26行打印con有结果吗?如果是null的话,后面con.close就会有空指针异常了。祝好!
改成下面方式试试
http://blog.csdn.net/song2004_2008/article/details/524602
另外,看看
try{
conn = DriverManager.getConnection(DURL,DUSER,DPASS);
}catch(SQLException e){
e.printStackTrace();//这里是否捕获到了异常,打印出什么异常信息
}
1: application这个数据库名,是不是对的,就是存不存在这个数据库
final String DURL = "jdbc:mysql://localhost:3306/application";
2:把连接数据库的代码,写一个类中,不要这样放在jsp中,这不符合mvc的模式
3:参考以下的连接方式,肯定可以,只是简单的开了个头
驱动程序名
String driver = "com.mysql.jdbc.Driver";
// URL指向要访问的数据库名scutcs
String url = "jdbc:mysql://127.0.0.1:3306/scutcs";
// MySQL配置时的用户名
String user = "root";
// Java连接MySQL配置时的密码
String password = "root";
try {
// 加载驱动程序
Class.forName(driver);
// 连续数据库
Connection conn = DriverManager.getConnection(url, user, password);
if(!conn.isClosed())
System.out.println("Succeeded connecting to the Database!");
// statement用来执行SQL语句
Statement statement = conn.createStatement();
// 要执行的SQL语句
String sql = "select * from student";
conn = DriverManager.getConnection(DURL,DUSER,DPASS);
这个conn的值依然是null吧,后面调用conn.close()就报空指针异常了
你有没有先建立ODBC数据源啊
一般报java.lang.NullPointerException的原因有以下几种:
·字符串变量未初始化;
·接口类型的对象没有用具体的类初始化,比如:
List lt; 会报错
List lt = new ArrayList(); 则不会报错了
·当一个对象的值为空时,你没有判断为空的情况。
你把你的数据库连接和断开语句拿到java环境debug一次就好了,看看哪儿报错!在JSP还真不好看!
28行,conn.close();抛出的空指针异常,建议在此做一个处理。
eg:
if (conn ==null){
//TODO something
}else{
conn.close();
}