一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Servlet調(diào)試

 muyable 2013-12-26

  開(kāi)發(fā)使用過(guò)程中始終是難以測(cè)試/調(diào)試servlet。 Servlet往往涉及大量的客戶(hù)端/服務(wù)器交互,可能會(huì)出現(xiàn)錯(cuò)誤但難以重現(xiàn)。

這里有一些提示和建議,可以幫助你調(diào)試。

System.out.println()

System.out.println() 是作為一個(gè)標(biāo)記,以測(cè)試是否有一定的一段代碼被執(zhí)行或不使用。我們可以打印出變量的值。此外:

  • 由于系統(tǒng)對(duì)象是核心Java對(duì)象的一部分,它可以被用于任何地方,而不需要安裝任何額外的類(lèi)中。這包括Servlets和JSP,RMI,EJB,普通Bean和類(lèi),以及獨(dú)立的應(yīng)用程序。

  • 相比在斷點(diǎn)處停止,寫(xiě)入到System.out不會(huì)干擾與應(yīng)用程序的正常執(zhí)行流程,這使得它非常有價(jià)值的,時(shí)序是至關(guān)重要的。

以下是使用System.out.println()的語(yǔ)法: 

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

通過(guò)上面的語(yǔ)法生成的消息將被記錄在Web服務(wù)器日志文件。

消息日志:

這是非常好的想法,使用適當(dāng)?shù)娜罩居涗浄椒▉?lái)記錄所有調(diào)試,警告和錯(cuò)誤消息,使用標(biāo)準(zhǔn)的日志方法。推薦使用Log4j來(lái)記錄所有的消息。

Servlet API還提供了一個(gè)簡(jiǎn)單的方法,使用log()方法輸出信息如下:

// Import required java libraries
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class ContextLog extends HttpServlet {
  public void doGet(HttpServletRequest request, 
      HttpServletResponse response) throws ServletException,
         java.io.IOException {
    
      String par = request.getParameter("par1");
      //Call the two ServletContext.log methods
      ServletContext context = getServletContext( );

      if (par == null || par.equals(""))
      //log version with Throwable parameter
      context.log("No message received:",
          new IllegalStateException("Missing parameter"));
      else
          context.log("Here is the visitor's message: " + par);
      
      response.setContentType("text/html");
      java.io.PrintWriter out = response.getWriter( );
      String title = "Context Log";
      String docType =
      "<!doctype html public \"-//w3c//dtd html 4.0 " +
      "transitional//en\">\n";
      out.println(docType +
        "<html>\n" +
        "<head><title>" + title + "</title></head>\n" +
        "<body bgcolor=\"#f0f0f0\">\n" +
        "<h1 align=\"center\">" + title + "</h1>\n" +
        "<h2 align=\"center\">Messages sent</h2>\n" +
        "</body></html>");
    } //doGet - by www.
}

ServletContext中文本消息記錄到servlet容器的日志文件。對(duì)于Tomcat,這些日志可在<Tomcat-installation-directory>/logs目錄中找到。
這些日志文件做給新出現(xiàn)的錯(cuò)誤或問(wèn)題的頻率的記錄。通常不在發(fā)生異常catch子句中使用log()函數(shù)。


使用JDB調(diào)試器:

可以具有相同的jdb命令您使用調(diào)試applet或應(yīng)用程序的調(diào)試Servlet。

為了調(diào)試一個(gè)servlet,我們可以調(diào)試sun.servlet.http.HttpServer,然后看HttpServer的執(zhí)行Servlet的響應(yīng)HTTP請(qǐng)求從瀏覽器。這是調(diào)試applets小程序非常相似。與applet不同的是,實(shí)際被調(diào)試的程序是sun.applet.AppletViewer。

大多數(shù)調(diào)試器會(huì)自動(dòng)知道如何調(diào)試applet隱藏這個(gè)細(xì)節(jié)。對(duì)于servlet同樣的,你一定要幫調(diào)試器通過(guò)執(zhí)行以下操作:

  • 設(shè)置您的調(diào)試器的類(lèi)路徑,以便它可以找到 sun.servlet.http.Http-Server 和相關(guān)的類(lèi)

  • 設(shè)置調(diào)試器的類(lèi)路徑中,因此它也可以找到servlet和支持類(lèi),通常是在server_root/servlet和server_root/class。

