Jython - Servlets

Un servlet Java est la technique de développement Web la plus utilisée. Nous pouvons utiliser Jython pour écrire des servlets et cela ajoute de nombreux avantages au-delà de ce que Java a à offrir, car maintenant nous pouvons également utiliser les fonctionnalités du langage Python.

Nous utiliserons l'EDI NetBeans pour développer une application Web Java avec un servlet Jython. Assurez-vous que lenbPython pluginest installé dans l'installation de NetBeans. Démarrez un nouveau projet pour créer une application Web en choisissant le chemin suivant -File → New Project → Java web → New Web Application.

Fournissez le nom et l'emplacement du projet. L'EDI créera la structure du dossier du projet. Ajoutez un fichier de servlet Java (ServletTest.java) sous le nœud des packages source dans la fenêtre Projets. Cela ajouteraservlet-api.jardans le dossier lib du projet. Laissez également l'EDI créer le fichier web.xmldescriptor file. Ajoutez le code suivant dansServletTest.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>"
      );
   }
}

Le fichier web.xml créé par NetBeans sera comme indiqué ci-dessous -

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

Générez et exécutez le projet pour obtenir le texte Servlet Testapparaissant dans la balise <h1> dans la fenêtre du navigateur. Ainsi, nous avons ajouté un servlet Java standard dans l'application.

Maintenant, nous allons ajouter le servlet Jython. Les servlets Jython fonctionnent au moyen d'un servlet Java intermédiaire également appelé PyServlet. Le PyServlet.class est présent dans lejython standalone.jar. Ajoutez-le dans leWEB-INF/lib dossier.

L'étape suivante consiste à configurer le fichier web.xml pour appeler le PyServlet, chaque fois qu'une demande *.py fileest soulevé. Cela devrait être fait en y ajoutant le code XML suivant.

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

Le code web.xml complet ressemblera à celui ci-dessous.

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

Placez le code Jython suivant dans le dossier WEB-INF à l'intérieur du dossier du projet en tant que JythonServlet.py, ce qui équivaut au précédent 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>"
      )

Construisez le projet et dans le navigateur ouvrez l'URL suivante -

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

Le navigateur affichera le Servlet Test dans la balise <h1> comme dans le cas de la sortie Java Servlet.