请教!为何不能通过一个简单的数据库连接测试?

jmcoder 2010-04-17 11:23:33
我的开发平台是win2003+msql2000+tomcat4.1+j2sdk1.4.2,全都装好了,连SQL Server 2000 For JDBC 驱动程序也装了,测试j2sdk1.4.2成功,tomcat4.1能启动并能看到欢迎界面,msql2000运行正常,我的测试文件是mytest.jsp,文件放在tomcat文件夹下的webapps文件夹下,mytest.jsp源码如下:

<%@ page import="java.lang.*, java.io.*, java.sql.*, java.util.*" contentType="text/html;charset=gb2312" %>
  <html>
  <body>
  <% Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
   String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs";
   //pubs 为你的数据库的
   String user="sa";
   String password="admin";
   Connection conn= DriverManager.getConnection(url,user,password);
   Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
   String sql="select job_id,job_desc from jobs";
   ResultSet rs=stmt.executeQuery(sql);
   while(rs.next()) { %>
    您的第一个字段内容为:<%=rs.getString(1)%><br>
    您的第二个字段内容为:<%=rs.getString(2)%><br>
  <% } %>
  <% out.print("数据库操作成功,恭喜你"); %>
  <% rs.close();
   stmt.close();
   conn.close();
  %>
  </body>
  </html>
在地址中输入:http://localhost:8080/mytest.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: /mytest.jsp(0,3) Invalid directive
at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:49)
at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:383)
at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:81)
at org.apache.jasper.compiler.Parser.parseDirective(Parser.java:341)
at org.apache.jasper.compiler.Parser.parseElements(Parser.java:749)
at org.apache.jasper.compiler.Parser.parse(Parser.java:77)
at org.apache.jasper.compiler.ParserController.parse(ParserController.java:159)
at org.apache.jasper.compiler.ParserController.parse(ParserController.java:111)
at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:185)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:355)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:427)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:142)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:240)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:187)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:720)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:199)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:145)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:955)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:139)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:955)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2460)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:133)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:119)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:116)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:955)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:127)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:955)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:157)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:873)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Thread.java:534)



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

Apache Tomcat/4.1.40

请高手指正,我错在哪里?
...全文
146 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
jmcoder 2010-04-21
  • 打赏
  • 举报
回复
我终于找到了问题所在了,开始是部署的问题,后来发现代码也有问题,我的源码是在网上摘录复制下来的,直接保存为jsp文件,其实其中有的代码或是空格都是错的,后来一行行来试,在tomcat的编译提示中找出错的代码,修改后就没问题。得出总结,学习是没有捷径的,只有用严谨和勤奋刻苦的态度去对待,才能学得好。多谢以上各位的热心指导,是你们给了我解决问题的思路与信心。我爱你们,更爱csdn这个大家庭!
jmcoder 2010-04-19
  • 打赏
  • 举报
回复
现在我已经将问题缩小到是代码的问题,不再是无效路径或部署的问题了,问题就在第一行代码<%@ page import="java.lang.*, java.io.*, java.sql.*, java.util.*" contentType="text/html;charset=gb2312" %>导入包时出错,我是刚学jsp的,所以想请教一下。
cycloneTeam 2010-04-18
  • 打赏
  • 举报
回复
先把里面的JAVA代码删除了。再访问下。如果还有问题就是部署的问题。如果没有问题,就把代码一点点的加进去,调试下,看看哪行代码有问题。
havelock 2010-04-18
  • 打赏
  • 举报
回复
建议你看一下tomcat的目录结果.
jsp文件必须放在web项目里面

不是放哪都行的.
jmcoder 2010-04-18
  • 打赏
  • 举报
回复
我将文件放在root文件夹里也是出同样的错


dameimm 2010-04-18
  • 打赏
  • 举报
回复
jobs表里的开始两个字段都是string类型的?如果不是,用相应的类型取值。
huangqibing0626 2010-04-18
  • 打赏
  • 举报
回复
org.apache.jasper.JasperException: /mytest.jsp(0,3) Invalid directive 无效路径!
建议楼主先调试一个简单的jsp文件,在去做连接数据库的实验。
另外,tomcat4.1+j2sdk1.4.2···这工具也太老了吧,建议下载新的版本!
jmcoder 2010-04-18
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 cycloneteam 的回复:]
先把里面的JAVA代码删除了。再访问下。如果还有问题就是部署的问题。如果没有问题,就把代码一点点的加进去,调试下,看看哪行代码有问题。
[/Quote]

问题应该出现在<%@ page import="java.lang.*, java.io.*, java.sql.*, java.util.*" contentType="text/html;charset=gb2312" %>
也就是运行第一代码就出错,将它去掉下面不加java代码就没有报错,应该如何处理呢?请指教!

xiaohuanjie 2010-04-18
  • 打赏
  • 举报
回复
org.apache.jasper.JasperException: /mytest.jsp(0,3) Invalid directive

路径错了

把mytest.jsp直接webapps文件夹下,这不是tomcat的工作方式


在webapps下建一文件夹,例如test,把mytest.jsp放进test中,这样再测试就没问题了

至少不会再有Invalid directive问题了
jmcoder 2010-04-18
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 xgr_xgr 的回复:]
不知道你有没下那3个JAR包,我之前就是没有下,所以耽误了很多时间
[/Quote]

你指的是msbase.jar , mssqlserver.jar, msutil.jar这三个文件吗,我都放在lib文件夹里面了
jmcoder 2010-04-18
  • 打赏
  • 举报
回复
应该不是部署的问题了,我将一个不含数据库连接代码的jsp放在同一目录,能正常运行
xgr_xgr 2010-04-18
  • 打赏
  • 举报
回复
不知道你有没下那3个JAR包,我之前就是没有下,所以耽误了很多时间
小李子 2010-04-17
  • 打赏
  • 举报
回复
路径错了
你还不如放在root目录下
建议你先理解一下web application的基本概念
最近在研究如何用 易语言 连接oracle数据库,搜集了网上很多源码和请教了一些人都没能测试成功。 经过不懈努力,我终于测通了!哈哈哈哈~ 不过,我想吐槽的是: 在搜集资料过程中,发现很多人都说易语言很难连上oracle,讲真,我也觉得官方不够给力! oracle作为全球第一大数据库厂商,为什么出易语言的官方支持库来适配呢? 虽然说可以通过调用windows的odbc来连,但这对不懂的人来说是很困难的一件事! 所以,真心希望官方能开发出oracle的支持库!!! 在测试过程中,我总结了以下几个需要注意的点: 1、无论你的电脑是32位还是64位,都必须安装32位的oracle客户端。安装类型可以是:管理员、运行时。 2、从oracle 11g以后,oracle官方不再提供32位的客户端安装介质。目前最新的oracle客户端为win32_11gR2_client.zip,可直接从官网下载。 3、选择DRIVER连接时,需要先在$ORACLE_HOME/network/admin/tnsnames.ora文件中的定义的一个连接名,测试成功后再将连接名配置在SERVER(连接服务名)中。 4、选择DSN连接时,需要先在OS系统数据源(32位)中配置好数据源,测试成功后再将数据源名称配置在DSN(数据源)中。 只要你按照以上几点来,就肯定可以用易语言连接oracle,并执行简单查询。 我自己的测试代码已分享出来了,需要oracle客户端的朋友可以去官方下载,也可以私信我。 好了,第一次参加这么盛大的活动,小小意思,请各位看官指点,谢谢!

81,092

社区成员

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

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