问一个javabean连接mysql数据库的问题

yeyuanzhi2000 2009-01-01 04:46:08
我直接在jsp页面中连接mysql数据库成功,代码如下:
<%@ page contentType="text/html;charset=gb2312"%>   
<%@ page import="java.sql.*"%>
<html>
<body>
<%Class.forName("com.mysql.jdbc.Driver").newInstance();
String url ="jdbc:mysql://localhost/new2007?user=root&password=123&useUnicode=true&characterEncoding=8859_1";
//testDB为你的数据库名
Connection conn= DriverManager.getConnection(url);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from tb_user";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {%>
您的第一个字段内容为:<%=rs.getString(1)%>
您的第二个字段内容为:<%=rs.getString(2)%>
<%}%>
<%out.print("数据库操作成功,恭喜你");%>
<%rs.close();
stmt.close();
conn.close();
%>
</body>
</html>

后来,我把它改成javabean+jsp的形式:
1、JDBConnection类如下:
package com;
import java.sql.*; //导入数据库操作的类

public class JDBConnection //构造方法,初始化
{

private Connection conn; //连接对象
private Statement stmt; //语句对象
private ResultSet rs; //结果集对象
private String accessdriver; //保存Access驱动程序字符串
private String accessURL; //保存Access连接字符串

public JDBConnection()
{
//Access驱动程序
accessdriver = "com.mysql.jdbc.Driver";
//连接字符串
accessURL = "jdbc:mysql://localhost/new2007?user=root&password=123&useUnicode=true&characterEncoding=8859_1";
conn = null;
}

//该方法从参数得到数据库路径,并加到连接字符串后面,然后再建立连接
public Connection getConnToAccess(){
try{
Class.forName(accessdriver);
conn = DriverManager.getConnection(accessURL);
}catch(Exception e){
System.out.println("操作数据库出错,请仔细检查");
System.err.println(e.getMessage());
}
return conn;
}



//关闭数据库连接
public void close()
{
try{
//rs.close();
//stmt.close();
conn.close();
}catch(SQLException sqlexception){
sqlexception.printStackTrace();
}
}
}

2、index.jsp代码如下:
<%@ page contentType="text/html;charset=gb2312"%>   
<%@ page import="java.sql.*"%>
<jsp:useBean id="DBConn" scope="request" class="com.JDBConnection"/>
<html>
<body>
<%
Connection conn= DBConn.getConnToAccess();
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from tb_user";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {%>
您的第一个字段内容为:<%=rs.getString(1)%>
您的第二个字段内容为:<%=rs.getString(2)%>
<%}%>
<%out.print("数据库操作成功,恭喜你");%>
<%rs.close();
stmt.close();
conn.close();
%>
</body>
</html>

但是运行时提示错误:
org.apache.jasper.JasperException: /index.jsp(3,0) The value for the useBean class attribute com.JDBConnection is invalid.
不知为什么?请高手指点,谢谢!!
...全文
147 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
使用Tomcat 常见 "The value for the useBean class attribute is invalid" 错误。
该错误是指 JSP 中给定的 useBean 标签的 class 属性的值无效(不是 Bean 的属性值)。

楼主仔细检查一下

还有就是建议不要把数据库连接语句放在前台jsp页面中
在后台处理比较安全
yeyuanzhi2000 2009-01-02
  • 打赏
  • 举报
回复
谢谢各位!
1、我已经把mysql-connector-java-3.1.14-bin-g.jar和mysql-connector-java-3.1.14-bin.jar放到Tomcat 5.5\common\lib目录下面了呀?
2、<jsp:useBean id="DBConn" scope="request" class="com.JDBConnection"/>scope之前也是page,但是还是运行错误。
是不是JDBConnection类连接代码有问题?麻烦各位帮我仔细检查一下。谢谢!!
qq871616204 2009-01-02
  • 打赏
  • 举报
回复
尽量少在JSP中嵌入JAVA代码
ZiSheng 2009-01-02
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 yeyuanzhi2000 的回复:]
谢谢各位!
1、我已经把mysql-connector-java-3.1.14-bin-g.jar和mysql-connector-java-3.1.14-bin.jar放到Tomcat 5.5\common\lib目录下面了呀?
2、 <jsp:useBean id="DBConn" scope="request" class="com.JDBConnection"/>scope之前也是page,但是还是运行错误。
是不是JDBConnection类连接代码有问题?麻烦各位帮我仔细检查一下。谢谢!!
[/Quote]
导入你的bean,这样:
<%@ page import="com.JDBConnection"%>

<jsp:useBean id="DBConn" scope="request" class="JDBConnection"/>
看看行不
qiaopengfei 2009-01-02
  • 打赏
  • 举报
回复
同意8楼的意见,代码写的规范有点不好,而且还有关闭资源等问题都要注意要在finally{}块中。
请楼主写代码时注意一下。
zrcai 2009-01-02
  • 打赏
  • 举报
回复

package com;
import java.sql.*;
public class DB {
private static Connection getConn() {
Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager
.getConnection("jdbc:mysql://localhost:/bbs?user=root&password=root");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}

private static Statement getStmt(Connection conn) {
Statement stmt = null;
try {
stmt = conn.createStatement();
} catch (SQLException e) {
e.printStackTrace();
}
return stmt;
}

private static ResultSet getRs(Statement stmt, String sql) {
ResultSet rs = null;
try {
rs = stmt.executeQuery(sql);
} catch (SQLException e) {
e.printStackTrace();
}
return rs;
}

public static void closeConn(Connection conn) {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
conn = null;
}
}

