本節(jié)我們分析一下常見(jiàn)的 JSP 錯(cuò)誤信息,并給出解決方案。這些錯(cuò)誤大家在實(shí)際開(kāi)發(fā)中會(huì)經(jīng)常遇到,所以有必要在此提及一下。
1.頁(yè)面顯示 500 錯(cuò)誤,錯(cuò)誤信息如下:
An error occurred at line: 6 in the generated java file
Syntax error on token ";", import expected after this token
錯(cuò)誤原因見(jiàn)如下代碼:
<%@ page langue="java" import="java.utli.*; java.text,*"
pageEncoding="GBK">
import 中的分隔符應(yīng)該是逗號(hào),不能用分號(hào)。
2. 頁(yè)面顯示 500 錯(cuò)誤,錯(cuò)誤信息如下:
org.apache.jasper.JasperException: Unable to compile class for JSP:
An error occurred at line: 6 in the generated Java file
Syntax error on tokens, delete these tokens
此類(lèi)信息都表示頁(yè)面的編寫(xiě)出現(xiàn)了語(yǔ)法錯(cuò)誤。
例如,指令中出現(xiàn)了錯(cuò)誤字符,或者使用了錯(cuò)誤的屬性名,或者有錯(cuò)誤的屬性值。
3.頁(yè)面顯示 500 錯(cuò)誤,錯(cuò)誤信息如下:
org.apache.jasper.JasperException: /index.jsp(1,1) Unterminated <
%@ page tag
該信息告訴用戶:指令標(biāo)簽有錯(cuò)誤。
4.頁(yè)面顯示中文為亂碼。例如:
???????JSP??---?????
原因見(jiàn)如下代碼:
<%@ page language="java" contentType="text/html,charset=GBK" import="java.util.*,java.text.*" pageEncoding="GBK"%>
這里contentType="text/html,charset=GBK"分隔符用的是逗號(hào),而此處只能用分號(hào)。
5.錯(cuò)誤:ClassNotFoundException。代表類(lèi)沒(méi)有被找到的異常。
原因:通常出現(xiàn)在 JDBC 連接代碼中,對(duì)應(yīng)的驅(qū)動(dòng) JAR 包沒(méi)有導(dǎo)入,或 sqljdbc.jar 對(duì)應(yīng)的 Class.forName(類(lèi)名) 中的類(lèi)名寫(xiě)錯(cuò)了。
6.錯(cuò)誤信息:主機(jī) TCP/IP 連接失敗。
原因:SQL Server 配置管理器中,未啟用對(duì)應(yīng)的 SQL Server 服務(wù)的 TCP/IP 協(xié)議;或 SQL Server 服務(wù)器沒(méi)有開(kāi)啟服務(wù);或連接字符串中的 localhost 寫(xiě)錯(cuò)了;或啟用的服務(wù)是開(kāi)發(fā)版的 SQL Server,即啟用了 SQL Express 服務(wù);或端口號(hào)寫(xiě)成了 localhost:8080。
7.出錯(cuò)信息:數(shù)據(jù)庫(kù)連接失敗。
檢查 JAR 包導(dǎo)入。
檢查連接字符串和驅(qū)動(dòng)類(lèi)字符串(要避免使用 SQL Server 2000 的連接字符串),例如“databasename=數(shù)據(jù)庫(kù)名”寫(xiě)成了“datebasename=數(shù)據(jù)庫(kù)名”或“localhost: 1433”寫(xiě)成了“localliost:8080”。