Jython - Servlets

Un servlet Java es la técnica de desarrollo web más utilizada. Podemos usar Jython para escribir servlets y esto agrega muchas más ventajas más allá de lo que ofrece Java porque ahora también podemos hacer uso de las características del lenguaje Python.

Usaremos NetBeans IDE para desarrollar una aplicación web Java con un servlet Jython. Asegúrese de que elnbPython pluginestá instalado en la instalación de NetBeans. Inicie un nuevo proyecto para crear una aplicación web eligiendo la siguiente ruta:File → New Project → Java web → New Web Application.

Proporcione el nombre y la ubicación del proyecto. El IDE creará la estructura de carpetas del proyecto. Agregue un archivo de servlet Java (ServletTest.java) en el nodo de paquetes fuente en la ventana Proyectos. Esto agregaráservlet-api.jaren la carpeta lib del proyecto. Además, deje que el IDE cree el archivo web.xmldescriptor file. Agregue el siguiente código enServletTest.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>"
      );
   }
}

El archivo web.xml creado por NetBeans será como se muestra a continuación:

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

Construye y ejecuta el proyecto para obtener el texto. Servlet Testque aparece en la etiqueta <h1> en la ventana del navegador. Por lo tanto, hemos agregado un servlet Java normal en la aplicación.

Ahora, agregaremos el Jython Servlet. Los servlets Jython funcionan mediante un servlet Java intermedio también conocido como PyServlet. PyServlet.class está presente en eljython standalone.jar. Agréguelo en elWEB-INF/lib carpeta.

El siguiente paso es configurar web.xml para invocar PyServlet, siempre que se solicite cualquier *.py filees elevado. Esto debe hacerse agregando el siguiente código xml en él.

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

El código completo web.xml se verá como se muestra a continuación.

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

Coloque el siguiente código Jython en la carpeta WEB-INF dentro de la carpeta del proyecto como JythonServlet.py, que es equivalente al ServletTest.java anterior.

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

Construya el proyecto y en el navegador abra la siguiente URL:

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

El navegador mostrará el Servlet Test en la etiqueta <h1> como en el caso de la salida de Java Servlet.