Jython-servlets

提供:Dev Guides
移動先:案内検索

Jython-サーブレット

Javaサーブレットは、最も広く使用されているWeb開発手法です。 Jythonを使用してサーブレットを作成できます。これにより、Python言語機能も利用できるようになったため、Javaが提供する以上の多くの利点が追加されます。

NetBeans IDEを使用して、Jythonサーブレットを使用してJava Webアプリケーションを開発します。 NetBeansインストールに* nbPythonプラグイン*がインストールされていることを確認してください。 次のパスを選択して、新しいプロジェクトを開始し、Webアプリケーションを構築します-ファイル→新しいプロジェクト→Java Web→新しいWebアプリケーション

プロジェクトの名前と場所を指定します。 IDEはプロジェクトフォルダー構造を作成します。 「プロジェクト」ウィンドウのソースパッケージノードの下にJavaサーブレットファイル(ServletTest.java)を追加します。 これにより、プロジェクトのlibフォルダーに servlet-api.jar が追加されます。 また、IDEにweb.xml * descriptorファイル*を作成させます。 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>

プロジェクトをビルドして実行し、ブラウザーウィンドウの<h1>タグに表示されるテキスト Servlet Test を取得します。 したがって、アプリケーションに通常のJavaサーブレットを追加しました。

ここで、Jythonサーブレットを追加します。 Jythonサーブレットは、PyServletとも呼ばれる中間Javaサーブレットを使用して機能します。 PyServlet.classは jython standalone.jar に存在します。 WEB-INF/lib フォルダーに追加します。

次のステップは、**。pyファイル*に対するリクエストが発生したときにPyServletを呼び出すようにweb.xmlを設定することです。 これは、次の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コードをプロジェクトフォルダー内のWEB-INFフォルダーにJythonServlet.pyとして配置します。これは以前の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を開きます-

*http://localhost:8080/jythonwebapp/jythonservlet.py*

ブラウザは、Java Servlet出力の場合のように、<h1>タグに Servlet Test を表示します。