HTTP Status 500 - Unable to compile class for JSP:
type Exception report
message Unable to compile class for JSP:
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: 44 in the jsp file: /NewFile.jsp
number cannot be resolved to a variable
41: java.util.Date date = rs.getDate(5) ;
42: %>
43: <tr>
44: <td><%=number%></td>
45: <td><%=name%></td>
46: <td><%=classnumber%></td>
47: </tr>
An error occurred at line: 45 in the jsp file: /NewFile.jsp
name cannot be resolved to a variable
42: %>
43: <tr>
44: <td><%=number%></td>
45: <td><%=name%></td>
46: <td><%=classnumber%></td>
47: </tr>
48: <%
An error occurred at line: 46 in the jsp file: /NewFile.jsp
classnumber cannot be resolved to a variable
43: <tr>
44: <td><%=number%></td>
45: <td><%=name%></td>
46: <td><%=classnumber%></td>
47: </tr>
48: <%
49: }
Stacktrace:
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:103)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:199)
org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:450)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:361)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:336)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:323)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:564)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
原代码为:
<?xml version="1.0" encoding="UTF-8" ?>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.sql.*"%>
<html>
<head><title>JSP连接SQL 2008</title></head>
<body>
<%!
public static final String DBDRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver" ;
public static final String DBURL = "jdbc:sqlserver://localhost:1433;DatabaseName=student" ;
public static final String DBUSER = "sa" ;
public static final String DBPASS = "1064656308" ;
%>
<%
Connection conn = null ;
PreparedStatement pstmt = null ;
ResultSet rs = null ;
%>
<%
try{
Class.forName(DBDRIVER) ;
conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ;
String sql = "SELECT number,name,classnumber FROM class" ;
pstmt = conn.prepareStatement(sql) ;
rs = pstmt.executeQuery() ;
%>
<center>
<table border="1" width="80%">
<tr>
<td>学号</td>
<td>姓名</td>
<td>班级</td>
</tr>
<%
while(rs.next()){
int empno = rs.getInt(1) ;
String ename = rs.getString(2) ;
String job = rs.getString(3) ;
float sal = rs.getFloat(4) ;
java.util.Date date = rs.getDate(5) ;
%>
<tr>
<td><%=number%></td>
<td><%=name%></td>
<td><%=classnumber%></td>
</tr>
<%
}
%>
</table>
</center>
<%
}catch(Exception e) {
System.out.println(e) ;
}finally{
rs.close() ;
pstmt.close() ;
conn.close() ; // 如果直接关闭连接也可以
}
%>
</body>
</html>
------解决思路----------------------
number,name,classnumber在哪里声明的?怎么没有看到?
------解决思路----------------------
不能编译成class ,说明格式错误,有没有写错什么,少了什么
------解决思路----------------------
<td><%=number%></td>
<td><%=name%></td>
<td><%=classnumber%></td>
这三个变量都没有声明,无法在此直接使用
在上面的代码之前加上下面的声明语句,试试看
<%!
int number = 100;
String name = "lilei";
int classnumber = 12;
%>