亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

direktori cari
JSP 基礎(chǔ)教程 JSP 開發(fā)環(huán)境搭建 JSP 結(jié)構(gòu) JSP 生命周期 JSP 語(yǔ)法 JSP 指令 JSP 動(dòng)作元素 JSP 隱式對(duì)象 JSP 客戶端請(qǐng)求 JSP 服務(wù)器響應(yīng) JSP HTTP 狀態(tài)碼 JSP 表單處理 JSP 過濾器 JSP Cookies 處理 JSP Session JSP 文件上傳 JSP 日期處理 JSP 頁(yè)面重定向 JSP 點(diǎn)擊量統(tǒng)計(jì) JSP 自動(dòng)刷新 JSP 發(fā)送郵件 JSP 高級(jí)教程 JSP 標(biāo)準(zhǔn)標(biāo)簽庫(kù)(JSTL) <c:out> 標(biāo)簽 <c:set> 標(biāo)簽 <c:remove> 標(biāo)簽 <c:catch> 標(biāo)簽 <c:if> 標(biāo)簽 <c:choose> <c:import> 標(biāo)簽 <c:forEach> <c:param> 標(biāo)簽 <c:redirect> 標(biāo)簽 <fmt:formatNumber>標(biāo)簽 <fmt:parseNumber> 標(biāo)簽 <fmt:formatDate> 標(biāo)簽 <fmt:parseDate> 標(biāo)簽 <fmt:bundle> 標(biāo)簽 <fmt:setLocale> 標(biāo)簽 <fmt:setBundle> 標(biāo)簽 <fmt:timeZone> 標(biāo)簽 <fmt:setTimeZone> 標(biāo)簽 <fmt:message> 標(biāo)簽 <fmt:requestEncoding> 標(biāo)簽 <sql:setDataSource> 標(biāo)簽 <sql:query> 標(biāo)簽 <sql:update> 標(biāo)簽 <sql:param> 標(biāo)簽 <sql:dateParam> 標(biāo)簽 <sql:transaction> 標(biāo)簽 <x:out> 標(biāo)簽 <x:parse> 標(biāo)簽 <x:set> 標(biāo)簽 <x:if> 標(biāo)簽 <x:forEach> 標(biāo)簽 <x:choose> <x:transform> 標(biāo)簽 <x:param> 標(biāo)簽 fn:contains()函數(shù) fn:containsIgnoreCase()函數(shù) fn:endsWith()函數(shù) fn:escapeXml()函數(shù) fn:indexOf()函數(shù) fn:join()函數(shù) fn:length()函數(shù) fn:replace()函數(shù) fn:split()函數(shù) fn:startsWith()函數(shù) fn:substring()函數(shù) fn:substringAfter()函數(shù) fn:substringBefore()函數(shù) fn:toLowerCase()函數(shù) fn:toUpperCase()函數(shù) fn:trim()函數(shù) JSP 連接數(shù)據(jù)庫(kù) JSP XML 數(shù)據(jù)處理 JSP JavaBean JSP 自定義標(biāo)簽 JSP 表達(dá)式語(yǔ)言 JSP 異常處理 JSP 調(diào)試 JSP 國(guó)際化
watak

JSP 調(diào)試


要測(cè)試/調(diào)試一個(gè)JSP或servlet程序總是那么的難。JSP和Servlets程序趨向于牽涉到大量客戶端/服務(wù)器之間的交互,這很有可能會(huì)產(chǎn)生錯(cuò)誤,并且很難重現(xiàn)出錯(cuò)的環(huán)境。

接下來(lái)將會(huì)給出一些小技巧和小建議,來(lái)幫助您調(diào)試程序。


使用System.out.println()

System.out.println()可以很方便地標(biāo)記一段代碼是否被執(zhí)行。當(dāng)然,我們也可以打印出各種各樣的值。此外:

  • 自從System對(duì)象成為Java核心對(duì)象后,它便可以使用在任何地方而不用引入額外的類。使用范圍包括Servlets,JSP,RMI,EJB's,Beans,類和獨(dú)立應(yīng)用。
  • 與在斷點(diǎn)處停止運(yùn)行相比,用System.out進(jìn)行輸出不會(huì)對(duì)應(yīng)用程序的運(yùn)行流程造成重大的影響,這個(gè)特點(diǎn)在定時(shí)機(jī)制非常重要的應(yīng)用程序中就顯得非常有用了。

接下來(lái)給出了使用System.out.println()的語(yǔ)法:

System.out.println("Debugging message");

這是一個(gè)使用System.out.print()的簡(jiǎn)單例子:

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<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>

現(xiàn)在,如果運(yùn)行上面的例子的話,它將會(huì)產(chǎn)生如下的結(jié)果:

-4
-3
-2
-1
0
1
2
3
4
5

