<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 API > 原文: [https://beginnersbook.com/2013/05/servlet-api/](https://beginnersbook.com/2013/05/servlet-api/) 您需要使用 Servlet API 來創建 servlet。使用 API ??時必須記住兩個包,包含支持通用 servlet(獨立于協議的 servlet)的類的`javax.servlet`包和包含支持`httpServlet`的類的`javax.servlet.http`包。你可能想知道什么是泛型和 http Servlet,我在本文后面已經解釋過了。 **讓我們看看包的層次結構:** ```java java.lang.Object |_extended byjavax.servlet.GenericServlet |_extended byjavax.servlet.http.HttpServlet ``` 每個 Servlet 必須實現`java.servlet.Servlet`接口,您可以通過擴展以下兩個類之一來實現:`javax.servlet.GenericServlet`或`javax.servlet.http.HttpServlet`。第一個用于協議無關的 Servlet,第二個用于`httpServlet`。 **servlet 如何工作?** ![How Servlet Works](https://img.kancloud.cn/34/f2/34f278492bc302075f00750396c9f103_500x400.jpg) ## 通用 Servlet 如上所述,如果要創建`GenericServlet`,則必須擴展`javax.servlet.GenericServlet`類。`GenericServlet`類有一個抽象的`service()`方法。這意味著`GenericServlet`的子類應始終覆蓋`service()`方法。 **`service()`方法的簽名:** ```java public abstract void service(ServletRequest request, ServletResponse response) throws ServletException, java.io.IOException ``` `service()`方法接受兩個參數`ServletRequest`對象和`ServletResponse`對象。請求對象告訴 servlet 客戶端發出的請求,而響應對象用于將響應返回給客戶端。 ![Generic Servlet](https://img.kancloud.cn/00/d6/00d6c6e708705fe1ab7194e716e045b6_478x315.jpg) ## `HTTPServlet` 如果您創建`HttpServlet`,則必須擴展`javax.servlet.http.HttpServlet`類,這是一個抽象類。與`GenericServlet`不同,`HTTPServlet`不會覆蓋`service()`方法。相反,它會覆蓋以下一種或多種方法。它必須覆蓋以下列表中的至少一個方法: * `doGet()` - 這個方法由 servlet 服務方法調用,用于處理來自客戶端的 HTTP `GET`請求。`Get`方法用于從服務器獲取信息 * `doPost()` - 用于向服務器發布信息 * `doPut()` - 這個方法類似于`doPost`方法,但與我們向服務器發送信息的`doPost`方法不同,此方法將文件發送到服務器,這類似于從客戶端到服務器的 FTP 操作 * `doDelete()` - 允許客戶端從服務器刪除文檔,網頁或信息 * `init()和 destroy()` - 用于管理 servlet 生命周期內持有的資源 * `getServletInfo()` - 返回有關 servlet 的信息,例如作者,版本和版權。 **在`HttpServlet`中,不需要覆蓋`service()`方法**,因為此方法將 Http 請求分派給正確的方法處理程序,例如,如果它接收到 HTTP `GET`請求,它會將請求分派給`doGet()`方法。 ![Http Servlet](https://img.kancloud.cn/84/17/8417e60c714b7f7e05d8e8a053f45dd2_500x300.jpg) #### `javax.servlet`包中的接口 * `Servlet` * `ServletRequest` * `ServletResponse` * `ServletConfig` * `ServletContext` * `SingleThreadModel` * `RequestDispatcher` * `ServletRequestListener` * `ServletRequestAttributeListener` * `ServletContextListener` * `ServletContextAttributeListener` * `Filter` * `FilterConfig` * `FilterChain` #### `javax.servlet`包中的類 * `GenericServlet` * `ServletInputStream` * `ServletOutputStream` * `ServletException` * `ServletRequestWrapper` * `ServletRequestEvent` * `ServletResponseWrapper` * `ServletContextEvent` * `ServletRequestAttributeEvent` * `ServletContextAttributeEvent` * `UnavailableException` #### `javax.servlet.http`包中的接口 * `HttpSession` * `HttpServletRequest` * `HttpServletResponse` * `HttpSessionAttributeListener` * `HttpSessionListener` * `HttpSessionBindingListener` * `HttpSessionActivationListener` * `HttpSessionContext` #### `javax.servlet.http`包中的類 * `HttpServlet` * `Cookie` * `HttpSessionEvent` * `HttpSessionBindingEvent` * `HttpServletRequestWrapper` * `HttpServletResponseWrapper` * `HttpUtils` **參考:** 1. [官方 Servlet API 文檔:`javax.servlet`](https://docs.oracle.com/cd/E17802_01/products/products/servlet/2.5/docs/servlet-2_5-mr2/javax/servlet/package-summary.html) 2. [API 文檔:`java.servlet.http`](https://docs.oracle.com/cd/E17802_01/products/products/servlet/2.5/docs/servlet-2_5-mr2/javax/servlet/http/package-tree.html)
                  <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>

                              哎呀哎呀视频在线观看