黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

Servlet教程

Servlet調(diào)試

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

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

System.out.println()

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

• 由于 System 對(duì)象是核心 Java 對(duì)象的一部分,它可以在不需要安裝任何額外類的情況下被用于任何地方。這包括 Servlet、JSP、RMI、EJB's、普通的 Beans 和類,以及獨(dú)立的應(yīng)用程序。

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

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

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

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

消息日志

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

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

// 導(dǎo)入必需的 java 庫(kù)
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");
      // 調(diào)用兩個(gè) ServletContext.log 方法
      ServletContext context = getServletContext( );

      if (par == null || par.equals(""))
      // 通過(guò) Throwable 參數(shù)記錄版本
      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 \"-//bjpowernode//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
}

ServletContext 把它的文本消息記錄到 Servlet 容器的日志文件中。對(duì)于 Tomcat,這些日志可以在 /logs 目錄中找到。

這些日志文件確實(shí)對(duì)新出現(xiàn)的錯(cuò)誤或問(wèn)題的頻率給出指示。正因?yàn)槿绱耍ㄗh在通常不會(huì)發(fā)生的異常的 catch 子句中使用 log() 函數(shù)。

使用 JDB 調(diào)試器

您可以使用調(diào)試 applet 或應(yīng)用程序的 jdb 命令來(lái)調(diào)試 Servlet。

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

大多數(shù)調(diào)試器會(huì)自動(dòng)隱藏如何調(diào)試 applet 的細(xì)節(jié)。同樣的,對(duì)于 servlet,您必須幫調(diào)試器執(zhí)行以下操作:

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

• 設(shè)置您的調(diào)試器的類路徑 classpath,以便它可以找到您的 servlet 和支持的類,通常是在 server_root/servlets 和 server_root/classes 中。

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

如果您已經(jīng)設(shè)置了正確的類路徑 classpath,就可以開(kāi)始調(diào)試 sun.servlet.http.HttpServer。可以在您想要調(diào)試的 Servlet 代碼中設(shè)置斷點(diǎn),然后通過(guò) Web 瀏覽器使用給定的 Servlet(http://localhost:8080/servlet/ServletToDebug)向 HttpServer 發(fā)出請(qǐng)求。您會(huì)看到程序執(zhí)行到斷點(diǎn)處會(huì)停止。

使用注釋

代碼中的注釋有助于以各種方式進(jìn)行調(diào)試。注釋可用于調(diào)試過(guò)程的很多其他方式中。

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

客戶端和服務(wù)器端頭信息

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

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

下面列出了一些 Servlet 調(diào)試的技巧:

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

• 要求瀏覽器顯示它所顯示的頁(yè)面的原始內(nèi)容。這有助于識(shí)別格式的問(wèn)題。它通常是"視圖"菜單下的一個(gè)選項(xiàng)。

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

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

全部教程
主站蜘蛛池模板: 免费h网站在线观看 | 国产精品久久天天影视 | 欧美色图日韩 | 九九视频免费精品视频免费 | 丁香婷婷激情 | aⅴ免费视频 | 亚洲丁香婷婷综合久久小说 | 国产a免费视频 | 91麻豆传传媒波多野衣久久看 | 欧美不卡视频 | 每日更新国产 | 猫色网站 | 一本加勒比dvd波多野结衣 | 小黄视频免费观看 | 欧美精品一区二区精品久久 | 天天做天天干 | 国产亚洲一区二区三区 | 黄色毛片视频免费 | 欧美一区视频 | 色综合天天综久久久噜噜噜久久〔 | 久久99精品视免费看 | 一菊综合网成人综合网 | 国产香蕉免费精品视频 | 美女视频网站黄色 | 日日摸人人拍人人澡 | 欧美另类高清 videos | 国产精品嫩草影院奶水 | 日韩城人免费 | 国产成人综合网亚洲欧美在线 | 美国黄色一级毛片 | 国产丝袜制服 | 日本三级黄网站 | 国产大片线上免费观看 | 一级毛片高清 | 中文字幕欧美亚洲 | 视频在线你懂的 | 亚洲视频高清 | 成人黄色一级视频 | 亚洲狠狠97婷婷综合久久久久 | 黄篇免费看 | 亚洲综合日韩在线亚洲欧美专区 |