Prática Sobre Servlets e JSP 1. Localize a pasta do Tomcat (TOMCAT_HOME); 2. Acesse a pasta bin e execute tomcat5w.exe; 3. Abra o Navegador e acesse http://localhost:8080 (A apresentação de uma página sobre o Tomcat indica que o contêiner está funcionando adequadamente. O link Manager leva a página de administração do Tomcat onde as aplicações podem ser reiniciadas); 4. Acesse o Tomcat Manager para visualizar as aplicações instaladas e verifique o status de cada uma. Atenção: para acessar o Tomcat Manager, serão solicitados usuário e senha. Este usuário deve ter autorização (role) para executar o Manager. Para dar tal autorização acesse o arquivo tomcatusers.xml, na pasta conf do Tomcat. 5. Na pasta principal do Tomcat (TOMCAT_HOME), acesse a pata webapps; 6. Crie uma pasta para o seu projeto (Ex.: cursoservletsjsp) e dentro desta uma outra chamada WEB- INF (tudo em maiúsculo) e dentro desta uma chamada classes (tudo em minúsculo). 7. Abra o JCreator e crie o seu serlvet básico na pasta classes criada anteriormente, confirme exemplo a seguir: // Importação dos pacotes necessários para criar Servlets. // A biblioteca que contém estes pacotes deve ser inserida no // ClASSPATH // Importação de outros pacotes usados na aplicação import java.io.; // Classe que extende a classe base dos Servlets public class TesteServlet extends HttpServlet public void doget (HttpServletRequest req, HttpServletResponse res) throws <html>"); <head>"); <title>teste de Servlet</title>"); </head>"); <body>"); </body>"); </html>"); <h1>teste de XHTML gerado a partir de um Servlet<h1>"); 8. Tente compilar a classe servlet criada. Se obtiver sucesso, verifique que um arquivo de mesmo nome e extensão.class deve ter sido criado na mesma pasta. Se receber uma mensagem de erro durante o processo de compilação, informando que os pacotes javax.servlet não existem, o JCreator deve ser configurado em: configure, options, JDK Profiles, Edit, Classes, inclua o arquivo servlet-api.jar que está na pasta common/lib da instalação do Tomcat. 9. Para rodar uma aplicação Web é necessária a criação de um descritor de distribuição chamado web.xml, na pasta WEB-INF criada anteriormente, como demonstrado a seguir. É neste arquivo que tornamos o servlet disponível para poder ser acionado a partir de um determinado mapeamento de URL. Por exemplo, no descritor de distribuição abaixo, a classe que criamos, TesteServlet, é mapeada
pela URL /TesteServlet, dentro da aplicação Web que criamos dentro da pasta webapps do Tomcat. Para acionar o servlet, usamos a URL http://localhost:8080/<nome_da_aplicação>/testeservet. Atenção: toda vez que o servlet for alterado, deve ser novamente compilador e a aplicação de ser reiniciada (reaload) por meio do Manager do Tomcat. 10. Crie um servlet um pouco mais complexo, para processar dados de um formulário XHTML e observar o funcionamento de uma aplicação Web, composta da camada cliente e servidora. Veja que o método usado no servlet anterior foi o doget() e agora usaremos o dopost(). Cada um desses métodos é acionado, dependendo do valor do atributo method do elemento form. /* Importação dos pacotes necessários para criar Servlets */ /* A biblioteca que contém estes pacotes deve ser inserida no ClASSPATH */ /* Importação de outros pacotes usados na aplicação */ import java.io.; /* Classe que extende a classe base dos Servlets */ public class FormularioServlet extends HttpServlet public void dopost (HttpServletRequest req, HttpServletResponse res) throws String informacao = req.getparameter("informacao"); String nome = req.getparameter("nome"); String senha = req.getparameter("senha"); String sexo = req.getparameter("sexo"); String est_civ = req.getparameter("est_civ"); String[] pref = req.getparametervalues("pref"); String comentario = req.getparameter("comentario"); <html>"); <head>"); <title>teste de Servlet para Recebimento de Dados de Formulário XHTML</title>"); </head>"); <body>"); <h1>recebimento de Dados de Formulário</h1>"); <p>informações: " + informacao + "</p>"); <p>nome: " + nome + "</p>"); <p>senha: " + senha + "</p>"); <p>sexo: " + sexo + "</p>"); <p>estado Civil: " + est_civ + "</p>");
for (int i=0; i<pref.length; i++) <p>preferêcias: " + pref[i] + "</p>"); <p>comentários: " + comentario + "</p>"); </body>"); </html>"); 11. Para tornar a nova servlet disponível, altere o descritor de distribuição para: <servlet-class>formularioservlet</servlet-class> <url-pattern>/formularioservlet</url-pattern> 12. Teste o novo servlet, alterando o valor o atributo action do formulário que usamos até agora nos testes para http://localhost:8080/cursoservletjsp/formularioservlet. O formulário deve ser copiado para dentro da pasta da aplicação Web que você está criando. 13. Execute o formulário http://localhost:8080/cursoservletjsp/formularioservlet, preencha os dados e submeta. Verifique os resultados. 14. Crie agora parâmetros de inicialização, específicos para um servlet, no descritor de distribuição da seguinte forma: <init-param> <param-name>instituicao</param-name> <param-value>ensino Superior</param-value> </init-param> <init-param> <param-name>professor</param-name> <param-value>josé Eduardo Teixeira</param-value>
</init-param> <servlet-class>formularioservlet</servlet-class> <url-pattern>/formularioservlet</url-pattern> 15. Para acessar os parâmetros de inicialização a partir do servlet, use o seguinte: /* Importação dos pacotes necessários para criar Servlets */ /* A biblioteca que contém estes pacotes deve ser inserida no ClASSPATH */ /* Importação de outros pacotes usados na aplicação */ import java.io.; /* Classe que extende a classe base dos Servlets */ public class TesteServlet extends HttpServlet private String instituicao; private String professor; public void init(servletconfig config) throws ServletException super.init(config); instituicao = config.getinitparameter("instituicao"); professor = config.getinitparameter("professor"); public void doget (HttpServletRequest req, HttpServletResponse res) throws <html>"); <head>"); <title>teste de Servlet</title>"); </head>"); <body>"); <h1>teste de HTML gerado a partir de um Servlet</h1>"); <p>" + instituicao + "</p>"); <p>" + professor + "</p>"); </body>"); </html>"); 16. Crie agora um parâmetro para a aplicação no web.xml, receba-o no servlet e apresente o seu valor.
17. Tire o Tomcat do ar, apague o arquivo de log localhost..., inicie o Tomcat novamente, carregue a sua aplicação fazendo uma solicitação ao servlet TesteServlet, verifique o log, faça novas solicitações ao mesmo servlet e verifique o log novamente. 18. Faça solicitações aos JSP básicos, disponíveis na aplicação de exemplo, analisando o código do JSP e o XHTML gerado no navegador. 19. Faça uma solicitação ao JSP usandoinclude.jsp e verifique a inclusão de outros arquivos. 20. Faça uma solicitação ao JSP usandoincludecomparametros.jsp e verifique a inclusão de outros arquivos que recebem os parâmetros passados, analisando o mecanismo de passagem de parâmetros. 21. Para demonstrar como criar uma conexão com um banco de dados, vamos usar o MySQL. Para isso, será necessário ter o banco de dados instalado e também um driver JDBC que viabilizará a conexão (veja o arquivo que foi colocado na pasta lib, dentro de WEB-INF; está pasta serve para disponibilização de bibliotecas para a aplicação Web). 22. Verifique, no servlet FormularioServlet.java, as linhas que criam as Strings cujos nomes iniciam-se com BD e as linhas subseqüentes que compõem o bloco try-catch (captura e tratamento de exceções). A primeira coisa a fazer é carregar e registrar o driver JDBC: Class.forName(BDDriver);. Depois, cria-se a conexão: Connection cn = DriverManager.getConnection(BDString, BDUsuario, BDSenha);. 23. Uma vez disponível a conexão (veja que foram geradas entradas no arquivo de log do Tomcat para cada uma das situações), poderemos operar sobre ela, passando-lhe instruções SQL. Vamos usar a classe PreparedStatement para executar as instruções e a classe ResultSet para armazenar os resultados retornados pelo banco, quando houver. Da primeira vamos testar os métodos execute() e executequery(), além dos métodos sets para configurar parâmetros. Da segunda, os gets para extrair valores do resultado retornado pelo banco. Para demonstrar a similaridade entre as servlets e JSP, vamos usar a primeira tecnologia para gravar os dados no banco e a segunda para recuperá-los.