一個空格引發的錯誤

來源:互聯網
上載者:User

好久沒有更新了,中間經曆了“泄密”時間,隨處都能查到我的密碼,鬱悶啊,光改密碼就花了很長時間,一度曾對csdn比較失望,還好一切都被時間沖淡。

最近比較忙,天天加班寫代碼,從正月初八忙到現在,基本上第一階段可以告一段落了,可以鬆口氣,寫點東西了。

這次內容還是源於一個學生的問題,雖然簡單,但很典型,供初學者參考:

郵件內文如下:

-----------------------------------------割割更清楚-----------------------------------------

大家好! 呵呵,今天收郵件,看到有同學問了一個問題,我感覺這個問題問的還是很有代表性的,所以把我的回複發給大家看一下。 問題是這樣的(附件中“修改前.zip”是產生問題的代碼): 

老師您好,我在實驗一的第三個實驗中編寫了one.jsp,但是在瀏覽器中查看時,不提示輸入整數,而是直接跳轉到two.jsp,並顯示由於沒有圖片的高和寬的數值導致的錯誤,瀏覽器地址還是現實one.jsp,把two.jsp中圖片的高和寬直接賦值後會顯示two.jsp的正確頁面,我試著直接把n的值賦值為40還是直接跳轉two.jsp並報錯,把這段代碼()<jsp:forward page="two.jsp"><jsp:param name="number" value="<% =n %>"/></jsp:forward>刪除後,又直接跳到three.jsp,錯誤一樣,我覺著應該是沒有經過if判斷直接執行了這段代碼,但是不知道怎麼改,麻煩老師告訴我錯誤是什麼,怎麼改,謝謝老師。
 這個問題問的很典型,上課的時候我沒有強調這個問題,咱們先來看看錯誤:

An error occurred at line: 13 in the jsp file: /two.jspSyntax error on token "=", @ expected10: <% String s=request.getParameter("number");11: out.println("<br>傳遞過來的值是"+s);12: %>13: <br><img src="a.jpg" width="<% =s %>" height="<% =s %>"></img>14: </font>15: 16: </body>
 錯誤中很明顯的提示在第13行有錯誤,錯誤是語法錯誤,在“=”號附近,我們單獨來看看這一行:

13: <br><img src="a.jpg" width="<% =s %>" height="<% =s %>"></img>
有沒有發現一些問題? 呵呵,空格,在%號和=號之間有個空格,我說過電腦有時候挺傻的,很“較真”,我們看起來很正常的東東,在電腦看起來就是錯誤的,比如大小寫問題,比如“<%=”中間有空格的問題,這個跟大家編譯原理中學到的相關知識是有密切聯絡的,實際在編譯過程中,空格是區分一個完整文法的“關鍵字”,如果我們把“<%=”中間用空格隔開,編譯過程中會把這三個符號分割成兩個文法,這時候就會出現這樣的問題"<%"是符合文法的,按照JSP的規則,<%裡面應該是Java程式片,可裡面緊跟著是個“=”號,這樣會不會是有語法錯誤?Java文法裡=是不能這樣用的,所以編譯器會報在"="號附近有錯誤。錯誤類型是:

org.apache.jasper.JasperException: Unable to compile class for JSP:Syntax error ......
 另外,有些同學會有疑問,為什麼顯示的是two.jsp的錯誤,而不是one.jsp的錯誤? JSP的編譯順序是按照代碼的順序來的,我們來看看one.jsp的代碼:

<%@ page contentType="text/html;charset=GB2312" %><head><jsp:include page="head.txt"/></head><html><body bgcolor=yellow><FORM action="" method=get name=form>請輸入1-100之間的整數:<input type="text" name="number"><br><input type="submit" value="送出" name=submit></FORM>< % String num=request.getParameter("number");if(num==null)num="0";try{ int n=Integer.parseInt(num);if(n>=1 && n<=50){% > <jsp:forward page="two.jsp"><jsp:param name="number" value="<% =n %>"/></jsp:forward>......
 one.jsp中的錯誤在<jsp:forward page="two.jsp">這個語句後面,所以先顯示two.jsp的錯誤,大家改好two.jsp中的錯誤後,才會顯示one.jsp的錯誤。 許可權問題,只能上傳圖片,程式碼就不上傳了。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.