public static void closeStmt(Statement stmt) {
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
stmt = null;
}
}

public static void closeRs(ResultSet rs) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
rs = null;
}
}
}
yeyuanzhi2000 2009-01-02
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 guolimin1118 的回复:]
你的JDBConnection类的属性看着怪怪的
最好都写成局部变量。这样对并发执行的时候才能不出现问题
[/Quote]
那要怎样写呢?谁能帮我写一个类?
aloie 2009-01-02
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 Rachael1001 的回复:]
这样调用
感觉怪怪的
scope为什么是request?
还不如
<%@ page import="java.sql.*"%>
<%@ page import="com.JDBConnection"%>

<%
JDBConnection jDBConn = new JDBConnection();
Connection conn= jDBConn.getConnToAccess();
.................
%>
[/Quote]

y
guolimin1118 2009-01-02
  • 打赏
  • 举报
回复
你的JDBConnection类的属性看着怪怪的
最好都写成局部变量。这样对并发执行的时候才能不出现问题
Rachael1001 2009-01-01
  • 打赏
  • 举报
回复
这样调用
感觉怪怪的
scope为什么是request?
还不如
<%@ page import="java.sql.*"%>
<%@ page import="com.JDBConnection"%>

<%
JDBConnection jDBConn = new JDBConnection();
Connection conn= jDBConn.getConnToAccess();
.................
%>
glglglglglgllll 2009-01-01
  • 打赏
  • 举报
回复
检查下。应该是细节问题
believefym 2009-01-01
  • 打赏
  • 举报
回复
你这个类没有被找到
看一下web-inf\classes\com\下面有没有这个类
leihaoyi827 2009-01-01
  • 打赏
  • 举报
回复
连接相应的数据库的Jar包加进去了没有?
博客地址:http://blog.csdn.net/vipbooks 一直以来根据数据库表结构自动生成JavaBean、自动生成MyBaits的Mapper映射配置文件、自动生成数据库设计文档都是一件让人很头痛的事情,既浪费时间又很繁琐,看着几十上百个表的成千上万个字段,真是一件让人痛苦的事情。 我们也想过很多办法解决这个,包括用MyEclipse连接数据库生成JavaBean,但多多少少还是会有一些不尽人意的地方,包括表和表字段的comment总是无法生成,而且还会生成很多无用的注释代码,让代码看起来一点都不干净,配置非常繁琐等等。 于是一怒之下,自己动手丰衣足食,于是就自己用Swing写了一个基于数据库的自动化生成工具,支持MySQL、Oracle、SQLServce、PostgreSQL,完美支持JPA注解,可以同时生成Entity和DTO等,可以自动去除表前缀,支持单个和批量生成JavaBean,现在不但成员变量上能生成备注了,而且在Getter和Setter上也能有注释了。更重要的是还能自动生成数据库设计文档和MyBaits的Mapper映射配置文件,如果有多个数据源还能批量生成,使用非常方便。 所有的配置都保存在本地,只要配置过一次,下次使用的时候完全可以秒生成JavaBean、MyBaits的Mapper映射配置文件和数据库设计文档,并且还集成各种实用工具,使得工作效率瞬间爆棚,生产力瞬间爆表!
一直以来把数据库的表转换成JavaBean数据库设计文档都是一件让人很头痛的事情,既浪费时间又很繁琐,看着几十上百个表的成千上万个字段,真是一件让人痛苦的事情。 我们也想过很多办法解决这个,包括用MyEclipse连接数据库生成JavaBean,但多多少少还是会有一些不尽人意的地方,包括表和表字段的comment总是无法生成,而且还会生成很多无用的注释代码,让代码看起来一点都不干净,配置非常繁琐等等。 于是一怒之下,自己动手丰衣足食,于是就自己用Swing写了一个基于数据库的自动化生成工具,支持MySQL、Oracle、SQLServce、PostgreSQL,完美支持JPA注解,可以同时生成Entity和DTO等,可以自动去除表前缀,支持单个和批量生成JavaBean,现在不但成员变量上能生成备注了,而且在Getter和Setter上也能有注释了。更重要的是还能自动生成数据库设计文档,如果有多个数据源还能批量生成,使用非常方便。 所有的配置都保存在本地,只要配置过一次,下次使用的时候完全可以秒生成JavaBean数据库设计文档,并且还集成各种实用工具,使得工作效率瞬间爆棚,生产力瞬间爆表! v4.1.2版更新震撼发布,此次版本更新如下: 1、随着程序的功能越来越强大,原来的定位和设计已经无法满足更高的要求,所以决定对本程序更名,更名为TableGo,以满足未来更丰富的功能和设计。 2、新增快速生成数据库设计文档和批量生成数据库设计文档的功能。 3、新增根据字段快速生成JavaBean的功能,在VO中增量添加字段非常方便。 4、新增精确匹配(排除)和模糊匹配(排除),排除掉不需要生成的表。 5、新增数据源备注,该备注用于自动生成数据库设计文档的文件名。 6、新增多线程超时参数设置,在生成文档时因表字段太多而超时时可修改。 7、修改了界面布局,使布局更加合理。 8、修改实体注解使其能自动选中已选择的注解。 9、优化表命名转驼峰命名和驼峰命名转表命名,使其支持单词间的空格,使用起来更方便。 10、其他一些小Bug的修改和代码优化调整。

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