Jython - Servlets

Um servlet Java é a técnica de desenvolvimento da Web mais amplamente usada. Podemos usar Jython para escrever servlets e isso adiciona muito mais vantagens além do que Java tem a oferecer, porque agora podemos fazer uso dos recursos da linguagem Python também.

Devemos usar o NetBeans IDE para desenvolver um aplicativo Java da web com um servlet Jython. Certifique-se de que onbPython pluginestá instalado na instalação do NetBeans. Inicie um novo projeto para construir um aplicativo da web escolhendo o seguinte caminho -File → New Project → Java web → New Web Application.

Forneça o nome e a localização do projeto. O IDE criará a estrutura de pastas do projeto. Adicione um arquivo de servlet Java (ServletTest.java) no nó dos pacotes de origem na janela Projetos. Isso vai adicionarservlet-api.jarna pasta lib do projeto. Além disso, deixe o IDE criar o web.xmldescriptor file. Adicione o seguinte código emServletTest.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>"
      );
   }
}

O arquivo web.xml criado pelo NetBeans será como mostrado abaixo -

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

Construa e execute o projeto para obter o texto Servlet Testaparecendo na tag <h1> na janela do navegador. Portanto, adicionamos um servlet Java regular ao aplicativo.

Agora, devemos adicionar o Servlet Jython. Os servlets Jython funcionam por meio de um servlet Java intermediário, também conhecido como PyServlet. O PyServlet.class está presente nojython standalone.jar. Adicione-o noWEB-INF/lib pasta.

A próxima etapa é configurar o web.xml para invocar o PyServlet, sempre que uma solicitação de qualquer *.py fileé gerado. Isso deve ser feito adicionando o seguinte código xml nele.

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

O código web.xml completo terá a aparência mostrada abaixo.

<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 o seguinte código Jython na pasta WEB-INF dentro da pasta do projeto como JythonServlet.py, que é equivalente ao 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>"
      )

Crie o projeto e, no navegador, abra a seguinte URL -

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

O navegador mostrará o Servlet Test na tag <h1> como no caso da saída do Java Servlet.