<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # Servlet 面試問答 > 原文: [https://beginnersbook.com/2013/05/servlet-interview-questions/](https://beginnersbook.com/2013/05/servlet-interview-questions/) 以下是有關 Servlet 的常見問題。我已經提供了每個問題的簡要和答案,這將有助于您在技術面試輪次中被選中。 **Q1. 什么是 servlet?** Servlet 是一種服務器端編程語言,用于生成動態網頁。它生成網頁作為從客戶端(瀏覽器)收到的請求的響應。 **Q2. 靜態網頁與動態網頁?** 對所有用戶都相同的網頁是靜態網頁,根據用戶的請求動態生成的網頁(根據請求可能因用戶而異)被稱為動態網頁。 Servlet 主要用于動態網頁。 **Q3. servlet 的生命周期?** 遵循 servlet 生命周期的各個階段: 1)加載 Servlet 類:servlet 容器找到`web.xml`文件中提到的 servlet 類并加載它。 2)Servlet 實例化:在此階段創建 servlet 類的對象。 3)初始化:通過調用`init()`方法初始化 Servlet。 4)處理請求:在此階段,servlet 通過調用`service()`方法為客戶端請求提供服務。 5)銷毀:servlet 生命周期的最后階段。`destroy()`方法釋放 servlet 實例,以便可以對其進行垃圾回收。 **Q4.為什么我們使用 Servlets?** 1)處理用戶從屏幕提交的輸入數據。 2)根據請求生成并返回對用戶的動態響應。 3)理想的編程語言,用于根據用戶的請求與數據庫進行交互。 4)servlet 可以同時處理多個請求,這使它們成為高性能應用的完美選擇。 **Q5. 為什么 Servlet 優于 CGI?** 1)Servlet 響應比 CGI 更快,因為它使用多線程概念來為每個請求提供服務。 CGI 性能不是很好,因為它為每個請求創建一個新對象,而 servlet 為每個請求分配一個新線程。 2)與 CGI 相比,學習和實現 servlet 非常容易。 3)與 CGI 相比,servlet 中的內存消耗較低。 **Q6. 加載 Servlet 的時候?** 1)當 servlet 容器收到來自客戶端(瀏覽器)的第一個請求時。 2)應用的管理員手動加載 servlet。 3)當 webserver(部署了 servlet)開始時。 **Q7. 什么是`Servlet`接口以及它的用途是什么?** `Servlet`接口是 servlet 的 API。每個 Servlet 都應該實現`Servlet`接口或擴展已經實現接口的類。 `javax.servlet.GenericServlet`和`javax.servlet.http.HttpServlet`是實現`Servlet`接口的`Servlet`類,因此每個 servlet 應該直接實現`Servlet`接口,或者通過擴展任何這些類。 **Q8. 什么是`ServletConfig`?** `ServletConfig`接口屬于包`javax.servlet.ServletConfig`。它用于將配置參數傳遞給 servlet。Servlet 容器隱式實例化它。 **Q9. 什么是`ServletContext`?** 每個 Web 應用都有一個共同的`ServletContext`。 Web 應用中的所有 servlet 都可以訪問`ServletContext`。它有網絡應用信息和 Web 應用中存在的所有 servlet 都可以訪問的資源。 **Q10. `ServletConfig`與`ServletContext`?** 以下是`ServletConfig`和`ServletContext`之間的兩個主要區別: 1)`ServletConfig`用于將配置信息傳遞給 Servlet,而`ServletContext`提供 Servlet 類可以使用的一組方法與 Servlet 容器通信。 2)每個 Servlet 都有一個單獨的`ServletConfig`對象,而`ServletContext`對于 Web 應用中的所有 servlet 都是通用的。 3)`ServletConfig`的參數在`web.xml`文件中的標簽`<init-param>`下定義。`ServletContext`的參數在`web.xml`中的標簽`<context-param>`下定義。 **Q11. `GenericServlet`和`HTTPServlet`之間的區別?** 1)`GenericServlet`是一個實現 Servlet 接口的抽象類,而`HTTPServlet`抽象類擴展了`GenericServlet`類。簡而言之:`GenericServlet`類是`HTTPServlet`的父類。 2)`GenericServlet`不支持任何協議。`HTTPSeervlet`支持 HTTP 和 HTTPS 協議。 3)`GenericServlet`無法處理`cookie`和會話,而`HTTPServlet`可以處理它們。 **Q12. `forward()`和`sendRedirect()`之間的區別?** 1)在`forward()`中,相同的請求被轉發到另一個資源。在`sendRedirect()`中,新請求被發送到重定向資源。 2)`forward()`由 Servlet 容器處理,而`sendRedirect()`由瀏覽器處理。 3)在`forward()`中,URL(統一資源定位符)在 Web 瀏覽器上保持不變。在`sendRedirect()`中,URL 在 Web 瀏覽器地址欄中更改。 4)與`sendRedirect()`相比,`forward()`更快。 **Q13. 什么是部署描述符? Web 應用的** `web.xml`文件稱為部署描述符。它通常放在應用的`WEB-INF`文件夾中。它具有 Servlet 名稱,Servlet 映射等信息。該文件告訴 Servlet 容器需要為給定的 URL 模式調用哪個 Servlet 類。 **Q14. `doGet()`對于`doPost()`方法?** 1)在`doGet()`中,參數在地址欄中可見,它們會附加到 URL。在`doPost()`中,參數在地址欄中不可見。 2)您可以通過`GET`請求最多傳輸 1024 個字符。`doPost()`沒有任何限制。 3)`doGet()`不適合敏感數據,因為參數不會被加密。在`doPost()`中,參數是加密的,因此與`doGet()`相比更安全。 4)方法`doGet()`允許您為資源添加書簽。`doPost()`不允許書簽。 5)與`doPost()`方法相比,`doGet()`更快。 **Q15. `<load-on-startup>`有什么用?** `<load-on-startup>`用于指定在服務器啟動期間需要加載的 Servlet 文件。一旦服務器啟動,就會加載此元素中指定的 servlet 文件,它不會等待第一個加載它們的請求。這是在`web.xml`文件中指定的方式。 ```java <servlet> ???<servlet-name>MyServletNameHere</servlet-name> ???<servlet-class>ServletClassHere-FullyQualified</servlet-class> ???<load-on-startup>1</load-on-startup> </servlet> ``` 如果指定了多個文件,則文件將按照在其中指定的順序加載。 **Q20. Servlets 支持哪些不同類型的會話跟蹤機制?** 1)URL 重寫 2)隱藏表單字段 3)Cookies 4)安全套接字層(SSL)會話 **Q21. URL 重寫如何維持會話?** 在 URL 重寫方法中,會話跟蹤數據已附加在 URL 的末尾以跟蹤會話。 **Q22. 解釋 Servlet 鏈接?** Servlet 鏈接是一個在一系列 servlet 中處理請求的概念。第一個 Servlet 部分處理請求并傳遞給第二個請求,然后第二個 servlet 處理它并傳遞給第三個請求,依此類推。最后一個 servlet 將響應返回給客戶端(瀏覽器)。 **Q23. 如何使 servlet 中的會話無效?** 通過調用`session.invalidate()`方法。 **Q24. Servlet 容器的主要功能是什么?** 1)Servlet 生命周期管理 2)維護 Servlet 和 Web 服務器之間的交互。 3)提供多線程支持,同時處理多個請求。 4)管理部署描述符`web.xml`文件。 **Q25. 什么是`<session-timeout>`?** 元素`<session-timeout>`用于指定會話的超時。這是在`web.xml`文件中定義的方式。 ```java <session-config> ???????<session-timeout>35</session-timeout> </session-config> ``` 它會將會話超時設置為 25 分鐘。 **Q26. 什么是 Servlet 延遲加載以及如何避免它?** 默認情況下,Servlet 容器在服務器啟動時不初始化 Servlet。它僅在收到來自客戶端的請求時初始化 servlet。這稱為 Servlet 的延遲加載。 通過指定`<load-on-startup>`元素為 Servlet 我們可以避免延遲加載。`<load-on-startup>`中指定的 servlet 文件 Web 服務器啟動后立即加載。 **Q27. 為什么我們在 servlet 中需要構造函數,即使我們有一個`init()`方法?** `init()`方法用于初始化 servlet,但是為了實例化 Servlet 類,需要構造函數。 Servlet 容器實例化`Servlet`類。 **Q28. 什么時候卸載 Servlet?** 1)管理員手動卸載 servlet。 2)Web 服務器關閉。 **Q29. Servlet 如何使用`cookie`維護會話?** `Cookie`是一小段信息,由 servlet 發送到 Web 瀏覽器。`Cookie`會存儲在瀏覽器中,并在需要時返回給服務器。`Cookie`具有名稱,單個值和少數其他屬性。 **Q30. 為什么使用`cookie`進行會話跟蹤是一種不好的做法?** 使用`cookie`進行會話跟蹤有幾個缺點。其中很少是: 1)由于`cookie`存儲在客戶端(在客戶端的瀏覽器中),如果客戶端瀏覽器清除或禁用`cookie`,它將不可用。 2)與其他會話管理機制相比,實現會話跟蹤的`cookie`要困難得多。 3)`Cookie`僅適用于 HTTP 協議。 **Q31. 如何在 Servlets 中獲取服務器信息?** 使用此: ```java getServletContext().getServerInfo() ``` **Q32. 如何在 Servlet 中獲取客戶端的 IP 地址?** 使用此: ```java request.getRemoteAddr() ``` **Q33. 為什么我們在 Servlet 中使用過濾器?** 我們使用過濾器: 1)安全檢查 2)修改請求或響應 3)數據壓縮 4)記錄和審核 5)響應壓縮 **Q34. `HTTPServlet`支持哪些協議?** HTTP 和 HTTPS 協議。 **Q35. `GenericServlet`支持哪些協議?** `GenericServlet`抽象類并不特定于任何協議。 **Q36. Servlet 3 增加了哪些新功能?** 1)Servlet 注釋 2)Web 片段 3)Web 組件動態添加 4)異步處理 **Q37. 我們是否覆蓋`service()`方法?** 不,我們不會覆蓋`service()`方法。我們通常根據需求覆蓋`doPost()`,`doGet()`方法。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看