這個jsp程式除錯不透過,請各位熱心人幫助解答.
下面是我正在學的"jsp程式設計實務"書上一個例子,主要是示範Request Scope的Bean.
EasyCalculator.html是一個內含表單的網頁,目的是讓使用者輸入一道簡易運算式後,送至Web伺服器端進行處理.送出算式後首先接受處理的是ExprTokenizer.jsp.使用一個ExprTokensList Bean來檢查使用者輸入的算式是否正確.當ExprTokenizer.jsp驗證使用者輸入的算式格式無誤後,把tokensList物件透過Forward程式傳至EasyCalculator.jsp中進行處理,否則它會把錯誤資訊回應給使用者.EasyCaculator.jsp的主要目的是處理算式的計算結果,並以網頁的形式將計算後的值送至使用者的瀏覽器顯示.在EasyCalculator.jsp程式中使用了兩個Bean:一個是由ExprTokenizer.jsp傳來ExprTokensList,另一個則是處理算式計算的ExprParserBean.
EasyCalculator.html程式碼:
<html>
<head>
<title>簡易計算機</title>
<meta http-equiv="Content-Type" content="text/html; charset=big5">
</head>
<body bgcolor="FFFFFF">
<form method="get" action="ExprTokenizer.jsp" name="form1">
<p>請輸入一道運算式:</p>
<p>
<input type="text" name="expression" size="21" maxlength="21">
<input type="submit" name="Submit" value="輸入">
</p>
</form>
</body>
</html>
EasyCalculator.jsp檔案程式碼:
<%@ page language="java" %>
<%@ page import="java.lang.*" %>
<%@ page contentType="text/html; charset=gb2312" %>
<jsp:useBean id="tokensList" scope="request" class="xbook.ch8.beans.ExprTokensList" />
<jsp:useBean id="exprParser" scope="page" class="xbook.ch8.beans.ExprParser" />
<%
exprParser.setTokensList( tokensList ) ;
%>
<html>
<head>
<title>計算結果</title>
</head>
<body bgColor="FFFFFF" >
<div align="center" >
<h1><jsp:getProperty name="exprParser" property="answer" /></h1>
</div>
</body>
</html>
ExprParser.java檔案程式碼:
package xbook.ch8.beans ;
import java.lang.* ;
import xbook.ch8.beans.* ;
public class ExprParser {
String answer ;
public ExprParser() {
this.answer=null ;
}
protected double calculate( double firstElement, String operator, double secondElement )
throws Exception {
if( "+".equals( operator ) )
return firstElement+secondElement ;
else if( "-".equals( operator ) )
return firstElement-secondElement ;
else if( "*".equals( operator ) )
return firstElement*secondElement ;
else if( "/".equals( operator ) ) {
if( secondElement>-1E-5 && secondElement<1E-5 )
throw new Exception() ;
else
return firstElement/secondElement ;
}
else
return firstElement ;
}
public String getAnswer() {
if( this.answer==null )
return "算式格式有誤!" ;
else
return this.answer ;
}
public void setTokensList( ExprTokensList tokenList ) {
double result=0.0 ;
Object element=tokenList.getElement() ;
if( element!=null ) {
if( element instanceof Double )
result=((Double)element).doubleValue() ;
else
return ;
while( ( element=tokenList.getElement() )!=null ) {
String opr="" ;
if( element instanceof String )
opr=(String)element ;
else
return ;
if( ( element=tokenList.getElement() )!=null && element instanceof Double )
try {
result=this.calculate( result, opr, ((Double)element).doubleValue() ) ;
}
catch( Exception ex ) {
return ;
}
else
return ;
}
}
this.answer=String.valueOf( result ) ;
}
}
ExprTokenizer.jsp檔案程式碼:
<%@ page language="java" %>
<%@ page import="java.lang.*" %>
<%@ page contentType="text/html; charset=gb2312" %>
<%
String expr=request.getParameter( "expression" ) ;
%>
<jsp:useBean id="tokensList" scope="request" class="xbook.ch8.beans.ExprTokensList" >
<jsp:setProperty name="tokensList" property="expression" value="<%=expr %>" />
</jsp:useBean>
<%
if( tokensList.isParsingOk() ) {
%>
<jsp:forward page="EasyCalculator.jsp" />
<%
}
else {
%>
<html>
<head>
<title>錯誤訊息</title>
</head>
<body bgColor="FFFFFF" >
<div align="center" >
<h3><jsp:getProperty name="tokensList" property="errorMessage" /></h3>
</div>
</body>
</html>
<%
}
%>
ExprTokensList.java檔案程式碼:
package xbook.ch8.beans ;
import java.lang.* ;
import java.util.* ;
public class ExprTokensList {
Vector tokensList ;
Vector improperTokens ;
public ExprTokensList() {
tokensList=new Vector() ;
improperTokens=new Vector() ;
}
public String getErrorMessage() {
if( improperTokens.size()==0 )
return "沒有發現任何錯誤!" ;
else {
String msg="在算式中發現不適當的元素: " ;
for( Enumeration e=improperTokens.elements() ; e.hasMoreElements() ; )
msg+=( "\""+(String)e.nextElement()+"\" " ) ;
return msg ;
}
}
public Object getElement() {
if( tokensList.size()==0 )
return null ;
else {
Object element=tokensList.firstElement() ;
tokensList.removeElementAt( 0 ) ;
return element ;
}
}
public boolean isParsingOk() {
if( improperTokens.size()==0 )
return true ;
else
return false ;
}
public void setExpression( String expr ) {
StringTokenizer tokenizer=new StringTokenizer( expr, " +-*/", true ) ;
while( tokenizer.hasMoreTokens() ) {
String token=tokenizer.nextToken() ;
if( token.equals( " " ) )
continue ;
if( token.equals( "+" ) || token.equals( "-" ) || token.equals( "*" ) || token.equals( "/" ) )
tokensList.addElement( token ) ;
else {
try {
tokensList.addElement( new Double( token ) ) ;
}
catch( NumberFormatException ex ) {
improperTokens.addElement( token ) ;
}
}
}
}
}
問題:
在執行到ExprTokenizer.jsp的
<jsp:useBean id="tokensList" scope="request" class="xbook.ch8.beans.ExprTokensList" >
<jsp:setProperty name="tokensList" property="expression" value="<%=expr %>" />
</jsp:useBean>
這句時出錯,提示:
java.lang.ClassFormatError: xbook/ch8/beans/ExprTokensList (Bad magic number)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:502)
我猜是expression這個屬性在ExprTokensList.java裡沒定義的原因,但又不知怎麼改才好使.請幫助除錯一下,謝謝!
EasyCalculator.html是一個內含表單的網頁,目的是讓使用者輸入一道簡易運算式後,送至Web伺服器端進行處理.送出算式後首先接受處理的是ExprTokenizer.jsp.使用一個ExprTokensList Bean來檢查使用者輸入的算式是否正確.當ExprTokenizer.jsp驗證使用者輸入的算式格式無誤後,把tokensList物件透過Forward程式傳至EasyCalculator.jsp中進行處理,否則它會把錯誤資訊回應給使用者.EasyCaculator.jsp的主要目的是處理算式的計算結果,並以網頁的形式將計算後的值送至使用者的瀏覽器顯示.在EasyCalculator.jsp程式中使用了兩個Bean:一個是由ExprTokenizer.jsp傳來ExprTokensList,另一個則是處理算式計算的ExprParserBean.
EasyCalculator.html程式碼:
<html>
<head>
<title>簡易計算機</title>
<meta http-equiv="Content-Type" content="text/html; charset=big5">
</head>
<body bgcolor="FFFFFF">
<form method="get" action="ExprTokenizer.jsp" name="form1">
<p>請輸入一道運算式:</p>
<p>
<input type="text" name="expression" size="21" maxlength="21">
<input type="submit" name="Submit" value="輸入">
</p>
</form>
</body>
</html>
EasyCalculator.jsp檔案程式碼:
<%@ page language="java" %>
<%@ page import="java.lang.*" %>
<%@ page contentType="text/html; charset=gb2312" %>
<jsp:useBean id="tokensList" scope="request" class="xbook.ch8.beans.ExprTokensList" />
<jsp:useBean id="exprParser" scope="page" class="xbook.ch8.beans.ExprParser" />
<%
exprParser.setTokensList( tokensList ) ;
%>
<html>
<head>
<title>計算結果</title>
</head>
<body bgColor="FFFFFF" >
<div align="center" >
<h1><jsp:getProperty name="exprParser" property="answer" /></h1>
</div>
</body>
</html>
ExprParser.java檔案程式碼:
package xbook.ch8.beans ;
import java.lang.* ;
import xbook.ch8.beans.* ;
public class ExprParser {
String answer ;
public ExprParser() {
this.answer=null ;
}
protected double calculate( double firstElement, String operator, double secondElement )
throws Exception {
if( "+".equals( operator ) )
return firstElement+secondElement ;
else if( "-".equals( operator ) )
return firstElement-secondElement ;
else if( "*".equals( operator ) )
return firstElement*secondElement ;
else if( "/".equals( operator ) ) {
if( secondElement>-1E-5 && secondElement<1E-5 )
throw new Exception() ;
else
return firstElement/secondElement ;
}
else
return firstElement ;
}
public String getAnswer() {
if( this.answer==null )
return "算式格式有誤!" ;
else
return this.answer ;
}
public void setTokensList( ExprTokensList tokenList ) {
double result=0.0 ;
Object element=tokenList.getElement() ;
if( element!=null ) {
if( element instanceof Double )
result=((Double)element).doubleValue() ;
else
return ;
while( ( element=tokenList.getElement() )!=null ) {
String opr="" ;
if( element instanceof String )
opr=(String)element ;
else
return ;
if( ( element=tokenList.getElement() )!=null && element instanceof Double )
try {
result=this.calculate( result, opr, ((Double)element).doubleValue() ) ;
}
catch( Exception ex ) {
return ;
}
else
return ;
}
}
this.answer=String.valueOf( result ) ;
}
}
ExprTokenizer.jsp檔案程式碼:
<%@ page language="java" %>
<%@ page import="java.lang.*" %>
<%@ page contentType="text/html; charset=gb2312" %>
<%
String expr=request.getParameter( "expression" ) ;
%>
<jsp:useBean id="tokensList" scope="request" class="xbook.ch8.beans.ExprTokensList" >
<jsp:setProperty name="tokensList" property="expression" value="<%=expr %>" />
</jsp:useBean>
<%
if( tokensList.isParsingOk() ) {
%>
<jsp:forward page="EasyCalculator.jsp" />
<%
}
else {
%>
<html>
<head>
<title>錯誤訊息</title>
</head>
<body bgColor="FFFFFF" >
<div align="center" >
<h3><jsp:getProperty name="tokensList" property="errorMessage" /></h3>
</div>
</body>
</html>
<%
}
%>
ExprTokensList.java檔案程式碼:
package xbook.ch8.beans ;
import java.lang.* ;
import java.util.* ;
public class ExprTokensList {
Vector tokensList ;
Vector improperTokens ;
public ExprTokensList() {
tokensList=new Vector() ;
improperTokens=new Vector() ;
}
public String getErrorMessage() {
if( improperTokens.size()==0 )
return "沒有發現任何錯誤!" ;
else {
String msg="在算式中發現不適當的元素: " ;
for( Enumeration e=improperTokens.elements() ; e.hasMoreElements() ; )
msg+=( "\""+(String)e.nextElement()+"\" " ) ;
return msg ;
}
}
public Object getElement() {
if( tokensList.size()==0 )
return null ;
else {
Object element=tokensList.firstElement() ;
tokensList.removeElementAt( 0 ) ;
return element ;
}
}
public boolean isParsingOk() {
if( improperTokens.size()==0 )
return true ;
else
return false ;
}
public void setExpression( String expr ) {
StringTokenizer tokenizer=new StringTokenizer( expr, " +-*/", true ) ;
while( tokenizer.hasMoreTokens() ) {
String token=tokenizer.nextToken() ;
if( token.equals( " " ) )
continue ;
if( token.equals( "+" ) || token.equals( "-" ) || token.equals( "*" ) || token.equals( "/" ) )
tokensList.addElement( token ) ;
else {
try {
tokensList.addElement( new Double( token ) ) ;
}
catch( NumberFormatException ex ) {
improperTokens.addElement( token ) ;
}
}
}
}
}
問題:
在執行到ExprTokenizer.jsp的
<jsp:useBean id="tokensList" scope="request" class="xbook.ch8.beans.ExprTokensList" >
<jsp:setProperty name="tokensList" property="expression" value="<%=expr %>" />
</jsp:useBean>
這句時出錯,提示:
java.lang.ClassFormatError: xbook/ch8/beans/ExprTokensList (Bad magic number)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:502)
我猜是expression這個屬性在ExprTokensList.java裡沒定義的原因,但又不知怎麼改才好使.請幫助除錯一下,謝謝!
相關文章
- 請各位幫我看看javamail的問題(本不應在這裡提這類問題,但在csdn實在沒人幫我解答)JavaAI
- 希望找到的這幾個MVC面試題對各位有幫助MVC面試題
- 請各位高手幫忙!
- 請教banq以及各位熱心的網友,關於JdbcUtilJDBC
- 請求幫助!
- 請求幫助:
- 本人初學JAVA請各位幫幫忙...Java
- 請高手幫忙分析一個JSP小程式的問題JS
- AppleWatch開發教程之除錯程式使用幫助文件APP除錯
- 各位高手請幫忙,不勝感激!!!!
- 請求幫助!謝謝!
- 各位大哥,幫忙解決一下這個問題
- 第六篇:使用前處理器幫助除錯除錯
- 銀子兌換書籍的收貨地址寫錯了,請幫助改正過來~
- 請教各位前輩,這個專案如何做?
- 有關javaAPI,請各位高手幫忙,拜謝JavaAPI
- chatGPT幫助開發實戰解答問題和反思ChatGPT
- 想幫助改善 GNOME 嗎?這個新工具給了你這個機會!
- JSP筆記-除錯JS筆記除錯
- 請教關於jive原始碼,請各位高手幫忙 ,謝謝!!!原始碼
- 實在是解決不了,請各位高手幫忙
- 大家好,初學者請幫助。java sdk 1.4.2安裝出錯Java
- 在jbuilder下,jive出錯。各位幫忙呀!UI
- 對iPhone開發人員有幫助的10個工具iPhone
- 請各位幫幫忙――怎樣在Jbuilder x中加入sql的驅動UISQL
- 對iPad開發人員有幫助的10個工具iPad
- 請教板橋大哥及各位高手,這個case是否能用Jdon框架框架
- 這三個步驟幫助銀行核心系統上雲
- 限界上下文和四色原型,請banq大牛幫助解答一下疑問吧,謝謝原型
- 板橋及各位高手,幫我看看遠端呼叫這個難題,非常感謝。
- 【附原始碼】為了幫助程式設計師談戀愛,我做了這個APP原始碼程式設計師APP
- jive 3.0.8 也有NullPointer異常,懇請幫助!Null
- 高手請進!幫手指出這個演算法裡面的錯誤 (12千字)演算法
- 高手請幫忙看看小弟寫的這個web service:Web
- 應該讓機器人幫助人類,還是讓人類幫助機器人?機器人
- 請問在jsp的form如何透過hidden屬性編寫submit這個流JSORMMIT
- 請教各位高手一個問題
- 請看看這個帖子:JSP 在 JBuilder 7 and WebLogic 6.1中出現錯誤,請問是怎麼回事?JSUIWeb