如果使用的是Tomcat服務(wù)器,您就能夠在logs目錄下的stdout.log文件中發(fā)現(xiàn)多出了如下內(nèi)容:

counter=1
counter=2
counter=3
counter=4
counter=5
counter=6
counter=7
counter=8
counter=9
counter=10

使用這種方法可以將變量和其它的信息輸出至系統(tǒng)日志中,用來(lái)分析并找出造成問題的深層次原因。


使用JDB Logger

J2SE日志框架可為任何運(yùn)行在JVM中的類提供日志記錄服務(wù)。因此我們可以利用這個(gè)框架來(lái)記錄任何信息。

讓我們來(lái)重寫以上代碼,使用JDK中的 logger API:

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@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>

它的運(yùn)行結(jié)果與先前的類似,但是,它可以獲得額外的信息輸出至stdout.log文件中。在這我們使用了logger中的info方法。下面我們給出stdout.log文件中的一個(gè)快照:

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

消息可以使用各種優(yōu)先級(jí)發(fā)送,通過使用sever(),warning(),info(),config(),fine(),finer(),finest()方法。finest()方法用來(lái)記錄最好的信息,而sever()方法用來(lái)記錄最嚴(yán)重的信息。

使用Log4J 框架來(lái)將消息記錄在不同的文件中,這些消息基于嚴(yán)重程度和重要性來(lái)進(jìn)行分類。


調(diào)試工具

NetBeans是樹形結(jié)構(gòu),是開源的Java綜合開發(fā)環(huán)境,支持開發(fā)獨(dú)立的Java應(yīng)用程序和網(wǎng)絡(luò)應(yīng)用程序,同時(shí)也支持JSP調(diào)試。

NetBeans支持如下幾個(gè)基本的調(diào)試功能:

  • 斷點(diǎn)
  • 單步跟蹤
  • 觀察點(diǎn)

詳細(xì)的信息可以查看NetBeans使用手冊(cè)。


使用JDB Debugger

可以在JSP和servlets中使用jdb命令來(lái)進(jìn)行調(diào)試,就像調(diào)試普通的應(yīng)用程序一樣。

通常,我們直接調(diào)試sun.servlet.http.HttpServer 對(duì)象來(lái)查看HttpServer在響應(yīng)HTTP請(qǐng)求時(shí)執(zhí)行JSP/Servlets的情況。這與調(diào)試applets非常相似。不同之處在于,applets程序?qū)嶋H調(diào)試的是sun.applet.AppletViewer。

大部分調(diào)試器在調(diào)試applets時(shí)都能夠自動(dòng)忽略掉一些細(xì)節(jié),因?yàn)樗廊绾握{(diào)試applets。如果想要將調(diào)試對(duì)象轉(zhuǎn)移到JSP身上,就需要做好以下兩點(diǎn):

  • 設(shè)置調(diào)試器的classpath,讓它能夠找到sun.servlet.http.Http-Server? 和相關(guān)的類。
  • 設(shè)置調(diào)試器的classpath,讓它能夠找到您的JSP文件和相關(guān)的類。

設(shè)置好classpath后,開始調(diào)試sun.servlet.http.Http-Server 。您可以在JSP文件的任意地方設(shè)置斷點(diǎn),只要你喜歡,然后使用瀏覽器發(fā)送一個(gè)請(qǐng)求給服務(wù)器就應(yīng)該可以看見程序停在了斷點(diǎn)處。


使用注釋

程序中的注釋在很多方面都對(duì)程序的調(diào)試起到一定的幫助作用。注釋可以用在調(diào)試程序的很多方面中。

JSP使用Java注釋。如果一個(gè)BUG消失了,就請(qǐng)仔細(xì)查看您剛注釋過的代碼,通常都能找出原因。


客戶端和服務(wù)器的頭模塊

有時(shí)候,當(dāng)JSP沒有按照預(yù)定的方式運(yùn)行時(shí),查看未加工的HTTP請(qǐng)求和響應(yīng)也是很有用的。如果對(duì)HTTP的結(jié)構(gòu)很熟悉的話,您可以直接觀察request和response然后看看這些頭模塊到底怎么了。


重要調(diào)試技巧

這里我們?cè)偻嘎秲蓚€(gè)調(diào)試JSP的小技巧:

  • 使用瀏覽器顯示原始的頁(yè)面內(nèi)容,用來(lái)區(qū)分是否是格式問題。這個(gè)選項(xiàng)通常在View菜單下。
  • 確保瀏覽器在強(qiáng)制重新載入頁(yè)面時(shí)沒有捕獲先前的request輸出。若使用的是Netscape Navigator瀏覽器,則用Shift-Reload;若使用的是IE瀏覽器,則用Shift-Refresh。

關(guān)于我們 聯(lián)系我們 留言板

手冊(cè)網(wǎng)

Artikel sebelumnya: Artikel seterusnya: