Neste tutorial iremos aprender como implementar um HttpServlets utilizando o Jython (Python) dentro de um container do Tomcat. Também aprenderemos como utilizar as bibliotecas nativas do Java dentro do Jython, trabalhando seus atributos, utilizando exemplos explicativos.
"Servlets são módulos que ampliam a funcionalidade de servidores baseados em requisições/respostas. Web servers são o exemplo típico, para o qual são usado um tipo especializado de Servlets, os HttpServlets. Um Servlet, por exemplo, pode receber dados em um form HTML por meio de uma requisição HTTP, processar os dados, atualizar a base de dados de uma empresa, e gerar alguma resposta dinamicamente para o cliente que fez a requisição."
Porém esse tipo de módulo era de utilização no JDK da Sun (Java), porém com a chegada do Jython, tudo mudou. Para a realização desta parte do artigo, temos que ter instalado o Tomcat (maiores informações no apêndice A2).
Para iniciarmos o desenvolvimento do httpServlets em Jython, vamos primeiro mostrar um httpServlets feito em Java, para podermos ilustrar a facilidade de se criar um Servlet em Jython (Python). Antes, vamos criar dentro do %CATALINA_HOME%\webapps um diretório chamado tutorialjython. E dentro do diretório tutorialjython crie um sub-diretório WEB-INF. Dentro dele crie um diretório chamado classes e outro chamado lib. A Estrutura de diretórios vai ficar assim:
tutorialjython
WEB-INF
classes
lib
Crie um arquivo chamado ServletJava.java dentro da pasta classes com o seguinte conteúdo:
No diretório onde você instalou o Jython, existe um arquivo chamado "jython.jar". Vamos copiá-lo para dentro do diretório tutorialjython\WEB-INF\lib. Agora vamos fazer um adendo no conteúdo do arquivo web.xml, instruindo-o sobre como o Tomcat invocar a biblioteca PyServlet ao receber chamadas para arquivos *.py.
Salve o arquivo. Criaremos agora um Servlet equivalente ao Servlet que utilizamos no primeiro exemplo. Crie um arquivo dentro do diretório tutorialjython chamado ServletJython.py com o seguinte conteúdo:
from javax.servlet.http import HttpServlet
class ServletJython (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>ServletJython</title>" + "<body><h1>Este eh um Servlet feito em Jython</h1></body></html>")
Salve o arquivo. Reinicie o Tomcat. Para visualizar o Servlet criado acesse:
[1] Comentário enviado por leandro_hamid em 07/11/2007 - 11:53h
De ante mão quero agradecer e parabenizar por este artigo e por todos os outros artigos que tive a oportunidade de ler já que estou me iniciando na tecnologia Python e afins.
Mas, eu queria dizer que ao rodar script/exemplo soma.py foi exibido os seguintes erros:
Execução no Shell:
File "C:\jython2.2.1\Curso\soma.py", line 2
SyntaxError: Non-ASCII character '\xfa' in file C:\jython2.2.1\Curso\soma.py on
line 2, but no encoding declared; see http://www.python.org/peps/pep-0263.html f
or details
Execução via IDLE:
Traceback (most recent call last):
File "C:\jython2.2.1\Curso\soma.py", line 1, in <module>
import javax.swing as libswing
ImportError: No module named javax.swing
Execução via DOS:
File "C:\jython2.2.1\Curso\soma.py", line 2
SyntaxError: Non-ASCII character '\xfa' in file C:\jython2.2.1\Curso\soma.py on
line 2, but no encoding declared; see http://www.python.org/peps/pep-0263.html f
or details
Gostaria de saber o que pode ter acontecido, seria algo relacionado à configuração do Jython?Aguardo retorno.
PS: O jsdk e o jython estão devidamente instalados e rodando perfeiramente.
[2] Comentário enviado por leandro_hamid em 07/11/2007 - 14:04h
Boa tarde.
Para fechar esta questão de erros ao executar todo o código através do console o que eu notei é de alguam maneira o módulo não esta sendo importado, ou seka, erro an importação do módulo.
Isso ficou evidente a partir da execução do seguinte código:
>>> import java.lang.String as jls
>>> texto = jls("Bem Vindo ao Jython Usando Uma Biblioteca Java")
>>> texto = texto.toUpperCase()
>>> print texto
ao char o código no console (Dos e Shell) é exibido o seguinte erro:
C:\jython2.2.1\Curso>boasvindas.py
Traceback (most recent call last):
File "C:\jython2.2.1\Curso\boasvindas.py", line 1, in <module>
import java.lang.String as jls
ImportError: No module named java.lang.String