小弟在本版的第一个问题(jsp连接mysql),先有礼了!

anytel 2003-09-11 10:13:00
我刚刚开始学习jsp,做了个连接mysql的jsp,现在已经安装了tomcat和jdk、mysql,且jdbc也安装正确,因为我用java写了个小程序测试通过,能正常查询,就是用jsp访问数据库总是不成功,所以我苦恼至极,现在将我的做法贴在下面,希望有同情心的拉我一把,日后必将报答

一、我有个javabean 叫 DBconn.java 放在tomcat主目录下面的examples\WEB-INF\classes\mysqltest下面

源码如下:

package Mysqltest;
import java.sql.*;

public class DBconn
{
String DBDriver="org.gjt.mm.mysql.Driver";
String ConnStr="jdbc:mysql://10.110.0.39/jsp_connect";
String MyUser="root";
String MyPassword="";
Connection conn = null;
ResultSet rs = null;
public DBconn()
{
try
{
Class.forName(DBDriver);
}
catch(java.lang.ClassNotFoundException e)
{
System.err.println("DBconn (): " + e.getMessage());
}
}
public ResultSet executeQuery(String sql)
{
rs = null;
try
{
conn = DriverManager.getConnection(ConnStr,MyUser,MyPassword);
Statement stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
}
catch(SQLException ex)
{
System.err.println("aq.executeQuery:"+ex.getMessage());
}
return rs;
}
}


其中10.110.0.39是我本机的IP、jsp_connect为数据库名字

二、我的jsp文件放在tomcat主目录下面的examples\jsp ,叫Mysqltest.jsp

源码为:

<%@ page contentType="text/html; charset=gb2312" %>
<html>
<head>
<title>JSP连接MySQL!</title>
</head>
<body>
<%@ page language="java" import="java.sql.*" %>
<jsp:useBean id="DBconn1" scope="page" class="DBconn" type="DBconn" />
<%
ResultSet RS = DBconn1.executeQuery("SELECT * FROM my_test_table");
while (RS.next())
{
out.print("<h1>" + RS.getString("test_column")+"</h1>");
}
RS.close();
%>
</body>
</html>


三、现在我载浏览器里面敲
http://localhost:8080/examples/jsp/Mysqltest.jsp
出现如下错误:

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: Unable to compile class for JSP

An error occurred at line: 7 in the jsp file: /jsp/Mysqltest.jsp

Generated servlet error:
[javac] Compiling 1 source file

C:\Tomcat\work\Standalone\localhost\examples\jsp\Mysqltest_jsp.java:50: cannot resolve symbol
symbol : class DBconn
location: class org.apache.jsp.Mysqltest_jsp
DBconn DBconn1 = null;
^



An error occurred at line: 7 in the jsp file: /jsp/Mysqltest.jsp

Generated servlet error:
C:\Tomcat\work\Standalone\localhost\examples\jsp\Mysqltest_jsp.java:52: cannot resolve symbol
symbol : class DBconn
location: class org.apache.jsp.Mysqltest_jsp
DBconn1 = (DBconn) pageContext.getAttribute("DBconn1", PageContext.PAGE_SCOPE);
^



An error occurred at line: 7 in the jsp file: /jsp/Mysqltest.jsp

Generated servlet error:
C:\Tomcat\work\Standalone\localhost\examples\jsp\Mysqltest_jsp.java:55: cannot resolve symbol
symbol : class DBconn
location: class org.apache.jsp.Mysqltest_jsp
DBconn1 = (DBconn) java.beans.Beans.instantiate(this.getClass().getClassLoader(), "DBconn");
^
3 errors


at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:130)
at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:293)
at org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:353)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:370)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:473)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:190)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:494)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2416)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:601)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:392)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:565)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:619)
at java.lang.Thread.run(Thread.java:536)



--------------------------------------------------------------------------------

Apache Tomcat/4.1.27


不知是什么问题,我现在对tomcat的目录设置和管理很模糊,对一堆jsp、classes目录一片迷茫,不知道应该将class文件放在那个目录下面,是不是这个问题导致的呢?另外我想请教一下,如果我想在C盘根目录下面建my_jsp的目录来放置自己的jsp(这样想方便一点嘛),要怎么配置tomcat,将来发布的时候class文件放在哪里?

谢谢能有好心人看到这个帖子,今天是中秋节,我祝愿看过这个帖子和能给点建议的人生活如意,财运滚滚!
...全文
24 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
zcjl 2003-09-11
  • 打赏
  • 举报
回复
tomcat除了要设TOMCAT_HOME和CATALINA_HOME为tomcat的安装目录外
就不用设其他的环境变量了

但是一些必需的类库你得放到\my_jsp\WEB-INF\lib下才行
比如说你的jdbc driver,servlet.jar等
当然,你把这些都放到Tomcat 4.1\common\lib下也行
anytel 2003-09-11
  • 打赏
  • 举报
回复
zcjl(莫等闲,白了少年头)
我没有设置tomcat的路径在环境变量里面,是不是这个问题?我不知道怎么设?因为每人说的都不一样,不知道听谁的?现在我就人兄弟你的,帮帮忙
zcjl 2003-09-11
  • 打赏
  • 举报
回复
我已经给你说明了怎么新建虚拟目录
也说了tomcat下的目录结构
还把你jsp调用的错误都给出了解决方法

一步步去试试看吧
如果不行再找我
zcjl 2003-09-11
  • 打赏
  • 举报
回复
我已经给你说明了怎么新建虚拟目录
也说了tomcat下的目录结构
还把你jsp调用的错误都给出了解决方法

