<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>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # `GenericServlet`類 > 原文: [https://beginnersbook.com/2014/04/genericservlet-class/](https://beginnersbook.com/2014/04/genericservlet-class/) 在討論 [Servlet API](https://beginnersbook.com/2013/05/servlet-api/) 時,我已經討論了一些關于`GenericServlet`的內容。在本文中,我將詳細討論`GenericServlet`。 `GenericServlet`是一個獨立于協議的 Servlet,它應該始終覆蓋`service()`方法來處理客戶端請求。`service()`方法接受兩個參數`ServletRequest`對象和`ServletResponse`對象。請求對象告訴 servlet 客戶端發出的請求,而響應對象用于將響應返回給客戶端。 ### `GenericServlet`如何工作? ![Generic Servlet](https://img.kancloud.cn/00/d6/00d6c6e708705fe1ab7194e716e045b6_478x315.jpg) ### `GenericServlet`的層次結構 ```java java.lang.Object |_extended byjavax.servlet.GenericServlet ``` `GenericServlet`是一個抽象類,它只有一個抽象方法,即`service()`。這就是為什么當我們通過擴展`GenericServlet`類來創建`GenericServlet`時,我們必須覆蓋`service()`方法。 **使用`GenericServlet`的優點:** 1. `GenericServlet`更容易編寫 2. 具有簡單的生命周期方法 3. 要編寫`GenericServlet`,您只需要擴展`javax.servlet.GenericServlet`并覆蓋`service()`方法(請查看下面的示例)。 **使用`GenericServlet`的缺點:** 使用`GenericServlet`并不是那么容易,因為我們在`GenericServlet`中沒有像`doGet()`,`doPost()`,`doHead()`等方便的方法可以在`HttpServlet`中使用。 在`HttpServlet`中,我們需要為特定請求覆蓋特定的便捷方法,例如,如果您需要獲取信息,則覆蓋`doGet()`,如果要向服務器發送信息覆蓋`doPost()`。但是在`GenericServlet`中,我們只為每種類型的請求覆蓋`service()`方法,這很麻煩。 我總是建議你使用`HttpServlet`而不是`GenericServlet`。`HttpServlet`更易于使用,并且具有比`GenericServlet`更多的方法。 ### `GenericServlet`的示例 我在這個例子中使用 Eclipse IDE。從 Eclipse 文件菜單中創建新的`Dynamic Web Project`。 > 我已經解釋了在 Eclipse IDE 中創建 Servlet 的每一步,但是如果您剛接觸 Eclipse 并且沒有在系統上安裝它,那么請參考本指南:[如何安裝 Eclipse,設置 Tomcat 并使用 Eclipse IDE運行第一個 servlet 程序](https://beginnersbook.com/2017/07/how-to-create-and-run-servlet-in-eclipse-ide/)。 完成后,在 IDE 中創建以下所有文件后,項目結構(或層次結構)將如下所示。 ![Generic Servlet Project Structure](https://img.kancloud.cn/d0/b7/d0b71f37fdc132ee0136c3ba0d4cee47_650x554.jpg) `index.htm` 我們正在創建一個 html 文件,一旦我們點擊網頁上的鏈接就會調用 servlet。在`WebContent`文件夾中創建此文件。該文件的路徑應如下所示:`WebContent/index.html` ```java <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Generic Servlet Demo</title> </head> <body> <a href="welcome">Click to call Servlet</a> </body> </html> ``` `ExampleGeneric.java` 現在,我們通過擴展`GenericServlet`類來創建`GenericServlet`。創建`GenericServlet`時,應始終覆蓋`service()`方法。右鍵單擊`src`文件夾并創建一個新的類文件,將該文件命名為`ExampleGeneric`。文件路徑應如下所示:`Java Resouces/src/default package/ExampleGeneric.java` ```java import java.io.*; import javax.servlet.*; public class ExampleGeneric extends GenericServlet{ public void service(ServletRequest req,ServletResponse res) throws IOException,ServletException{ res.setContentType("text/html"); PrintWriter pwriter=res.getWriter(); pwriter.print("<html>"); pwriter.print("<body>"); pwriter.print("<h2>Generic Servlet Example</h2>"); pwriter.print("<p>Hello BeginnersBook Readers!</p>"); pwriter.print("</body>"); pwriter.print("</html>"); } } ``` `web.xml` 此文件可在此路徑`WebContent/WEB-INF/web.xml`中找到。在此文件中,我們將使用特定 URL 映射 Servlet。由于我們在單擊`index.html`頁面上的鏈接時調用歡迎頁面,因此我們將歡迎頁面映射到我們上面創建的 Servlet 類。 ```java <web-app> <display-name>BeginnersBookServlet</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>MyGenericServlet</servlet-name> <servlet-class>ExampleGeneric</servlet-class> </servlet> <servlet-mapping> <servlet-name>MyGenericServlet</servlet-name> <url-pattern>/welcome</url-pattern> </servlet-mapping> </web-app> ``` **輸出:** ![Generic Servlet Output_1](https://img.kancloud.cn/98/7e/987e159199de6e753d01a32af4041565_1024x201.jpg) 點擊第一個屏幕中的鏈接后的屏幕: ![Generic Servlet outout2](https://img.kancloud.cn/88/81/88816743cc2e0650661b816bedf5f807_1024x218.jpg) ## `GenericServlet`類的方法: 以下是`GenericServlet`類的所有方法的列表。 1. `public void init()`:這是一種方便的方法。可以重寫此方法,因此無需調用`super.init(config)`。 2. `public void init(ServletConfig config)`:由 servlet 容器調用以指示 servlet 正在投入使用,此方法用于初始化 servlet。 3. `public String getInitParameter(String name)`:返回包含給定初始化參數值的`String`,如果參數不存在,則返回`null`。 4. `public Enumeration getInitParameterNames()`:返回`web.xml`文件中定義的所有參數的名稱,如果`web.xml`沒有任何參數,則返回`null`。 5. `public abstract void service(ServletRequest request, ServletResponse response)`:由 Servlet 容器調用,允許 servlet 響應客戶端發出的請求。 6. `public void destroy()`:servlet 容器在 servlet 生命周期結束時調用一次,表明 servlet 正在被銷毀。 7. `public ServletConfig getServletConfig()`:返回初始化此 servlet 的`ServletConfig`對象 8. `public String getServletInfo()`:返回有關 servlet 的信息。 9. `public ServletContext getServletContext()`:返回`ServletContext`對象,由`init`方法傳遞給這個 servlet 10. `public String getServletName()`:返回 servlet 實例的名稱。 11. `public void log(String msg)`:在 servlet 日志文件中寫入給定的消息。 12. `public void log(String msg, Throwable t)`:在 servlet 日志文件中寫入解釋性消息,包括描述錯誤或異常的`String`。 #### 參考: [`GenericServlet`官方文檔](https://docs.oracle.com/javaee/7/api/javax/servlet/GenericServlet.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>

                              哎呀哎呀视频在线观看