通常你不會(huì)希望server_root/Servlet在classpath中,因?yàn)樗鼤?huì)禁用servlet的重新加載。這種包容性,對(duì)于調(diào)試非常有用。它允許在一個(gè)servlet調(diào)試器設(shè)置斷點(diǎn)之前自定義servlet加載器在HttpServer加載的servlet。

如果已經(jīng)設(shè)置了正確的classpath,就可以開(kāi)始調(diào)試sun.servlet.http.HttpServer??梢栽诟信d趣的servlet代碼中調(diào)試設(shè)置斷點(diǎn),然后使用Web瀏覽器請(qǐng)求給定的servlet(http://localhost:8080/servlet/ServletToDebug)。您應(yīng)該看程序執(zhí)行到停止的斷點(diǎn)。

使用注釋:

代碼中的注釋可以幫助調(diào)試過(guò)程中的各種方式。注釋可用于很多其他的方法在調(diào)試過(guò)程中。

該Servlet使用Java注釋和多行單行(//...)(/* ...*/)注釋可用于暫時(shí)刪除Java代碼部分作用。如果錯(cuò)誤消失,仔細(xì)看看你剛才注釋的代碼,并找出問(wèn)題。

客戶(hù)端和服務(wù)器端頭:

有時(shí),當(dāng)一個(gè)Servlet并沒(méi)有像預(yù)期的那樣,它是非常有用的,看看原始的HTTP請(qǐng)求和響應(yīng)。如果你熟悉HTTP的結(jié)構(gòu),你可以閱讀的請(qǐng)求和響應(yīng),看看這些響應(yīng)頭究竟會(huì)發(fā)生什么事情。

重要的調(diào)試技巧:

下面是更多一些的servlet調(diào)試的調(diào)試技巧的列表:

  • 請(qǐng)注意,server_root/class不會(huì)重載,而server_root/Servlet 可能會(huì)。

  • 要求瀏覽器顯示它會(huì)顯示在頁(yè)面的原始內(nèi)容。這可以幫助識(shí)別格式的問(wèn)題。它通常是“視圖”菜單下的選項(xiàng)。

  • 確保瀏覽器還沒(méi)有緩存的前一個(gè)請(qǐng)求的強(qiáng)制執(zhí)行完全重新加載頁(yè)面的輸出。在Netscape Navigator中,使用Shift-RELOAD;與Internet Explorer使用Shift刷新。

  • 請(qǐng)確認(rèn)servlet的init()方法接受一個(gè)ServletConfig參數(shù),并馬上調(diào)用super.init(config)。   

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多

    五月天六月激情联盟网| 亚洲精品有码中文字幕在线观看 | 色偷偷偷拍视频在线观看| 精品一区二区三区人妻视频| 中文字幕一二区在线观看| 91精品视频免费播放| 亚洲国产综合久久天堂| 国产精品久久男人的天堂| 国产亚洲欧美另类久久久| 好吊妞视频这里有精品| 国产一区二区三区草莓av| 人妻人妻人人妻人人澡| 午夜精品黄片在线播放| 亚洲国产四季欧美一区| 国产传媒免费观看视频| 欧美中文字幕日韩精品| 亚洲视频一区自拍偷拍另类| 成人国产激情在线视频| 性欧美唯美尤物另类视频| 日韩精品视频香蕉视频| 在线观看欧美视频一区| 亚洲日本加勒比在线播放| 中文文精品字幕一区二区 | 99热中文字幕在线精品| 老司机这里只有精品视频| 欧美日韩三区在线观看| 国产精品午夜福利在线观看 | 亚洲精品小视频在线观看| 1024你懂的在线视频| 国产精品涩涩成人一区二区三区| 日韩一区二区三区在线欧洲| 日韩欧美第一页在线观看| 亚洲精品福利入口在线| 国产精品国产亚洲看不卡| 成人亚洲国产精品一区不卡| 日本一区不卡在线观看| 国产又粗又长又爽又猛的视频| 正在播放国产又粗又长| 精品欧美一区二区三久久| 人体偷拍一区二区三区| 久久精品国产99国产免费|