一步步去试试看吧
如果不行再找我
anytel 2003-09-11
  • 打赏
  • 举报
回复
这些我都改了都不行,各位兄弟,能不能把该程序在您的计算机上跑一下,然后我按照您的配置一步一步的配置,看看行不行,因为我刚学,没办法只能弄个笨方法
zcjl 2003-09-11
  • 打赏
  • 举报
回复
忘了说明了:
javabean、servlet等class要按包的层次放到classes目录下
如你的DBconn就要放到WEB-INF/classes/Mysqltest/下

jsp调用javabean的时候要带上包名,如class="Mysqltest.DBconn"
Geranium 2003-09-11
  • 打赏
  • 举报
回复
同意 hjhd0(hjhd_0) 的意见
zcjl 2003-09-11
  • 打赏
  • 举报
回复
二、jsp中调用javabean:

<jsp:useBean id="DBconn1" scope="page" class="DBconn" type="DBconn" />

改为<jsp:useBean id="DBconn1" scope="page" class="Mysqltest.DBconn" type="Mysqltest.DBconn" />
zcjl 2003-09-11
  • 打赏
  • 举报
回复
一、新建虚拟目录:

1.在tomcat安装目录下的conf文件夹下的server.xml中配置上下文路径,
找到<!-- Tomcat Examples Context -->
在下面添加
<<Context path="/my_jsp" docBase="c:\my_jsp" debug="0" reloadable="true" crossContext="true"/>

2.c:\my_jsp的目录结构如下:

/my_jsp
+
+-------/WEB-INF
+ +
+ +-------/classes //存放class(javabean、servlet等)
+ + +
+ + +-------/package
+ + + +
+ + + +-------*.class
+ + + +
+ +-------/lib //存放一些需要的类库,如你的jdbc driver等
+ + +
+ + +-------*.jar
+ + +
+ +-------/src //存放java源代码(推荐)
+ + +
+ +-------web.xml
+ +
+ +
+-------/yourjsp //存放jsp文件(推荐)
+ +
+ +-------*.jsp
+ +
+-------index.jsp



3.web.xml内容如下

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
</web-app>
pzl686 2003-09-11
  • 打赏
  • 举报
回复
另外把驱动放到tomcat/common/lib下试试
pzl686 2003-09-11
  • 打赏
  • 举报
回复
String username=null;
String userpass=null;
String user="";
String password="";

Class.forName("org.gjt.mm.mysql.Driver").newInstance();
String url = "jdbc:mysql://127.0.0.1:3306/webDB?useUnicode=true&characterEncoding=GBK";
Connection conn= DriverManager.getConnection(url,user,password);
ejbcreate 2003-09-11
  • 打赏
  • 举报
回复
C:\Tomcat\work\Standalone\localhost\examples\jsp\Mysqltest_jsp.java:50: cannot resolve symbol
symbol : class DBconn
location: class org.apache.jsp.Mysqltest_jsp
DBconn DBconn1 = null;
^



An error occurred at line: 7 in the jsp file: /jsp/Mysqltest.jsp

Generated servlet error:
C:\Tomcat\work\Standalone\localhost\examples\jsp\Mysqltest_jsp.java:52: cannot resolve symbol
symbol : class DBconn
location: class org.apache.jsp.Mysqltest_jsp
DBconn1 = (DBconn) pageContext.getAttribute("DBconn1", PageContext.PAGE_SCOPE);
^



An error occurred at line: 7 in the jsp file: /jsp/Mysqltest.jsp

Generated servlet error:
C:\Tomcat\work\Standalone\localhost\examples\jsp\Mysqltest_jsp.java:55: cannot resolve symbol
symbol : class DBconn
location: class org.apache.jsp.Mysqltest_jsp
DBconn1 = (DBconn) java.beans.Beans.instantiate(this.getClass().getClassLoader(), "DBconn");
^
3 errors

~~找不到你的DBconn类。
一、我有个javabean 叫 DBconn.java 放在tomcat主目录下面的examples\WEB-INF\classes\mysqltest下面

//把你的mysqltest目录名改为Mysqltest(和你的java文件中的package名要一模一样, 因为java是区分大小写的。)

..
package Mysqltest;
import java.sql.*;
hjhd0 2003-09-11
  • 打赏
  • 举报
回复
放在了 classes\mysqltest 而package为 Mysqltest; 换成小写的试试 应该是bean没找到的问题
anytel 2003-09-11
  • 打赏
  • 举报
回复
DemonLeo(郁闷的狮子),能帮忙找一个看看吗?
anytel 2003-09-11
  • 打赏
  • 举报
回复
handsy(程序瞎子) ,我的驱动绝对没有问题,我用一个程序试过,能正常查询,是不是class的位置放置有问题,请高手明示!
Geranium 2003-09-11
  • 打赏
  • 举报
回复
gz~
handsy 2003-09-11
  • 打赏
  • 举报
回复
是不是MYSQL 连库的驱动没装
DemonLeo 2003-09-11
  • 打赏
  • 举报
回复
呵呵,查查FAQ。有很多的。
anytel 2003-09-11
  • 打赏
  • 举报
回复
呵呵,大家在外面都不容易
zcjl 2003-09-11
  • 打赏
  • 举报
回复
这样说我可担当不起啊
在论坛里混了那么久,也就知道这些内容
而且,就像xqi8(星期八)所说
很多东西在论坛里搜索一下就可以找到答案了

ps:我是重庆人,在广东
加载更多回复(10)

81,094

社区成员

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

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