我是一个JSP初学者,发现连接数据库的步骤是按部就班,连接同一个数据库的话,代码是完全一样的,对于不同的JSP页面,不同的是执行的SQL语句和按照返回的结果而进行的操作。所以我想能不能把JSP中连接数据库的代码给封装成javabean,在做新的JSP页面时,直接导入javabean就可以了?javabean我是这样做的import java.sql.*;
public class access_database
{
Connection con;
Statement stmt;
ResultSet rs;
public Statement connect_database()
{
try
{
Class.forName("com.mysql.jdbc.Driver");
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
String dbUrl ="jdbc:mysql://192.168.1.240:3306/project_1";
String dbUser="root";
String dbPwd="1234";
con = java.sql.DriverManager.getConnection(dbUrl,dbUser,dbPwd);
stmt = con.createStatement();
}catch(Exception e){System.out.println(e.getMessage());}
return stmt;
}
public void disconnect_database()
{
try
{
rs.close();
stmt.close();
con.close();
}catch(Exception e){System.out.println(e.getMessage());}
} /*public Connection return_con()
{
return con;
}*/}然后JSP我是这样写的<jsp:useBean id = "data" class = "javabean1.access_database" scope="page">
<jsp:setProperty name="data" property = "*"/>
</jsp:useBean>
<%@page import = "java.sql.*" %>
<%@page contentType="text/html" pageEncoding="UTF-8"%><html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登录信息</title>
</head>
<body>
<%
Connection con;
Statement stmt;
ResultSet rs;
stmt= data.connect_database();
//这个地方我直接调用javabean的成员方法,得到stmt对象,我认为连接数据库就是完成得到stmt对象
rs = stmt.executeQuery("select * from Tab1");
//执行一句简单的SQL语句
%>
<table border="1" width=600>
<tr>
<td bgcolor="#D8E4F1"><b> a </b></td>
<td bgcolor="#D8E4F1"><b> b </b></td>
<td bgcolor="#D8E4F1"><b> c </b></td>
<td bgcolor="#D8E4F1"><b> d </b></td>
<td bgcolor="#D8E4F1"><b> e </b></td>
<td bgcolor="#D8E4F1"><b> f </b></td>
</tr>
<%
while(rs.next()){
String a=rs.getString(1);
String b=rs.getString(2);
String c=rs.getString(3);
String d=rs.getString(4);
String e=rs.getString(5);
String f=rs.getString(6);
%>
<tr>
<td><%= a %></td>
<td><%= b %></td>
<td><%= c %></td>
<td><%= d %></td>
<td><%= e %></td>
<td><%= f %></td>
</tr>
<%}%>
</table>
<%
data.disconnect_database();//还是得关闭数据库连接
%>
</body>
</html>
运行后,报错:
HTTP Status 500 - --------------------------------------------------------------------------------type Exception reportmessage 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 /frame/web pages/middle_login_info1.jsp at line 1815: Statement stmt;
16: ResultSet rs;
17: stmt= data.connect_database();
18: rs = stmt.executeQuery("select * from TabMailLoginAll");
19: %>
20: <table border="1" width=600>
21: <tr>
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:505)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:416)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
root cause java.lang.NullPointerException
org.apache.jsp.frame.web_0020pages.middle_005flogin_005finfo1_jsp._jspService(middle_005flogin_005finfo1_jsp.java:82)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.20 logs.
--------------------------------------------------------------------------------
由于本人天性愚钝,而且是初学,很多不懂,所以希望大家能够不吝赐教,同时讲解详细点!我怀疑是不是我硬生生把连接数据库的代码给分成两段,这样不行?
public class access_database
{
Connection con;
Statement stmt;
ResultSet rs;
public Statement connect_database()
{
try
{
Class.forName("com.mysql.jdbc.Driver");
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
String dbUrl ="jdbc:mysql://192.168.1.240:3306/project_1";
String dbUser="root";
String dbPwd="1234";
con = java.sql.DriverManager.getConnection(dbUrl,dbUser,dbPwd);
stmt = con.createStatement();
}catch(Exception e){System.out.println(e.getMessage());}
return stmt;
}
public void disconnect_database()
{
try
{
rs.close();
stmt.close();
con.close();
}catch(Exception e){System.out.println(e.getMessage());}
} /*public Connection return_con()
{
return con;
}*/}然后JSP我是这样写的<jsp:useBean id = "data" class = "javabean1.access_database" scope="page">
<jsp:setProperty name="data" property = "*"/>
</jsp:useBean>
<%@page import = "java.sql.*" %>
<%@page contentType="text/html" pageEncoding="UTF-8"%><html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登录信息</title>
</head>
<body>
<%
Connection con;
Statement stmt;
ResultSet rs;
stmt= data.connect_database();
//这个地方我直接调用javabean的成员方法,得到stmt对象,我认为连接数据库就是完成得到stmt对象
rs = stmt.executeQuery("select * from Tab1");
//执行一句简单的SQL语句
%>
<table border="1" width=600>
<tr>
<td bgcolor="#D8E4F1"><b> a </b></td>
<td bgcolor="#D8E4F1"><b> b </b></td>
<td bgcolor="#D8E4F1"><b> c </b></td>
<td bgcolor="#D8E4F1"><b> d </b></td>
<td bgcolor="#D8E4F1"><b> e </b></td>
<td bgcolor="#D8E4F1"><b> f </b></td>
</tr>
<%
while(rs.next()){
String a=rs.getString(1);
String b=rs.getString(2);
String c=rs.getString(3);
String d=rs.getString(4);
String e=rs.getString(5);
String f=rs.getString(6);
%>
<tr>
<td><%= a %></td>
<td><%= b %></td>
<td><%= c %></td>
<td><%= d %></td>
<td><%= e %></td>
<td><%= f %></td>
</tr>
<%}%>
</table>
<%
data.disconnect_database();//还是得关闭数据库连接
%>
</body>
</html>
运行后,报错:
HTTP Status 500 - --------------------------------------------------------------------------------type Exception reportmessage 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 /frame/web pages/middle_login_info1.jsp at line 1815: Statement stmt;
16: ResultSet rs;
17: stmt= data.connect_database();
18: rs = stmt.executeQuery("select * from TabMailLoginAll");
19: %>
20: <table border="1" width=600>
21: <tr>
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:505)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:416)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
root cause java.lang.NullPointerException
org.apache.jsp.frame.web_0020pages.middle_005flogin_005finfo1_jsp._jspService(middle_005flogin_005finfo1_jsp.java:82)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.20 logs.
--------------------------------------------------------------------------------
由于本人天性愚钝,而且是初学,很多不懂,所以希望大家能够不吝赐教,同时讲解详细点!我怀疑是不是我硬生生把连接数据库的代码给分成两段,这样不行?
解决方案 »
- mysql中怎样每次取出表中3条记录啊
- 关于电信级大访问量项目的性能以及数据库压力的调优方案
- 刚接触JAVA与JSP!各位大哥帮我解释解释(对一些常识性的问题搞晕了!是不是你们男人的智商都比女人高呀???)
- 字符串替换的问题``
- 请教个有关mybatis的问题
- 请问:weblogic里如何设置某站点的主目录~~ 多谢啦~~~~
- 求助:获取主健的算法!我这个怎么不行?!!
- 请问JSP如何实现asp中split函数的功能?
- #####请问servlet.jar在哪里可以找到?谢谢指点!####
- 如何在weblogic6.0中使用javabean?
- onsubmit 总不执行
- 小菜、求一个c3p0连接池的、教程 谢谢了、在线等
#//oracle
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
OraclUrl="jdbc:oracle:thin:@localhost:1521:orcl";
OraclUser="test";
OraclPassword="test";
Connection conn= DriverManager.getConnection(url,user,password);
#//sqlserver
#Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
#sqlserverurl="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb";
#sqlserveruser="sa";
#sqlserverpassword="";
#Connection conn= DriverManager.getConnection(url,user,password);
前面有#号的说明是注释。想要哪种连接就去掉#就行了。