Jython - Servlet

Un servlet Java è la tecnica di sviluppo web più utilizzata. Possiamo usare Jython per scrivere servlet e questo aggiunge molti altri vantaggi oltre a ciò che Java ha da offrire perché ora possiamo anche utilizzare le funzionalità del linguaggio Python.

Useremo l'IDE NetBeans per sviluppare un'applicazione web Java con un servlet Jython. Assicurati che il filenbPython pluginè installato nell'installazione di NetBeans. Avvia un nuovo progetto per creare un'applicazione web scegliendo il seguente percorso:File → New Project → Java web → New Web Application.

Fornisci il nome e la posizione del progetto. L'IDE creerà la struttura delle cartelle del progetto. Aggiungere un file servlet Java (ServletTest.java) nel nodo dei pacchetti di origine nella finestra Progetti. Questo aggiungeràservlet-api.jarnella cartella lib del progetto. Inoltre, lascia che l'IDE crei il file web.xmldescriptor file. Aggiungi il codice seguente inServletTest.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>"
      );
   }
}

Il file web.xml creato da NetBeans sarà come mostrato di seguito -

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

Compila ed esegui il progetto per ottenere il testo Servlet Testche appare nel tag <h1> nella finestra del browser. Pertanto, abbiamo aggiunto un normale servlet Java nell'applicazione.

Ora aggiungeremo il Jython Servlet. I servlet Jython funzionano per mezzo di un servlet Java intermedio noto anche come PyServlet. Il PyServlet.class è presente injython standalone.jar. Aggiungilo nel fileWEB-INF/lib cartella.

Il passaggio successivo consiste nel configurare web.xml per richiamare il PyServlet, ogni volta che viene richiesta qualsiasi *.py fileviene sollevato. Questo dovrebbe essere fatto aggiungendo il seguente codice 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>

Il codice web.xml completo apparirà come mostrato di seguito.

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

Posiziona il seguente codice Jython nella cartella WEB-INF all'interno della cartella del progetto come JythonServlet.py, che è equivalente al precedente 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>"
      )

Crea il progetto e nel browser apri il seguente URL:

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

Il browser mostrerà il file Servlet Test nel tag <h1> come nel caso dell'output di Java Servlet.