一个星期也没解决。真的感觉自己很失败呀!!!!!!!!
使用环境:
winxp
Tomcat/5.5.26
j2sdk 1.5
SQL server 2000 打了SP4补丁
安装了Microsoft SQL Server 2000 Driver for JDBC sp3
WEB-INF\lib下也放了jar包。平常的数据库连接都可以。
这是个书中的例子,做时出现问题:
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" %>
<jsp:useBean id="conn" scope="page" class="com.ConnDB"/>
<%
String sql="select * from tb_branch";
ResultSet rs=conn.executeQuery(sql);
%>
<html>
<head>
<title>选择所有列 </title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link href="CSS/style.css" rel="stylesheet">
</head>
<body>
<table width="600" height="201" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF">
<tr>
<td height="201" valign="top">
<table width="100%" height="77" border="1" cellpadding="0" cellspacing="0" bordercolor="#FFFFFF" bordercolordark="#FFFFFF" bordercolorlight="#666666">
<tr style="padding:5px;">
<td height="24" colspan="4" align="center" bgcolor="#CCCCCC">≡≡≡ 部门全部信息 ≡≡≡ </td>
</tr>
<tr>
<td width="18%" height="27" align="center"> ID号 </td>
<td width="36%" align="center">部门名称 </td>
<td width="20%" align="center">联系电话 </td>
<td width="8%" align="center">备注 </td>
</tr>
<%
try{
while(rs.next()){
%>
<tr style="padding:5px;">
<td height="24" align="center"> <%=rs.getInt("id")%> </td>
<td align="center"> <%=rs.getString("name")%> </td>
<td align="center"> <%=rs.getString("tel")%> </td>
<td align="center"> <%=rs.getString("memo")%> </td>
</tr>
<%
}
}catch(Exception e){}
%>
</table> </td>
</tr>
</table>
</body>
</html>
错误如下:
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 load class for JSP
org.apache.jasper.JspCompilationContext.load(JspCompilationContext.java:599)
org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:137)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:314)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
root cause
java.lang.ClassNotFoundException: org.apache.jsp._01.index_jsp
java.net.URLClassLoader$1.run(Unknown Source)
java.security.AccessController.doPrivileged(Native Method)
java.net.URLClassLoader.findClass(Unknown Source)
org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:131)
org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:63)
org.apache.jasper.JspCompilationContext.load(JspCompilationContext.java:597)
org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:137)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:314)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.26 logs.
查了一天也不知道问题出现在什么地方,网上也没有搜出来,请高手帮忙好吗?
package com;
import java.sql.*;
/**
* 文件名:ConnDB
* 描述:操作数据库
* 公司:明日科技
* 作者:无语
*/
public class ConnDB {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
public ConnDB() {
try {
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
} catch (java.lang.ClassNotFoundException e) {
System.err.println(e.getMessage());
}
}
/**
* 功能描述: 执行查询操作
* 参数: String
* 返回值: ResultSet
*/
public ResultSet executeQuery(String sql) {
try {
conn = DriverManager
.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=db_JSDQ11;user=sa;password=");
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
rs = stmt.executeQuery(sql);
} catch (SQLException ex) {
System.err.println(ex.getMessage());
}
return rs;
}
/**
* 功能描述: 执行更新操作
* 参数: String
* 返回值: int
*/
public int executeUpdate(String sql) {
int result = 0;
try {
conn = DriverManager
.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=db_JSDQ11;user=sa;password=");
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
result = stmt.executeUpdate(sql);
} catch (SQLException ex) {
result = 0;
}
return result;
}
/**
* 功能描述: 关闭数据库连接
* 参数: 无
* 返回值: void
*/
public void close() {
try {
if (rs != null)
rs.close();
} catch (Exception e) {
e.printStackTrace(System.err);
}
try {
if (stmt != null)
stmt.close();
} catch (Exception e) {
e.printStackTrace(System.err);
}
try {
if (conn != null) {
conn.close();
}
} catch (Exception e) {
e.printStackTrace(System.err);
}
}
}
web.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
</web-app>
再说一下我的目录吧:
webapps\sl\01文件夹中有所有的文件。
webapps\sl\01\index.jsp
webapps\sl\01\WEB-INF\classes\com\ConnDB.class
webapps\sl\01\WEB-INF\lib下有三个JAR包。
webapps\sl\01\WEB-INF\web.xml
[解决办法]
请问你的工程名叫什么
webapps\sl\01\index.jsp
是叫sl吗?
如果工程名是sl,那么01是不是下面的一个文件夹,用来放页面文件,这样的话目录结构应该是这样
webapps\sl\01\index.jsp
webapps\sl\WEB-INF\classes\com\ConnDB.class
webapps\sl\WEB-INF\lib下有三个JAR包。
webapps\sl\WEB-INF\web.xml
如果工程名是01,我还没碰到过在webapps下面可以有两层目录才指定到工程名的,当然我知识有限,或许有这种方式的。
我的异常网推荐解决方案:The server encountered an internal error () that prevented it from fulfilling this request.,http://www.myexception.cn/java-web/317.html