JSP筆記-除錯
導讀 | JSP(全稱JavaServer Pages)是由Sun Microsystems公司主導建立的一種動態網頁技術標準。JSP部署於網路伺服器上,可以響應客戶端傳送的請求,並根據請求內容動態地生成HTML、XML或其他格式文件的Web網頁,然後返回給請求者。JSP技術以Java語言作為 語言,為使用者的HTTP請求提供服務,並能與伺服器上的其它Java程式共同處理複雜的業務需求。 |
要測試/除錯一個JSP或servlet程式總是那麼的難。JSP和Servlets程式趨向於牽涉到大量客戶端/伺服器之間的互動,這很有可能會產生錯誤,並且很難重現出錯的環境。
接下來將會給出一些小技巧和小建議,來幫助您除錯程式。
System.out.println()可以很方便地標記一段程式碼是否被執行。當然,我們也可以列印出各種各樣的值。此外:
1.自從System物件成為Java核心物件後,它便可以使用在任何地方而不用引入額外的類。使用範圍包括Servlets,JSP,RMI,EJB's,Beans,類和獨立應用。
2.與在斷點處停止執行相比,用System.out進行輸出不會對應用程式的執行流程造成重大的影響,這個特點在定時機制非常重要的應用程式中就顯得非常有用了。
接下來給出了使用System.out.println()的語法:
System.out.println("Debugging message");
這是一個使用System.out.print()的簡單例子:
<%@taglib prefix="c" uri="%> <html> <head><title>System.out.println</title></head> <body> <c:forEach var="counter" begin="1" end="10" step="1" > <c:out value="${counter-5}"/></br> <% System.out.println( "counter= " + pageContext.findAttribute("counter") ); %> </c:forEach> </body> </html>
現在,如果執行上面的例子的話,它將會產生如下的結果:
-4 -3 -2 -1 1 2 3 4 5
如果使用的是Tomcat伺服器,您就能夠在logs目錄下的stdout.log檔案中發現多出瞭如下內容:
counter=1 counter=2 counter=3 counter=4 counter=5 counter=6 counter=7 counter=8 counter=9 counter=10
使用這種方法可以將變數和其它的資訊輸出至系統日誌中,用來分析並找出造成問題的深層次原因。
J2SE日誌框架可為任何執行在JVM中的類提供日誌記錄服務。因此我們可以利用這個框架來記錄任何資訊。
讓我們來重寫以上程式碼,使用JDK中的 logger API:
<%@taglib prefix="c" uri="%> <%@page import="java.util.logging.Logger" %> <html> <head><title>Logger.info</title></head> <body> <% Logger logger=Logger.getLogger(this.getClass().getName());%> <c:forEach var="counter" begin="1" end="10" step="1" > <c:set var="myCount" value="${counter-5}" /> <c:out value="${myCount}"/></br> <% String message = "counter=" + pageContext.findAttribute("counter") + " myCount=" + pageContext.findAttribute("myCount"); logger.info( message ); %> </c:forEach> </body> </html>
它的執行結果與先前的類似,但是,它可以獲得額外的資訊輸出至stdout.log檔案中。在這我們使用了logger中的info方法。下面我們給出stdout.log檔案中的一個快照:
24-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspService INFO: counter=1 myCount=-4 24-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspService INFO: counter=2 myCount=-3 24-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspService INFO: counter=3 myCount=-2 24-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspService INFO: counter=4 myCount=-1 24-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspService INFO: counter=5 myCount=0 24-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspService INFO: counter=6 myCount=1 24-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspService INFO: counter=7 myCount=2 24-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspService INFO: counter=8 myCount=3 24-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspService INFO: counter=9 myCount=4 24-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspService INFO: counter=10 myCount=5
訊息可以使用各種優先順序傳送,通過使用sever(),warning(),info(),config(),fine(),finer(),finest()方法。finest()方法用來記錄最好的資訊,而sever()方法用來記錄最嚴重的資訊。
使用Log4J 框架來將訊息記錄在不同的檔案中,這些訊息基於嚴重程度和重要性來進行分類。
NetBeans是樹形結構,是開源的Java綜合開發環境,支援開發獨立的Java應用程式和網路應用程式,同時也支援JSP除錯。
NetBeans支援如下幾個基本的除錯功能:
1.斷點
2.單步跟蹤
3.觀察點
詳細的資訊可以檢視NetBeans使用手冊。
可以在JSP和servlets中使用jdb 來進行除錯,就像除錯普通的應用程式一樣。
通常,我們直接除錯sun.servlet.http.HttpServer 物件來檢視HttpServer在響應HTTP請求時執行JSP/Servlets的情況。這與除錯applets非常相似。不同之處在於,applets程式實際除錯的是sun.applet.AppletViewer。
大部分偵錯程式在除錯applets時都能夠自動忽略掉一些細節,因為它知道如何除錯applets。如果想要將除錯物件轉移到JSP身上,就需要做好以下兩點:
1.設定偵錯程式的classpath,讓它能夠找到sun.servlet.http.Http-Server 和相關的類。
2.設定偵錯程式的classpath,讓它能夠找到您的JSP檔案和相關的類。
設定好classpath後,開始除錯sun.servlet.http.Http-Server 。您可以在JSP檔案的任意地方設定斷點,只要你喜歡,然後使用瀏覽器傳送一個請求給伺服器就應該可以看見程式停在了斷點處。
程式中的註釋在很多方面都對程式的除錯起到一定的幫助作用。註釋可以用在除錯程式的很多方面中。
JSP使用Java註釋。如果一個BUG消失了,就請仔細檢視您剛註釋過的程式碼,通常都能找出原因。
有時候,當JSP沒有按照預定的方式執行時,檢視未加工的HTTP請求和響應也是很有用的。如果對HTTP的結構很熟悉的話,您可以直接觀察request和response然後看看這些頭模組到底怎麼了。
這裡我們再透露兩個除錯JSP的小技巧:
1.使用瀏覽器顯示原始的頁面內容,用來區分是否是格式問題。這個選項通常在View選單下。
2.確保瀏覽器在強制重新載入頁面時沒有捕獲先前的request輸出。若使用的是Netscape Navigator瀏覽器,則用Shift-Reload;若使用的是IE瀏覽器,則用Shift-Refresh。
原文來自:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2786074/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- JSP筆記-sessionJS筆記Session
- 筆記|軟體除錯的技巧筆記除錯
- JSP筆記-隱式物件JS筆記物件
- JSP筆記-生命週期JS筆記
- VS斷點除錯簡單筆記斷點除錯筆記
- Bug除錯專項訓練四筆記除錯筆記
- Bug除錯專項訓練三筆記除錯筆記
- JSP筆記-傳送郵件JS筆記
- JSP筆記-頁面重定向JS筆記
- JSP筆記-檔案上傳JS筆記
- spark學習筆記--Spark調優與除錯Spark筆記除錯
- 海康ID2013掃碼槍除錯筆記除錯筆記
- JSP筆記-點選量統計JS筆記
- JSP筆記-XML 資料處理JS筆記XML
- 除錯一記除錯
- javaweb關於jsp、servlet基礎筆記JavaWebJSServlet筆記
- 嵌入式開發筆記——除錯元件SEGGER_HardFaultHandle筆記除錯元件
- 嵌入式開發筆記——除錯元件SEGGER_RTT筆記除錯元件
- GDB除錯使用記錄除錯
- Java學習筆記-Day53 Servlet與JSPJava筆記ServletJS
- h5學習筆記:動態載入vconsole 除錯工具H5筆記除錯
- Python 學習除錯記錄Python除錯
- GitHub學習除錯記錄Github除錯
- Supervisor 安裝除錯記錄除錯
- 除錯篇——除錯物件與除錯事件除錯物件事件
- 記憶體洩漏除錯工具記憶體除錯
- Node除錯指南-記憶體篇除錯記憶體
- 【隨筆記】T507 ADC SGM58031 16BIT 4Channel 除錯記錄筆記除錯
- 學習韓順平細說Servlet/Jsp視訊筆記(一)ServletJS筆記
- 在Windows筆記本上除錯執行在iOS裝置上的前端應用Windows筆記除錯iOS前端
- SPI轉can晶片CSM300詳解以及Linux驅動移植除錯筆記晶片Linux除錯筆記
- android nfc tag3 除錯日記Android除錯
- FCoE測試重啟除錯記錄除錯
- Windows windbg kernel debug 雙機核心除錯 - USB3.0 除錯 USB除錯 除錯線Windows除錯
- 《Java8實戰》-第八章筆記(重構、測試和除錯)Java筆記除錯
- [翻譯] 除錯 Rxjs(二):日誌記錄除錯JS
- 10.3 除錯事件轉存程式記憶體除錯事件記憶體
- Python 程式碼除錯—使用 pdb 除錯Python除錯