Introdução a Servlets e JSP samuellunamartins at gmail dot com
Conteúdo da aula Introdução a HTML Introdução a Servlets Preparando o ambiente de programação Exemplo de Servlets 2
Websites na década de 1990 3
Páginas Estáticas Quando a Web surgiu, seu objetivo era a troca de conteúdos através, principalmente, de páginas HTML estáticas. Eram arquivos escritos no formato HTML e disponibilizados em servidores para serem acessados nos navegadores. Imagens, animações e outros conteúdos também eram disponibilizados. 4
HTML 5
HTML HTML (HyperText Markup Language) é uma linguagem de marcação utilizada na construção de páginas na Web. Documentos HTML podem ser interpretados por navegadores. 6
HTML HTML Cabeçalho Corpo 7
Estrutura Básica de um Documento <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta name="description" content="a descrição do seu site em no máximo 90 caracteres"> <meta name="keywords" content="escreva palavras-chaves curtas, máximo 150 caracteres"> <title>título do Documento</title> </head> <body> <!-- Isto é um comentário.aqui fica a página que será visível para todos. --> <div>tag para criar-se uma 'caixa', um bloco, mais utilizada com CSS "Cascading Style Sheets </div> <span>tag para modificação de uma parte do texto da página</span> <img src="endereço_de_uma_imagem.jpg" /> <a href="http://www.wikipedia.org">wikipedia, A Enciclopédia Livre</a> </body> </html> 8
Etiquetas Básicas do HTML <html>: define o início de um documento HTML e indica ao navegador que todo conteúdo posterior deve ser tratado como uma série de códigos HTML. <head>: define o cabeçalho de um documento HTML, que traz informações sobre o documento que está sendo aberto. <body>: define o conteúdo principal, o corpo do documento. Esta é a parte do documento HTML que é exibida no navegador. No corpo podem-se definir atributos comuns a toda a página, como cor de fundo, margens, e outras formatações. 9
Cabeçalho <title>: define o título da página, que é exibido na barra de título dos navegadores. <style type="text/css">: define formatação em CSS. <script type="text/javascript">: define programação de certas funções em página com scripts, podendo adicionar funções de JavaScript. <link>: define ligações da página com outros arquivos como feeds, CSS, scripts, etc. <meta>: define propriedades da página, como codificação de caracteres, descrição da página, autor, etc. 10
Corpo <h1>, <h2>,... <h6>: cabeçalhos e títulos no documento em diversos tamanhos. <p>: novo parágrafo. <br />: quebra de linha. <table>: cria uma tabela (linhas são criadas com <TR> e novas células com <TD>, já os cabeçalhos das colunas são criados com as etiquetas <THead><TH> e os rodapés com <TFooter><TR><TD>). <div>: determina uma divisão na página a qual pode possuir variadas formatações. <b>, <i>, <u> e <s>: negrito, itálico, sublinhado e riscado, respectivamente. <img />: imagem. <a>: hiper-ligação para um outro local, seja uma página, um e-mail ou outro serviço. <textarea>: caixa de texto (com mais de uma linha); estas caixas de texto são muito usadas em blogs, elas podem ser auto selecionáveis e conter outros códigos a serem distribuídos. 11
Hiperligações (Hyperlinks) <a href="ht tp://pt.wikipedia.org/">clique aqui para aceder à página principal da Wikipédia em português.</a> 12
Ferramentas 13
TOMCAT O Tomcat é um servidor web Java, um container de servlets. O Tomcat implementa as tecnologias Java Servlet e JavaServer Pages (JSP). 14
Download do TOMCAT Site: http://tomcat.apache.org/ Baixar a versão ZIP do Tomcat 8 http://mirror.nbtelecom.com.br/apache/tomcat/tomcat-8/v8.0.33/bin/apachetomcat-8.0.33-windows-x64.zip Descomprimir o arquivo e copiar a pasta apache-tomcat-8.x.xx para o c:\ 15
Variáveis de Ambiente É importante criar algumas variáveis de ambiente para o serviço Tomcat consiga ser iniciado com sucesso. As variáveis são: CATALINA_HOME = C:\apache-tomcat-8.0.33 JAVA_HOME = C:\Program Files\Java\jdk1.8.0_74 16
Escolhendo a IDE Para se trabalhar com Java Web de forma eficiente, o ideal é fazer uso da ide do Eclipse voltada para essa categoria. Para baixar Eclipse IDE for Java EE Developers: http://www.eclipse.org/downloads/packages/eclipse-ide-java-eedevelopers/keplersr2 Descomprima e salve o diretório eclipse no C:\ 17
SERVLETS 18
Servlets O nome "servlet" vem da ideia de um pequeno servidor (servidorzinho, em inglês) cujo objetivo é receber chamadas HTTP, processá-las e devolver uma resposta ao cliente. 19
Servlets As Servlets são a primeira forma que veremos de criar páginas dinâmicas com Java. Usaremos a própria linguagem Java para isso, criando uma classe que terá capacidade de gerar conteúdo HTML. 20
Servlets Uma primeira ideia da servlet seria que cada uma delas é responsável por uma página, sendo que ela lê dados da requisição do cliente e responde com outros dados (uma página HTML, uma imagem GIF etc). Como no Java tentamos sempre que possível trabalhar orientado a objetos, nada mais natural que uma servlet seja representada como um objeto a partir de uma classe Java. 21
Servlets Cada servlet é, portanto, um objeto Java que: recebe requisições (request); produz algo (response). 22
Servlets O comportamento das servlets que vamos ver nesta aula foi definido na classe HttpServlet do pacote javax.servlet. 23
Servlets Para escrevermos uma servlet, criamos uma classe Java que estenda HttpServlet e sobrescreva um método chamado service. Esse método será o responsável por atender requisições e gerar as respostas adequadas. Sua assinatura: protected void service (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //... } 24
Exemplo: primeiro servlet public class OiMundo extends HttpServlet { protected void service (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getwriter(); } } // escreve o texto out.println("<html>"); out.println("<body>"); out.println("primeira servlet"); out.println("</body>"); out.println("</html>"); 25
Ciclo de vida do Servlet init() service() destroy() 26
Método init() O Container chama esse método depois que a instância do servlet for criada. Um exemplo de uso é usar o init para carregar driver de banco de dados, ou efetuar alguma inicialização de valores. Assinatura do método: public void init(servletconfig config) throws ServletException 27
O método service() Esse método é invocado quando chega a primeira solicitação do cliente. É chamado depois que o método init permitir ao servlet responder a uma solicitação. Assinatura: public void service(servletrequest request, ServletResponse response) throws ServletException, IOException 28
O método destroy() Esse método tem como objetivo remover o servlet. É invocado quando todas as sequências dentro do método service() forem finalizadas. Assinatura: public void destroy() 29
Ciclo de vida 30
Criando um objeto no Eclipse 31
Criando um projeto Java Web no Eclipse Configure a perspectiva do Eclipse para Java EE: Clique em Window> Perspective> Open Perspective> Java EE 32
Criando um projeto Java Web no Eclipse Clique em File> New> Dynamic Web Project. Atribua um nome ao projeto. No campo Target Runtime, aponte para o Tomcat está instalado. Aperte em Finish. 33
Criando um projeto Java Web no Eclipse Na estrutura de diretório do projeto, selecione a pasta src de acordo com a imagem. Clique com botão direito sobre ela e escolha a opção New>Servlet. 34
Criando um projeto Java Web no Eclipse Coloque um nome para o Servlet e clique em finish. 35
Java Server Pages 36
Java Server Pages Até agora, vimos que podemos escrever conteúdo dinâmico através de Servlets. No entanto, se toda hora criarmos Servlets para fazermos esse trabalho, teremos muitos problemas: na manutenção das nossas páginas; na legibilidade do nosso código, pois sempre aparece código Java misturado com código HTML. 37
Java Server Pages Para não termos que criar todos os nossos conteúdos dinâmicos dentro de classes, misturando fortemente HTML com código Java, precisamos usar uma tecnologia que podemos usar o HTML de forma direta, e que também vá possibilitar a utilização do Java. Algo similar ao ASP e PHP. 38
JSP Páginas JSP devem expor mensagens vindas de outros componentes, tais como Beans e Servlets. Uma página JSP possui códigos em HTML + scriplets 39
Scriptlets São códigos delimitados pela tags: <% %> 40
Exemplo <% // comentário de uma linha /* comentario de varias linhas linhas mais linhas */ %> 41
JSP O JSP possui variáveis implícitas: todo arquivo JSP já possui uma variável chamada out (do tipo JspWriter) que permite imprimir para o response através do método println: 42
Exemplo1.jsp <html> <head> </head> <body> <%! String nome = Maria ; %> <% out.println( O nome é + nome); %> </body> </html> 43
Exemplo2.jsp <% int a = 45; final int b = 34; // isto é uma constante int soma; soma = a + b; out.println( A soma de + a + e + b + é + soma); %> 44
Exemplo3.jsp <% %> float x = 5.1f; float y = (float) 2.0; int i = 1; int j = (int)(i * x); out.println( Misturando int e float: j = + j); out.println( <br> ); double dy = 2.0; double dz = dy * y; out.println( Manipulando float e double: + dz); 45
Exemplo4.jsp <% class Pessoa { String nome; int idade; public String getdados() { return( Nome é + nome+, Idade é + idade); } public void setdados(string anome, int aidade) { nome = anome; idade = aidade; } } %> 46
Exemplo4.jsp <% %> Pessoa p = new Pessoa(); p.setdados( Kleitor, 50); out.println(p.getdados()); 47
Importando uma biblioteca/arquivo/classe Para fazermos o import das classes, precisamos declarar que aquela página precisa de acesso à outras classes Java. Para isso, utilizamos diretivas, que possuem a seguinte sintaxe: <%@... %>. 48
Exemplo <%@ page import="java.util.*, br.com.caelum.agenda.dao.*, br.com.caelum.agenda.modelo.*" %> 49
Exemplo5.jsp <html> <body> <h1>este é o arquivo principal</h1> <br> <%@ include file = Teste.html %> </body> </html> 50
Exemplo5.jsp <html> <head><title>este é um arquivo incluido em outro</title></head> <body> <h1>eu sou um SSI</h1> </body> </html> 51
Exemplo6.jsp <% int x = 50; out.println( Antes do incremento, x = + x + <br> ); x++ out.println( Após o incremento, x = + x); %> 52
Exemplo7.jsp <html> <body> <form method= POST action= exemplo7.jsp > <table> <tr><td> Nome <input type= text name= nome size= 10 > Idade<input type= text name= idade size= 3 > </td></tr> </table> </form> </body> </html> 53
Exemplo7.jsp <html> <body> <center> <% String snome = request.getparameter( nome ); String sidade = request.getparameter( idade ); out.println( Seu nome é + snome + e sua idade é + sidade); %> </center> </body> </html> 54
Exercício 1. Em uma página JSP o que diferencia o conteúdo HTML do conteúdo Java? 2. É obrigatória a declaração dos métodos init e destroy em um servlet? 3. Crie uma página JSP na qual seja criada uma matriz 3x3 de inteiros que após ser preenchida seu conteúdo seja impresso em itálico. 55