Jython - Servlet



Java Servlet 是最廣泛使用的 Web 開發技術。我們可以使用 Jython 來編寫 Servlet,這比 Java 提供了更多優勢,因為現在我們也可以使用 Python 語言特性。

我們將使用 NetBeans IDE 來開發一個包含 Jython Servlet 的 Java Web 應用程式。確保在 NetBeans 安裝中安裝了 **nbPython 外掛**。透過選擇以下路徑啟動一個新專案以構建 Web 應用程式:**檔案 → 新建專案 → Java Web → 新建 Web 應用程式**。

提供專案名稱和位置。IDE 將建立專案資料夾結構。在“專案”視窗的源包節點下新增一個 Java Servlet 檔案 (ServletTest.java)。這將在專案的 lib 資料夾中新增 **servlet-api.jar**。另外,讓 IDE 建立 web.xml **描述符檔案**。在 **ServletTest.java** 中新增以下程式碼。

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class ServletTest extends HttpServlet {
   
   public void doGet (HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
      doPost(request, response);
   }
   
   public void doPost (HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
      response.setContentType ("text/html");
      PrintWriter toClient = response.getWriter();
      
      toClient.println (
         "<html>
            <head>
               <title>Servlet Test</title>" + "
            </head>
            <body>
               <h1>Servlet Test</h1>
            </body>
         </html>"
      );
   }
}

NetBeans 建立的 web.xml 檔案如下所示:

<web-app>
   <servlet>
      <servlet-name>ServletTest</servlet-name>
      <servlet-class>ServletTest</servlet-class>
   </servlet>
   
   <servlet-mapping>
      <servlet-name>ServletTest</servlet-name>
      <url-pattern>/ServletTest</url-pattern>
   </servlet-mapping>
</web-app>

構建並執行專案,您將在瀏覽器視窗中看到 `

` 標籤中顯示的文字 **Servlet Test**。因此,我們在應用程式中添加了一個普通的 Java Servlet。

現在,我們將新增 Jython Servlet。Jython Servlet 透過一箇中間 Java Servlet 工作,也稱為 PyServlet。PyServlet.class 位於 **jython standalone.jar** 中。將其新增到 **WEB-INF/lib** 資料夾中。

下一步是配置 web.xml,以便在每次發出對任何 ***.py 檔案** 的請求時呼叫 PyServlet。這可以透過在其中新增以下 xml 程式碼來完成。

<servlet>
   <servlet-name>PyServlet</servlet-name>
   <servlet-class>org.python.util.PyServlet</servlet-class>
   <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
   <servlet-name>PyServlet</servlet-name>
   <url-pattern>*.py</url-pattern>
</servlet-mapping>

完整的 web.xml 程式碼如下所示。

<web-app>
   <servlet>
      <servlet-name>ServletTest</servlet-name>
      <servlet-class>ServletTest</servlet-class>
   </servlet>
   
   <servlet>
      <servlet-name>PyServlet</servlet-name>
      <servlet-class>org.python.util.PyServlet</servlet-class>
      <load-on-startup>1</load-on-startup>
   </servlet>
   
   <servlet-mapping>
      <servlet-name>ServletTest</servlet-name>
      <url-pattern>/ServletTest</url-pattern>
   </servlet-mapping>
   
   <servlet-mapping>
      <servlet-name>PyServlet</servlet-name>
      <url-pattern>*.py</url-pattern>
   </servlet-mapping>
</web-app>

將以下 Jython 程式碼作為 JythonServlet.py 放置在專案資料夾內的 WEB-INF 資料夾中,它相當於之前的 ServletTest.java。

from javax.servlet.http import HttpServlet
class JythonServlet1 (HttpServlet):
   def doGet(self,request,response):
      self.doPost (request,response)
   def doPost(self,request,response):
      toClient = response.getWriter()
      response.setContentType ("text/html")
      
      toClient.println (
         "<html>
            <head>
               <title>Servlet Test</title>" + "
            </head>
            <body>
               <h1>Servlet Test</h1>
            </body>
         </html>"
      )

構建專案,並在瀏覽器中開啟以下 URL:

https://:8080/jythonwebapp/jythonservlet.py

瀏覽器將像 Java Servlet 輸出一樣在 `

` 標籤中顯示 **Servlet Test**。

廣告

© . All rights reserved.