各位兄弟,我在jsp页面中连接sqlserver数据库,出错。
我下载了SQL Server 2005 JDBC Driver,其中的jar文件我也放到classpath环境变量中了
我也把jar文件导入到工程中了。我用一个单纯的java类来连接不会出什么问题,但是在jsp页面中总是会出错。
我实在是找不出是哪里的原因,万般无奈之下才求助各位,希望大家指点迷津。
谢谢了……控制台的提示信息是这样的:
2011-2-16 11:54:48 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet jsp threw exception
java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
at org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:128)
at org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:66)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at org.apache.jsp.testDatabase.testConSql_jsp._jspService(testConSql_jsp.java:79)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:386)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:864)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1665)
at java.lang.Thread.run(Thread.java:619)
页面上服务器返回的信息是这样的: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 /testDatabase/testConSql.jsp at line 2421:   <body>
22:   <%
23:  // try{
24:    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
25:    String url = "jdbc:sqlserver://localhost:4000;databaseName=testJsp";
26:    Connection conn = DriverManager.getConnection(url,"sa","sa123456");
27:    Statement sqlStmt = conn.createStatement();
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:519)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:410)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause javax.servlet.ServletException: java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:865)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:794)
org.apache.jsp.testDatabase.testConSql_jsp._jspService(testConSql_jsp.java:99)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:386)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

解决方案 »

  1.   

    是不是forName参数有空格什么的
      

  2.   


    没有  
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
      

  3.   

    看tomcat里项目下WEB-INF里的lib下是否有该jar包,没有的话加进去
      

  4.   


    工程的lib中有就可以了,不是必须放到tomcat的lib下
      

  5.   

       我估计你的sql2005的jar没有放进工程的lib中去。  右击你的项目--》》属性--》》java Build path --》》libraries :查看是否有sql2005的jar包,没有 就用add jar添加进去。  这样就不会报这样的错了。
      

  6.   


    确实是这样勒,谢谢
    我把jar包拷贝到工程的web-inf下的lib目录下就没问题了。
    我以为只要在build path中add了就没问题了呢。
    其实不需要在build path中add就行
      

  7.   

    总结:在build path下add jar包,只能保证java类能顺利执行,但是jsp页面中照样会报错。
    如果只把jar包拷贝到web-inf下的lib目录下,jsp页面中就不会报错,但是java类却不能执行。谢谢大家乐