PROGRAMAÇÃO PARA WEB

Tamanho: px
Começar a partir da página:

Download "PROGRAMAÇÃO PARA WEB"

Transcrição

1 PROGRAMAÇÃO PARA WEB

2 MINISTÉRIO DA EDUCAÇÃO PRÓ-REITORIA DE ENSINO DEPARTAMENTO DE EDUCAÇAO À DISTÂNCIA ESCOLA TÉCNICA ABERTA DO PIAUÍ - ETAPI CAMPUS TERESINA CENTRAL PROGRAMAÇÃO PARA WEB DISCIPLINA: PROGRAMAÇÃO PARA WEB 75H

3 PRESIDENTE DA REPÚBLICA Luiz Inácio Lula da Silva MINISTRO DA EDUCAÇÃO Fernando Haddad GOVERNADOR DO ESTADO Wilson Martins REITOR DO INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO PIAUÍ Francisco da Chagas Santana SECRETÁRIO DE EDUCAÇÃO A DISTÂNCIA DO MEC Carlos Eduardo Bielschowsky COORDENADORIA GERAL DA UNIVERSIDADE ABERTA DO BRASIL Celso Costa SECRETÁRIA DE EDUCAÇÃO DO ESTADO DO PIAUÍ Maria Pereira da Silva Xavier COORDENADORA GERAL DO CENTRO DE EDUCAÇÃO ABERTA A DISTÂNCIA DO INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO PIAUÍ Elanne Cristina Oliveira dos Santos SUPERITENDÊNTE DE EDUCAÇÃO SUPERIOR NO ESTADO Eliane Mendonça ORGANIZAÇÃO DO MATERIAL DIDÁTICO Franciéric Alves de Araújo

4

5 5 Boas Vindas! Caro (a) Cursista Bem vindo (a) à disciplina PROGRAMAÇÃO PARA WEB. Esta é a nossa Apostila, material elaborado com o objetivo de contribuir para o desenvolvimento de seus estudos e para a ampliação de seus conhecimentos acerca da citada disciplina. Este texto é destinado aos estudantes aprendizes que participam do programa Escola Técnica Aberta do Brasil (e-tec Brasil), vinculado à Escola Técnica Aberta do Piauí (ETAPI) do Instituto Federal de Educação, Ciências e Tecnologia do Piauí (IFPI), com apoio da Prefeitura Municipal dos respectivos pólos: Batalha e Valença do Piauí. O texto é composto de três (03) Aulas assim distribuídas: Na Aula 1 - Discutiremos temas introdutórios e prepararemos o ambiente de programação, pois são necessários para conhecer sobre programação para a WEB. Na Aula 2 Classes Servlets Veremos que estas tecnologias são a solução Java para a produção de conteúdo dinâmico para a WEB em resposta a tecnologia CGI. Na Aula 3 JSP - Aprenderemos nesta aula a parte de maior importância numa aplicação Web, as operações com registros no banco de dados, utilizando a tecnologia JSP.

6 6 Quem sou? Prof. Msc. Franciéric Alves de Araújo Nascido em Teresina-PI, sou graduado em Tecnologia em Informática, Especialista em Banco de Dados pelo Instituto Federal do Piauí (IFPI), Mestre em Ciências e Engenharia de Materiais pela UFRN e doutorando em Biotecnologia pelo RENORBIO. Trabalho como Analista de Sistemas a mais de 6 anos no Instituto Federal de Educação, Ciência e Tecnologia do Piauí IFPI, atuando no Departamento de Sistemas de Informação da Diretoria de Tecnologia da Informação Reitoria do IFPI. Trabalho também em Faculdade particular de Teresina, onde ministro as disciplinas de Fundamentos da Orientada a Objetos, Programação Distribuída, Programação Cliente/Servidor e Integração de Aplicações WEB. Já participei da equipe técnica de Educação à distância, como professor regente e agora como Professor Conteudista.

7 7 Índice Geral APRESENTAÇÃO Índice Geral Índice de Figuras AULA 1 INTRODUÇÃO A PROGRAMAÇÃO PARA WEB PORQUE MIGRAR PARA WEB? ARQUITETURA CLIENTE-SERVIDOR HTML HTTP JAVA EE VISÃO SOBRE A CAMADA WEB ESTRUTURA BÁSICA DE UMA APLICAÇÃO WEB MONTANDO O AMBIENTE DE DESENVOLVIMENTO WEB AULA 2 Classes Servlets INTRODUÇÃO VISÃO GERAL DA ARQUITETURA SERVLET CICLO DE VIDA DA CLASSE SERVLET MANIPULANDO REQUISISÕES E RESPOSTAS DESENVOLVENDO UMA CLASSE SERVLET UTILIZANDO A IDE NETBEANS-46 AULA 3 JavaServer Pages - JSP INTRODUÇÃO AO JAVASERVER PAGES TRABALHANDO COM BANCO DE DADOS... 74

8 8 Índices de Figuras Figura 1 Funções do Servidor e do Cliente Figura 2 - A camada WEB da plataforma Java EE (Imagem do documento J2EE Tutorial) Figura 3 Contêineres da plataforma Java EE (Imagem do documento J2EE Tutorial) Figura 4 Estrutura do diretório requisitado pelo cliente Figura 5 Instalação do Netbeans Figura 6 Instalação do Netbeans Figura 7 Exibição de mensagem no browser através do método out. Figura 8 Ciclo de vida da Servlet. Figura 9 Entrada do Nome do Usuário Figura 10: Saída do GetParameterServlet Figura 11: Recuperando dados de um formulário com múltiplos elementos Figura 12: Saída do GetParameterValuesServlet Figura 13: Selecionando a opção New Project Figura 14: Seleção de uma nova aplicação WEB Figura 15: Caixa de diálogo de nome e localização Figura 16: Detalhe do servidor, versão e caminho de contexto Figura 17: Seleção de um framework Figura 18: Características gerais do Netbeans IDE Figura 19: Diretórios expandidos do projeto na janela projects Figura 20: Estrutura do projeto utilizado pelo tomcat Figura 21: Arquivos encontrados em projeto no Netbeans ide Figura 22: Criando um Servlet Figura 23: Definindo um nome e um pacote para o servletcriando um Servlet Figura 24: Última etapa para a criação do Servlet Figura 25: O item form selecionado Figura 26: A caixa de diálogo insert form com as configurações preenchidas Figura 27: Componente text input selecionado Figura 28: Caixa de diálogo insert text input com o campo nome configurado Figura 29: Componente Button em destaque Figura 30: Botão enviar configurado na caixa de diálogo insert button Figura 31: Run main Project do menu run Figura 32: Detalhe da seleção run do menu de context na janela projects Figura 33: Botão run main Project pressionado na barra de ferramentas build Figura 34: Saídas encontradas na execução de uma aplicação Figura 35: Formulário de envio e o resultado impresso pelo servlet após receber os dados Figura 36: Código Index.jsp Figura 37: Código data.jsp Figura 38: Página retornada utilizando a diretiva page Figura 39: Código usandodiretivaimport.jsp Figura 40: Página exibida Figura 41: Página exibida.

9 9

10 Introdução a Programação para WEB Aula 1 10 Meta da Aula Discutir temas introdutórios e preparação do ambiente de programação, pois são necessários para conhecer sobre programação para a WEB. Objetivos Ao final desta aula, você deverá ser capaz de: 1. Descrever como funciona a WEB; 2. Definir a arquitetura do tipo Cliente- Servidor; 3. Entender sobre o protocolo HTTP; 4. Definir o básico sobre a arquitetura Java EE; 5. Saber o que são Servlets e Java Server Pages; 6. Montar o ambiente de produção.

11 PORQUE MIGRAR PARA WEB? Ambiente de Tecnologia Neutra Um dos principais benefícios em aplicações para a Internet, é que a Internet é um ambiente de tecnologia neutra. A comunicação em qualquer aplicação na WEB é feita através de protocolos populares (HTTP/FTP), que não requerem que o usuário nem o cliente tenham qualquer sistema operacional em particular instalado em sua máquina ou seja desenvolvida em uma linguagem de programação específica. Tudo que os clientes necessitam é de um navegador WEB (denominado Browser), o acesso a aplicação e qualquer sistema operacional. Isto traz diversas possibilidades dentro de uma ampla gama de aplicações baseadas na WEB. Facilidade de distribuição e atualização Visto que o navegador WEB é o único programa instalado que os usuários irão necessitar, não há necessidade de fornecer programas adicionais através de CDs ou outra mídia. Assim, como não existe a necessidade do usuário repassar uma seqüência de instalação, possivelmente demorada, o que será necessário é o local e acesso a aplicação na internet, e tudo estará pronto para funcionar. Outro benefício de se ter o código binário exato do programa, que residirá em um único servidor acessível, ao invés de instalado no computador do usuário, pois evita-se possíveis problemas comuns relatados com atualizações de programas, tais como a necessidade de checar periodicamente novas versões de programas. O problema de conseguir novas atualizações dos programas e eliminado completamente. O usuário não precisa ser informado sobre uma atualização do programa; tudo que será necessário é atualizar o código no

12 12 servidor WEB e, automaticamente, todos os usuários irão usufruir da nova versão. 1.2 ARQUITETURA CLIENTE-SERVIDOR Cliente Pesado e Cliente Magro Uma aplicação WEB é um tipo de aplicação que faz uso da chamada estrutura Cliente-Servidor. Neste tipo, um programa cliente conecta a um servidor para acessar informações que necessita para completar as tarefas que os usuários desejam para realizar. Há os que são chamados clientes magros, e os que são chamados clientes pesados. Clientes magros são os que contém apenas o mínimo necessário para que o usuário execute o sistema. Em geral, é apenas uma casca. Todas as regras de negócio, dados, exceto os que são fornecidos pelo usuário, residem dentro de um servidor. Clientes pesados são os que contém, além de uma interface, alguns, se não muitos, dos processos de regra de negócio requeridos pelas tarefas específicas dos usuários. Arquitetura Cliente-Servidor na visão WEB Na definição acima, podemos citar que o cliente utilizado para aplicações WEB são os que nós chamamos de clientes magros. O programa cliente, um navegador, neste caso, é apenas uma interface que o usuário utiliza para realizar tarefas. Tudo mais, como os dados que o usuário precisa para operar num determinado fluxo lógico de execução do programa, reside no servidor. De uma perspectiva mais focada na WEB, estas são as funções do servidor e do cliente: Servidor WEB

13 13 Figura 1 Funções do Servidor e do Cliente O servidor recebe uma requisição do cliente através do navegador WEB e retorna uma resposta. Qualquer requisição vinda de um cliente inclui o nome e o endereço do item que o cliente está procurando, assim como, qualquer dado fornecido pelo usuário. O servidor assimila a requisição, a processa e retorna uma resposta dos dados procurados pelo cliente ou exibe um código de erro indicando que o item requisitado não existe no servidor. Cliente WEB É da responsabilidade do navegador prover ao usuário uma interface para exibir a resposta fornecida pelo servidor. Quando o usuário emite uma requisição para o servidor, por exemplo, buscar um documento ou submeter um formulário, o navegador deve enviar esta requisição de modo que o servidor possa entender. Uma vez que o servidor finalizou o processo requisitado e enviou uma resposta, o navegador, que recebeu os dados requeridos da resposta do servidor, mostra a página resultante ao usuário.

14 HTML Como o browser sabe o que deve ser exibido ao usuário? A maioria dos sites WEB não tem apenas um conteúdo simples de texto. Ao invés disso, emprega gráficos ou tem formas que acessam dados. Como o navegador sabe o que deverá exibir? A resposta reside em HTML, que são as iniciais para Hypertext Markup Language. HTML pode ser pensado como um conjunto de instruções para um navegador WEB que define como apresentar conteúdo para o usuário. É um padrão aberto, atualizado pela W3C ou a World Wide Web Consortium. Sendo este um padrão aberto, qualquer um pode acessá-lo. Isto também significa que os navegadores são desenvolvidos sobre esse padrão. Isso significa que todos os navegadores sabem o que fazer quando se deparam com HTML, embora alguns navegadores mais antigos possam ter problemas em interpretar algumas páginas que foram escritas usando novas versões de HTML que foram criadas após o desenvolvimento destes HTTP Definição HTTP significa Hypertext Transfer Protocol. É um protocolo de internet de rede de comunicações com características específicas da WEB, que funciona no topo de duas outras camadas de protocolo, TCP e IP. TCP é um protocolo que é responsável por garantir que um arquivo enviado através de uma rede de comunicações seja entregue completamente e com sucesso no destino. IP é um protocolo que encaminha parte dos arquivos de um ponto para outro no seu destino.

15 15 O HTTP utiliza estes dois protocolos para ter certeza de que as requisições e respostas serão entregues corretamente ao final de cada pacote transferido. O protocolo HTTP usa uma seqüência Requisição/Resposta (Request/Response): um cliente HTTP abre uma conexão e envia uma mensagem de requisição para um servidor HTTP. O servidor, então, retorna uma mensagem resposta, geralmente contendo o recurso que foi requerido. Após a entrega da resposta o servidor fecha a conexão fazendo uso de um protocolo stateless HTTP (não mantém qualquer informação de estado sobre a conexão). O formato das mensagens Requisição/Resposta é semelhante e orientado. Ambos os tipos de mensagem consistem em: Um cabeçalho inicial Zero ou mais cabeçalhos adicionais Uma linha em branca (CRLF) O corpo de mensagem (opcional). Ex. Um arquivo, dado ou serviço Requisições HTTP Requisições de um cliente para o servidor contêm a informação sobre o tipo de dado que o usuário necessita. Um dos itens de informação encapsulados no HTTP Request é a item method. Isto diz ao servidor como que este tipo de requisição está sendo feita, e como o resto da mensagem do cliente está formatada. Há dois métodos que serão encontrados: GET e POST. Método GET É o método mais simples que é usado principalmente para requisitar um recurso qualquer de um servidor, como uma página WEB, um arquivo de imagem gráfica, um documento, etc.

16 16 O método GET também pode ser utilizado para enviar dados para o servidor, embora isto tenha suas limitações. A quantidade de caracteres que podem ser encapsulados em uma requisição GET é limitada, então, para as situações onde muitas informações precisam ser enviadas para o servidor, é provável que nem todas as mensagens sobreviverão. Outra limitação do método GET é no envio dos dados. Os dados enviados utilizando este método são simplesmente anexados à URL enviada ao servidor. Por enquanto, pense na URL como um único endereço que é enviado ao servidor. Denota o destino ao qual será enviada a requisição. Um dos problemas encontrados neste método são as muitas URLs que podem ser exibidas na barra de navegação dos navegadores. Isto significa que dados confidenciais, tais como senhas ou informações do contato, serão expostas para qualquer pessoa. A vantagem em se utilizar o método GET para enviar dados para o servidor é que a URL pode ser gravada como um bookmarker pelo navegador. Isto significa que o usuário pode simplesmente selecionar o item desejado e acessá-lo em vez de ter que passar por todo o processo novamente. Vale ressaltar que isto também pode ser perigoso, se a facilidade do bookmarker não é algo que os usuários deveriam ter. Aqui está o que a URL criada com uma GET Request pode parecer: newsitemid=2359&filter=true O item antes do sinal de interrogação (?) representa a URL original da requisição (neste caso é Tudo após, são os parâmetros ou dados que são enviados juntos para o servidor. Olharemos mais atentamente para esta segunda parte. Estes são os parâmetros adicionados pela requisição:

17 17 newsitemid=2359&filter=true Em requisições GET, parâmetros são codificados com pares nomes e valores. Não são enviados valores excedentes de dados para o servidor sem que este conheça especificamente seus nomes. Os pares nomes e valores são codificados como: name=value Além disso, caso exista mais de uma série de parâmetros, estes serão separados utilizando o símbolo &. Neste caso, os nomes dos parâmetros que estudamos são newsitemid e filter, e os valores 2359 e true, respectivamente. Método POST Outro método de requisição utilizado é o POST. Este tipo de requisição é utilizada de tal forma que as solicitações ao navegador podem se tornar complexas, isto é, para que o usuário, através do navegador, possa enviar muitos dados para o servidor. Formas complexas são geralmente envidas utilizando requisições POST, assim como, também, formas simples. Uma diferença aparente entre os métodos GET e POST é o modo como eles enviam dados para o servidor. Como declarado antes, o método GET simplesmente anexa os dados à URL enviada. O método POST, por outro lado, esconde os dados dentro do corpo da mensagem enviada. Quando o servidor recebe a requisição e determina que ela é uma POST, procurará no corpo da mensagem pelos dados. HTTP response (Resposta HTTP) O HTTP response do servidor contém o cabeçalho e o corpo da mensagem, de maneira semelhante ao HTTP request. É utilizado um conjunto diferente de cabeçalhos. Os cabeçalhos contêm informações sobre a versão do protocolo HTTP que o servidor está vendo, assim como também o tipo de

18 18 conteúdo que é escondido dentro do corpo da mensagem. O valor para o tipo de conteúdo é chamado de MIME-type. Informa ao navegador que a mensagem contém um HTML, imagem ou outros tipos de conteúdo. Páginas Dinâmicas ou Estáticas O tipo de conteúdo que pode ser oferecido por um servidor WEB pode ser estático ou dinâmico. Conteúdo estático é o conteúdo que não é modificado. Este tipo de conteúdo geralmente não executa nada quando o servidor é acessado e é criado durante sua requisição. Quando estes conteúdos são enviados através da resposta do servidor, são enviados exatamente o mesmo conteúdo armazenado no servidor. Exemplos de conteúdos estáticos incluem artigos de jornal arquivados, fotos de família, ou uma cópia de um documento. O conteúdo dinâmico, por outro lado, muda de acordo com a requisição do cliente. Tais aplicações no servidor acessam este tipo de conteúdo seguindo um modelo pré-determinado, de acordo com o documento a ser enviado. Este modelo é então preenchido de acordo com os parâmetros enviados pelo usuário e retornam ao cliente. É suficiente dizer que páginas dinâmicas tem muito mais flexibilidade e tem mais utilidade que as páginas estáticas. Aqui estão cenários onde o conteúdo dinâmico será a única que irá atender às necessidades do usuário. A página WEB é baseada em dados submetidos pelo usuário. Por exemplo, os resultados das páginas de pesquisa são gerados deste modo. Programas que processam pedidos e sites de comércio fazem isto muito bem. Dados mudam freqüentemente. Uma página com a previsão do tempo ou novas notícias atualizadas constantemente podem construir a página dinamicamente, talvez retornando a uma página previamente construída se ela

19 19 ainda estiver atualizada. A página WEB utiliza informações de um banco de dados. Realizado pelo acesso e busca ao banco de dados da empresa. É importante perceber que o servidor WEB sozinho não tem capacidade de apresentar conteúdo dinâmico. Os servidores WEB precisaram separar das aplicações as informações que iriam armazenar informações pertinentes ao cliente (tais como dados coletados em formulários) dentro do depósito de páginas. Não se pode esperar que, a partir de um formulário, ter os dados do cliente, quando submetidos ao servidor, este conhecerá automaticamente o que deverá ser feito com estes dados. Estamos, agora, no ponto da discussão onde podemos, explicitamente, apontar que é esta a questão principal das aplicações WEB e formam a base para a nossa disciplina. Neste disciplina iremos nos voltar, primeiramente, às tecnologias baseadas em Java para criar aplicações WEB. Mais especificamente, faremos um uso excessivo de bibliotecas fornecidas a nível de especificação. 1.5 JAVA EE VISÃO SOBRE A CAMADA WEB. A plataforma Java EE foi criada para o desenvolvimento de aplicações corporativas (baseada em componentes). O modelo de aplicação utilizada para esta plataforma é chamado Modelo de Aplicação Multi-Camadas Distribuídas, ou, simplesmente, multi-tier. O aspecto de distribuição deste modelo simplesmente significa que a maior parte das aplicações programadas e desenvolvidas com esta plataforma em mente podem ter diferentes componentes instalados em diferentes máquinas. A parte multi-tier significa que as aplicações são concebidas visando a separação entre as camadas dos vários componentes importantes da aplicação. Um exemplo de uma aplicação multi-tier é uma aplicação WEB: a camada de apresentação (representada pelo navegador), a

20 20 camada de lógica de negócio (o programa que reside no servidor WEB), e a camada de dados (a base de dados que irá armazenar e gerenciar os dados da aplicação) são distintamente separadas, entretanto são necessários para se criar uma aplicação para o usuário. Um dos níveis na plataforma Java EE, como previamente mencionado é a web-tier. Este nível é destinado a camada que interage com o navegador para criar o conteúdo dinâmico. Existem duas tecnologias dentro desta camada: Servlets e JavaServer Pages JSP. Figura 2 A camada WEB da plataforma Java EE (Imagem do documento J2EE Tutorial) Servlets A tecnologia Servlet foi a resposta inicial de Java para acrescentar a funcionalidade adicional aos servidores que utilizavam o modelo requisição/resposta. Possui a habilidade de ler dados contidos na requisição (request) passada ao servidor e gerar uma resposta dinâmica baseada nestes dados. Servlet não é necessariamente limitada as situações baseadas em HTTP. Como declarado antes, são aplicáveis para qualquer caso que utilize o modelo requisição/resposta. As situações baseadas em HTTP são, atualmente, o uso desta tecnologia.

21 Então, Java forneceu uma versão de classes específicas que implementam as características de HTTP. 21 JavaServer Pages Uma das desvantagens de se utilizar a tecnologia de classes Servlets para gerar uma resposta ao cliente, é que primeiro essa resposta deve ser formatada em HTML para ser reenviada. Já que que Servlets são simplesmente classes em linguagem de Java, produzem resultados de modo semelhante a que outras classes Java fariam: através da impressão de caracteres em formato String pelo canal de saída, neste caso a HTTP response. Entretanto, HTML pode se tornar bastante complexo e ser muito difícil codificar HTML através do uso de uma String. Além disso, o emprego de recursos gráficos dedicados e páginas WEB programadas para ajudar na parte estática das páginas é difícil. Estaríamos supondo que a equipe de desenvolvimento deva ter um bom conhecimento de Java. Deste modo surgiu a tecnologia JavaServer Pages. A JSP se parece com HTML, tendo acesso a todas as habilidades dinâmicas das classes Servlets através do uso de scripts e linguagem de expressão. Visto que se parece muito com HTML, os projetista podem se concentrar no simples formato HTML e realizar as modificações necessárias e permite que os desenvolvedores ocupem-se do conteúdo dinâmico. Contêiner O conceito central de qualquer aplicação Java EE é o contêiner. Todo componente Java EE, inclui componentes WEB (Servlet ou JSP) que dependem da existência de um contêiner. Sem o contêiner apropriado, não seriam executados. Talvez outro modo de explicar isto seria pensar sobre o modo normal de execução dos programas Java. Programas Java, para serem executados, devem ter um método principal definido. Isto marca o começo da execução do programa, sendo

22 22 este método processado quando o programa é executado na linha de comando. Figura 3 Contêineres da plataforma Java EE (Imagem do documento J2EE Tutorial) Como veremos mais tarde, a classe Servlet, não têm um método principal definido. E se existe algum definido (bad programming design) este não marca o começo da execução do programa. Quando o usuário faz uma requisição HTTP (http request) para uma classe Servlet, seu método não é chamado diretamente. Em vez disso, o servidor passa a requisição não para a classe Servlet, mas para o contêiner na qual a Servlet está inserida. O contêiner é o único responsável pela chamada ao método apropriado na Servlet, dependendo do tipo de requisição do usuário. Vantagens fornecidas pelo contêiner Suporte de comunicações. O contêiner passa todo código necessário para a Servlet para se comunicar com o servidor WEB. Sem o contêiner, desenvolvedores precisariam escrever o código que iria criar uma conexão socket do servidor para a

23 23 Servlet e vice-versa e ainda deveria gerenciar como eles falam um ao outro a cada momento. Gerenciamento do Ciclo de Vida. O contêiner conhece o que se passa na vida de suas classes Servlets desde seu carregamento, instalação, inicialização e recolhimento pelo Garbage Collector. Suporte a múltiplas tarefas. O contêiner controla a função de criar uma nova thread a cada momento que uma requisição para a classe Servlet é realizada. NOTA: o contêiner NÃO será responsável pelas thread de sua Servlet. Declaração de Segurança. Um contêiner suporta o uso de um arquivo de configuração XML que pode repassar diretivas de segurança para sua aplicação WEB sem precisar de um código complexo qualquer dentro do Servlet. Suporte JSP. Páginas JSP, para funcionarem, devem ser transformadas em uma classe Java (Servlet). O contêiner controla a tarefa de traduzir as páginas JSP para uma classe Servlet, compilar e executar. 1.6 ESTRUTURA BÁSICA DE UMA APLICAÇÃO WEB. Como veremos mais tarde, a classe Servlet, não têm um método principal definido. E se existe algum definido (bad programming design) este não marca o começo da execução do programa. Quando o usuário faz uma requisição HTTP (http request) para uma classe Servlet, seu método não é chamado diretamente. Em vez disso, o servidor passa a requisição não para a classe Servlet, mas para o contêiner na qual a Servlet está inserida. O contêiner é o único responsável pela chamada ao método apropriado na Servlet, dependendo do tipo de requisição do usuário.

24 24 Para um determinado contêiner reconhecer sua aplicação como aplicação WEB válida, esta deve se adequar a uma estrutura específica de diretório conforme a figura a seguir. Figura 4 Estrutura do diretório requisitado pelo cliente A figura mostra a estrutura do diretório requisitado pelo contêiner para que sua aplicação seja reconhecer. Alguns pontos relativos a esta estrutura são: 1. A Pasta Raiz (contém a aplicação) não precisa ser nomeada como Pasta Raiz. Pode ser, qualquer nome que se deseje, embora seja altamente recomendado que o nome desta pasta seja o nome da sua aplicação. 2. Qualquer outra pasta pode ser criada dentro desta estrutura do diretório. Por exemplo, para desenvolvedores que desejam organizar seus conteúdos, devem ser criadas pastas dentro da pasta inicial para organizar os arquivos. 3. As letras maiúsculas na pasta META-INF e WEB-INF são intencionais e obrigatórias assim como as letras minúsculas nas pastas classes e lib. Não seguir o formato correto em qualquer destas pastas resultará que sua aplicação não será capaz de localizar seus conteúdos. 4. Todo conteúdo da pasta WEB-INF não será visto a partir do navegador (por exemplo, acessando seu endereço). O contêiner automaticamente gerencia isto, ou seja, para o navegador, esta pasta não existe. Este mecanismo protege suas fontes confidenciais, como classe de arquivos Java, as

25 25 configurações de aplicações, entre outros. O conteúdo desta pasta, somente pode ser acessado pela aplicação. 5. Deve existir um arquivo chamado web.xml dentro da pasta WEB-INF. Mesmo que, por exemplo, sua aplicação WEB tenha apenas conteúdo estático e não faça uso de classes Java ou arquivos externos, o contêiner ainda irá requerer que sua aplicação tenha estes dois itens. 1.7 MONTANDO O AMBIENTE DE DESENVOLVIMENTO WEB. Para desenvolvimento da aplicação em nossa disciplina vamos usar a IDE Netbeans e o Servidor WEB TOMCAT. Ambos são aplicativos gratuitos. Baixando o instalador Netbeans Na página de download do NetBeans IDE, você pode adquirir um dos diversos instaladores, cada um contendo o IDE básico e as ferramentas adicionais. Os seguintes instaladores estão disponíveis: Java SE. Oferece suporte a todos os recursos de desenvolvimento padrão Java SE, bem como à plataforma de desenvolvimento NetBeans RCP. JavaFX. Inclui o JavaFX SDK e o JavaFX Composer para o desenvolvimento de aplicativos de uso intenso de multiplataforma. Java. Fornece ferramentas para o desenvolvimento de aplicativos Java SE, Java EE e Java ME, assim como o suporte para a plataforma de desenvolvimento NetBeans RCP. Esta opção de download inclui também o GlassFish Server Open Source Edition e o software Apache Tomcat Ruby. Fornece ferramentas para desenvolvimento Ruby e oferece suporte para Rails e JRuby. Também contém o GlassFish Server Open Source Edition

26 26 C/C++. Oferece suporte para o desenvolvimento nas linguagens C, C++, Fortran e Assembly. PHP. Fornece ferramentas para o desenvolvimento PHP 5.x e o suporte para o Zend e Symfony Framework. Tudo. Trata-se de uma opção de download completo que contém todos os executáveis e tecnologias disponíveis para o NetBeans IDE. Iremos baixar o instalador java que contém o servidor web tomcat, disponível para download em( beans ml-java-windows.exe) Convem ressaltar que O Apache Tomcat está incluído nas opções de download "Java" e "Tudo", mas não é instalado por padrão nessas opções. Para instalar o Apache Tomcat da opção de download Java ou "Tudo", inicie o instalador e selecione Apache Tomcat na caixa de diálogo Instalação personalizada, quando estiver instalando o netbeans. Após download proceda com a instalação. Na tela de boas vindas do instalador do Netbeans clique em Personalisar

27 27 Figura 5 Instalação do Netbeans Na próxima janela selecione o pacote Apache Tomcat e em seguida clique em OK Figura 6 Instalação do Netbeans Confirme as escolhas da instalação e clique em Próximo até iniciar a instalação..

28 28 EXERCÍCIOS 1) Que tipo de arquitetura as aplicações WEB usam? Quem são os participantes de tais estruturas e o quais são suas funções? 2) Qual o tipo de linguagem utilizada para indicar ao navegador como apresentar conteúdo para o usuário? 3) HTTP é um protocolo de conexão stateful ou stateless? 4) Quais são os dois métodos HTTP Request mais utilizados? E como eles são diferentes? Quando é melhor usar um ao invés do outro? 5) Qual componente é absolutamente necessário para ser possível executar aplicações WEB? 6) Quais são os elementos não opcionais da estrutura de diretórios da aplicação WEB? 7) Qual é o nome do arquivo XML utilizado para configurar aplicações WEB? Em qual diretório pode ser encontrado? 8) Qual pasta contém os arquivos JAR das bibliotecas usadas pelas aplicações? 9) Qual pasta irá conter os arquivos de classe Java usados pelas aplicações?

29 29 RESUMO DA AULA Nesta conhecemos e aprendemos a configurar o ambiente necessário para construção de Aplicações WEB. Alem de discutir os conceitos básicos sobre programação para WEB. NA PRÓXIMA AULA Na aula 2 daremos inicio a construção de uma aplicação WEB utilizando SERVLET.

30 Classes Servlets Aula 2 30 Meta da Aula Demonstrar o processo de Criação de classes Servlets. Objetivos Ao final desta aula, você deverá ser capaz de: 1. Obter uma visão geral da arquitetura Servlet; 2. Conhecer o ciclo de vida de uma Servlet; 3. Manipular requisições e respostas; 4. Desenvolver as primeiras aplicações web com Servlets;

31 INTRODUÇÃO Uma Servlet é uma classe Java usada para estender a capacidade dos servidores que hospedam aplicações acessadas via modelo de programação Requisição/Resposta. É uma classe Java que implementa a interface Servlet e aceita requisições que vêm de outras classes Java, clientes Web ou outros Servlets, gerando, então, respostas. As Servlets também são conhecidas como HTTP Servlet. Isto porque os Servlets são comumente usados com o HTTP atualmente, não há um protocolo cliente-servidor específico. Para iniciar o uso das Servlets será necessário ter conhecimentos sobre programação Java, conceitos sobre cliente-servidor, HTML básico e HTTP (HyperText Transfer Protocol). Para criar uma Servlet será necessário importar para a nossa classe Java as classes de extensão padrões que estão dentro dos pacotes javax.servlet e javax.servlet.http. O pacote javax.servlet contém a estrutura básica de Servlet, enquanto que o pacote javax.servlet.http é utilizado como uma extensão da tecnologia para as Servlets que realizam requisições HTTP. Figura 27 Modelo ER da Aplicação de Cadastro de Empresa 2.2 VISÃO GERAL DA ARQUITETURA SERVLET Antes da tecnologia Servlet, o meio mais comum de adicionar funcionalidades a um servidor WEB era através do uso de CGI (Common Gateway Interface ou Interface de Entrada Comum). CGI fornece uma interface do servidor para uma classe externa permitindo que esta invoque o servidor a tratar as requisições do cliente. Porém, o CGI foi desenhado de forma que cada chamada para um recurso CGI fosse criado um novo processo no servidor; informação significante para a classe é passada para este

32 32 processo utilizando entradas padrões e variáveis de ambiente. Uma vez completada a requisição, o processo é terminado, devolvendo o recurso ao sistema. O problema que incorre neste tipo de abordagem é que isto impõe pesadas requisições aos recursos do sistema limitando o número de usuários que a aplicação pode atender ao mesmo tempo. A Tecnologia Servlet foi projetada para contornar este problema inerente ao CGI e prover aos desenvolvedores uma solução robusta em Java para criar aplicações WEB. Ao invés de criar um processo peso-pesado no servidor a cada requisição do cliente, com Servlets há somente um processo para todas as requisições: o processo solicitado pelo contêiner da Servlet para executar. Quando uma nova requisição chega, o contêiner cria somente uma pequena thread para executar a Servlet. Servlets também são carregados em memória somente uma vez, ou seja, o contêiner carrega-os em memória na inicialização do servidor ou na primeira vez que o Servlet for requisitado para atender a um cliente, diferente do CGI, que para cada requisição do cliente carrega e descarrega os dados da classe em memória. Uma vez carregado em memória, está pronto para tratar as requisições dos clientes. Primeira Vista sobre Servlets O código a seguir mostra a estrutura de uma Servlet básica que trata as requisições GET, assim como exibe o tradicional exemplo 'Hello World'. import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloServlet extends HttpServlet { public void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { //"request" é utilizado para ler os dados do formulário HTML dos cabeçalhos // HTTP (um exemplo são os dados digitados e submetidos) // e outros dados que podem ser obtidos a partir da

33 33 requisição do cliente. // "response" é para especificar a linha e o cabeçalho de resposta do HTTP // (exemplo: especificar o tipo do conteúdo, definir cookies). // Também contém métodos que permitem ao Servlet gerar respostas para // o cliente. PrintWriter out = response.getwriter(); out.println("<html> <TITLE>Hello Page</TITLE><BODY><br>"); out.println("<h1>hello World!</h1>"); out.println("</body></html>"); //"out" para enviar o conteúdo para o browser. } } A primeira parte do código trata da importação das classes em java.io (para PrintWriter, etc.), javax.servlet e javax.servlet.http. Os pacotes javax.servlet e javax.servlet.http fornecem interfaces e classes para escrever as Servlets (contêm as classes HttpServlet, HttpServletRequest e HttpServletResponse). Por extensão da HttpServlet, herda os métodos que são automaticamente chamados pelo servidor dependendo de certas condições que serão explicadas mais à frente. Por polimorfismo por overriding destes métodos podemos fazer com que nossa Servlet execute a funcionalidade que quisermos. Neste caso, o método herdado do HttpServlet que sobrepomos é o método doget. Simplificando, ele é o método que é invocado pelo contêiner sempre que uma requisição GET é feita de uma Servlet em particular. Relembrando do módulo anterior, navegação de site, recuperação de documento, visualização de páginas são exemplos de requisições GET. Logo, sempre que um usuário quiser ver a resposta da nossa Servlet deve invocar uma requisição GET. Ao visualizarmos o código veremos que o método doget utiliza dois parâmetros: um objeto HttpServletRequest e um objeto HttpServletResponse. Não obstante, estes objetos vêm de encontro com as necessidades do desenvolvedor. São criados e mantidos por um contêiner e são simplesmente passados no

34 34 momento que este contêiner chama o método doget. A respeito disso, o método doget e outros métodos, que serão discutidos depois, são similares ao método public statis void main(strings[] args) que utilizamos em classes Java baseadas em linhas de comando. Não será criado um array de String para passarmos com o método; pois já foi realizado pelo ambiente de execução. Os objetos HttpServletRequest e HttpServletResponse atendem aos desenvolvedores através das seguintes funcionalidades: O objeto HttpServletRequest fornece acesso a todas as informações a respeito das requisições do cliente incluindo todos os parâmetros que são colocados nos cabeçalhos de requisições HTTP, métodos de requisições HTTP, entre outros. O objeto HttpServletResponse contém todos métodos necessários utilizados pelos desenvolvedores para produzir respostas que serão enviadas de volta ao cliente. Isto inclui métodos para definir o cabeçalho de resposta HTTP, declarar respostas do tipo MIME, bem como métodos de recuperação de instâncias de classes Java I/O as quais podemos utilizar diretamente para produzir a saída. Voltando ao código, vemos que, com a exceção dos comentários, existem muitas linhas que usamos para executar a funcionalidade de exibir "Hello World!" ao usuário. Uma dessas linhas é: PrintWriter out = response.getwriter(); e múltiplas chamadas para o método out.println(). Por enquanto, pensemos no objeto out como quem leva nosso texto de saída para o browser do cliente.

35 35 Figura 7 Exibição de mensagem no browser através do método out. 2.3 CICLO DE VIDA DA CLASSE SERVLET Uma Servlet é gerenciada através de um ciclo de vida bem definido descrito nas especificações Servlet. O ciclo de vida do Servlet descreve como ele é carregado, instanciado, inicializado, requisitado, destruído e finalmente coletado (retirado de memória garbage collection). O ciclo de vida de um Servlet é controlado pelo contêiner em que ele é instalado. O ciclo de vida da Servlet permite ao contêiner resolver os problemas de endereçamento e performance do CGI e as preocupações com segurança da API de programação de um servidor baixo-nível. Um contêiner deve poder executar todas as Servlets em uma única JVM (Java Virtual Machine Máquina Virtual Java). Por esta razão, as Servlets podem eficientemente compartilhar dados entre si e evitar que uma acesse os dados particulares de outra. As Servlets podem também permitir persistência entre requisições como objetos instanciados, utilizando assim menos memória do que processos completamente empacotados.

36 36 Figura 8 Ciclo de vida da Servlet. A figura mostra os principais eventos na vida de uma Servlet. É importante notar que para cada um destes eventos há um método que será invocado pelo contêiner. Instanciação Neste estágio, a classe Servlet é carregada para a memória e uma instância é criada pelo contêiner. Por padrão, um contêiner pratica o que chamamos de lazy loading (carregamento tardio). Utilizando este método, uma classe Servlet é carregada para a memória, instanciada e inicializada somente depois que uma requisição for feita. Isto diminui o tempo de inicialização da aplicação, entretanto significa também que haverá um pouco de atraso associado à primeira requisição de cada Servlet. Se este comportamento for indesejável, cada Servlet deve ser configurada para ser carregada juntamente com a aplicação. Isto será discutido posteriormente quando abordarmos o descritor de carregamento.

37 37 Como podemos ver na figura, uma Servlet passa pela fase de instanciação somente uma vez durante seu ciclo de vida. Isto significa que o atraso associado ao seu carregamento em memória acontece somente uma vez. Isto mostra a vantagem desta sobre outras tecnologias. O método relevante que o contêiner irá chamar neste estágio será o construtor. Não é recomendado que se coloque qualquer código no construtor. A maioria das funcionalidades que os desenvolvedores querem adicionar aos construtores envolvem definição de objetos ou inicialização de variáveis. Servlets possui uma fase separada para este tipo de atividade. Inicialização Nesta fase, Servlet é primordial para o uso na aplicação. Assim como a fase de instanciação, uma Servlet passa por este estágio somente uma vez. Isto só ocorre após a fase em que nosso objeto é inicializado ao ser chamado pela Servlet. O método que é chamado pelo contêiner neste ponto é o método init(). A assinatura completa do método é apresentada abaixo. public void init(servletconfig config) Como podemos ver, este método tem um parâmetro: uma instância do objeto ServletConfig. Este objeto contém informações sobre a configuração da Servlet bem como fornece meios para que a Servlet acesse informações da aplicação e seus recursos. Como mencionado anteriormente, qualquer código de configuração ou inicialização não deve ser colocado na área do construtor, em vez disso, deve ser colocado dentro do método init. Se um desenvolvedor implementar este método, é importante que realize uma chamada ao super.init(config). Isto garante que a ação de inicialização padrão da Servlet seja executada e que sua configuração seja apropriadamente definida.

38 38 Após a inicialização, a Servlet estará apta a receber as requisições dos clientes. Este método somente será chamado novamente quando o servidor recarregar a Servlet. O servidor não pode recarregar uma Servlet até que esta seja destruída através do método destroy. Pronta Esta é a fase quando uma Servlet está no auge do seu ciclo de vida. Nesta, a Servlet pode ser chamada repetidamente pelo contêiner para prover sua funcionalidade. O método chamado pelo contêiner nesta fase é service() e possui a seguinte assinatura: public void service(servletrequest req, ServletResponse res) Os objetos ServletRequest e ServletResponse passados para este método provêem métodos para extrair informação das requisições dos usuários e métodos para gerar as respostas. Um detalhe importante a ser observado, o contêiner realiza repetidas chamadas ao método service usando threads separadas. Geralmente, há somente uma instância ativa da Servlet consumindo espaço em memória e atendendo às diversas requisições. Esta é outra vantagem que o Servlet Java possui é também uma das principais razões porque uma Servlet (e o seu método service) é projetado para conter um thread-safe. Para Servlets específicos HTTP (Servlets estendendo HttpServlet), os desenvolvedores não devem implementar o método service diretamente. Ao invés disto, devem implementar qualquer um dos seguintes métodos: public void doget(httpservletrequest req, HttpServletResponse res) public void dopost(httpservletrequest req, HttpServletResponse res) public void doput(httpservletrequest req, HttpServletResponse res) public void dotrace(httpservletrequest req, HttpServletResponse res)

39 39 Cada um destes métodos corresponde a um método HTTP específico (GET, POST,...). O método apropriado é então chamado quando o Servlet recebe a requisição HTTP. Já que a maioria das chamadas HTTP, que os desenvolvedores devem se preocupar, são dos métodos GET ou POST, Servlets podem implementar doget, dopost ou ambos. Destruição Em algumas ocasiões, quando o contêiner ficar sem memória ou detectar que a quantidade de memória livre possui pode gerar algum problema, o contêiner tentará liberar memória destruindo uma ou mais instâncias da Servlet. Qual será removida é determinado pelo contêiner e o desenvolvedor não tem controle direto. Um contêiner poderá liberar uma instância da Servlet como parte de seu processo de desligamento. Quando a Servlet está para ser removida de um gerenciamento do contêiner, ela está na fase de destruição. O método chamado pelo contêiner, antes de realizar isto, é o destroy(). Aqui, na nossa Servlet deveria ser codificado para explicitamente liberar os recursos utilizados (ex. Conexões com o Banco de Dados). Garbage Collection Esta fase do ciclo de vida de uma Servlet é equivalente a de qualquer outro objeto Java. Relembrando que esta fase ocorre antes que um objeto seja retirado da memória. Os desenvolvedores não têm controle direto quando isso irá ocorrer. O método do objeto chamado nesta fase é o finalize().

40 MANIPULANDO REQUISISÕES E RESPOSTAS O principal objetivo de uma Servlet é prover conteúdo dinâmico para o usuário. Por definição, o conteúdo dinâmico muda em resposta a diversas condições. Exemplos dos quais são as requisições específicas de usuário, a hora, temperatura. Para dar a Servlet acesso aos dados de uma requisição, esta é provida em uma instância do objeto ServletRequest que esconde estes detalhes. Servlets baseados em HTTP possuem uma subclasse, HTTPServletRequest, que provê métodos adicionais para obter informação específica do HTTP, como informação sobre cookies, detalhes de cabeçalhos, entre outros. Dados e Parâmetros de Formulário Método request.getparameter Um dos cenários que freqüentemente requer mais frequentemente conteúdo dinâmico é quando queremos que nossa aplicação responda aos dados do usuários apresentados em um formulário. Veja o exemplo seguinte:

41 41 Figura 9 Entrada do Nome do Usuário Dado o seguinte formulário, mostrado na figura anterior, que obtém o nome do usuário, queremos produzir uma resposta customizada para qualquer nome submetido. Para este e outros cenários similares, Java provê o método getparameter no objeto HttpServletRequest. Este método possui a seguinte assinatura: public String getparameter(string parametername) Este método obtém o nome do parâmetro que desejamos obter e retorna o valor da String que representa este parâmetro. Abaixo segue um código exemplo que obtém o nome do usuário e dá saída em um simples cumprimento, seguido pelo HTML usado para mostrar o formulário. public class GetParameterServlet extends HttpServlet { protected void dopost(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { // retorna o valor solicitado pelo usuário

42 42 String username = request.getparameter("username"); // retorna um objeto PrintWriter e utiliza-o para a mensagem de saída PrintWriter out = response.getwriter(); out.println("<html><body><h1>"); out.println("hello AND WELCOME, " + username + "!"); out.println("</h1></body></html>"); out.close(); } } Temos a seguir, o código para HTML exemplo utilizado para mostrar o formulário: <HTML> <TITLE>Halloa!</TITLE> <BODY> <form action="getparameterservlet" method="post"> Enter user name: <input type="text" name="username"/> <br/> <input type="submit" value="greet me!"/> </form> </BODY> </HTML> Ao entrar com o valor "JEDI" no formulário, obtemos o seguinte resultado:

43 43 Figura 10: Saída do GetParameterServlet Método request.getparametervalues Existem momento que necessitamos recuperar dados de um formulário com múltiplos elementos com o mesmo nome. Neste caso, usando apenas o método getparameter descrito anteriormente, será retornado apenas o valor do primeiro elemento com aquele nome. Para recuperar todos os valores, usamos o método getparametervalues: public String[] getparametervalues(string parametername) Este método é similar ao que acabamos de discutir. Também recebe o nome do parâmetro que queremos recuperar o valor. Desta vez, ao invés de uma única String, retorna um array de Strings.

44 44 Este é um exemplo: public class GetParameterValuesServlet extends HttpServlet { protected void doget(httpservletrequest request, HttpServletResponse response) throws ServletExceptionm IOException{ String paramvalues[] = request.getparametervalues("sports"); StringBuffer myresponse = new StringBuffer(); PrintWriter out = response.getwriter(); out.println("<html><title>your choices</title>"); out.println("<body><h1>your choices were : </H1>"); for (int i = 0; i < paramvalues.length; i++) { out.println("<br/><li>"); out.println(paramvalues[i]); } out.println("</body></html>"); } } A seguir, temos o código para o HTML usado para mostrar o formulário: <html> <title>choice selection</title> <body> <H1>What sports activities do you perform?</h1> <form action="getparametervaluesservlet" method="get"> <input type="checkbox" name="sports" value="biking"> Biking <br/> <input type="checkbox" name="sports" value="table Tennis"> Table Tennis <br/> <input type="checkbox" name="sports" value="swimming"> Swimming

45 45 <br/> <input type="checkbox" name="sports" value="basketball"> Basketball <br/> <input type="checkbox" name="sports" value="others"> Others <br/> <input type="submit"> </form> </body> </html> Figura 11: Recuperando dados de um formulário com múltiplos elementos Se as opção Basketball" for escolhida, a saída seria:

46 46 Figura 12: Saída do GetParameterValuesServlet DESENVOLVENDO UMA CLASSE SERVLET UTILIZANDO A IDE NETBEANS Para criar seu primeiro projeto Web, vá ao menu File e clique em New Project. Alternativamente, na janela Projects, você pode dar um clique com o botão direito do mouse e selecionar a opção New Project (Ctrl+Shift+N) no menu de contexto. Figura 13: Selecionando a opção New Project

47 47 A caixa de diálogo New Project surgirá. O desenvolvimento de projetos para aplicações Web se encontra na categoria (Categories) Web. Como a aplicação trata-se de um desenvolvimento sem informações anteriores, ou seja, limpo, você seleciona Web Application em Projects. Após selecionar a opção em Projects clique no botão Next Figura 14: Seleção de uma nova aplicação WEB Na segunda etapa do assistente, você possui várias opções para a construção do seu projeto.

48 48 Figura 15: Caixa de diálogo de nome e localização Em Nome do projeto você digita o nome do seu projeto. No caso desse material é DesvComServlets. Em Localização do projetoproject Location o NetBeans coloca seus projetos geralmente no diretório do usuário do seu sistema operacional. Para mudar a localização, clique no botão Procurar e selecione ou crie um novo diretório para salvar seus projetos. Perceba que o seu projeto gerará um novo diretório, e este é mostrado em Pasta do projeto. A opção Configurar como projeto principal indica qual é o projeto que será compilado toda vez que você mandar rodar para exibir no browser. Na caixa de diálogo seguinte você tem como principais pontos o Servidor, que pode ser selecionado em Servidor. Os servidores possuem características próprias, embora, no geral, sejam parecidos em suas administrações, desde que sigam rigorosamente regras impostas pela Sun Microsystems. Um exemplo de servidores que trabalhem com Java EE na versão 5 é o Sun Java System Application Server, GlassFish, Geronimo e etc. Figura 16: Detalhe do servidor, versão e caminho de contexto

49 49 Outra forma seria clicar no botão Adicionar e adicionar um novo servidor (ou container) para uma versão inferior a 6. No caso desse material, vamos utilizar o GlassFish V3 como Servidor para o primeiro projeto. E com a versão de Java EE 6 web selecionada em Java EE Version. Em Caminho do contexto você possui o nome do contexto de acesso ao projeto, o que na realidade será a sua aplicação. A terceira etapa é a seleção de um framework, no qual não será abordado nesse material. Figura 17: Seleção de um framework VISÃO GERAL DO NETBEANS IDE O NetBeans possui muitos menus, ferramentas e janelas que o auxiliam no de- senvolvimento de uma aplicação Web. A seguir a Figura 2.7 que demonstra os principais componentes que existem na IDE quando você cria um projeto.

50 50 Figura 18: Características gerais do Netbeans IDE BARRA DE TÍTULO: A barra de título sempre exibe o nome do projeto. BARRA DE MENUS: Esta é a barra de menu global, que lhe permite fazer todas as tarefas gerais. As opções disponíveis em cada menu também mudarão de- pendendo do que estiver selecionado. BARRA DE FERRAMENTAS: Esta é a barra de ferramentas global da IDE que tam- bém lhe permite executar tarefas gerais e tarefas específicas para itens selecio- nados. BARRA DE STATUS: Esta linha exibe tipicamente informações que dependem da tarefa você está executando atualmente. SOURCE EDITOR: É exatamente o que o seu nome diz: é um painel para editar documentos. Aqui você escreve seus códigos Java.

51 51 JANELAS: Mostram grupos de objetos relacionados, propriedades, componen- tes e até mesmo a saída da execução de um código Java. EXPLORANDO SEU PROJETO A janela Projects será com certeza a que você mais vai utilizar, após o Source Editor. Nesta janela você possui diversos atalhos, com o menu de contexto, que podem ser muito úteis, passando desde a execução de um projeto como até mesmo adi- cionar novas bibliotecas, criar novos arquivos, alterar seus nomes e etc. Na construção de uma aplicação Web, você possui diversos elementos. Estes ele- mentos estão dispostos em forma de diretórios que podem ser expandidos clicando em seus nós. O diretório Web Pages representa o diretório principal (raiz) de uma aplicação Web normal. Dentro deste nó você encontra o diretório WEB-INF, que contém o arquivo obrigatório web.xml, conhecido como deployment des- criptor. Junto a este diretório, há também um arquivo inicial, chamado de index.jsp, que é aberto inicialmente assim que concluído o projeto. Veremos isto mais adiante. Expandindo o nó de Configuration Files você encontra os arquivos MANIFEST. MF, sun-web.xml e web.xml. Evidentemente pode haver mais arquivos, pois neste diretório se encontram todos os arquivos referentes à configuração da aplicação Web que você está desenvolvendo. Em Source Packages você encontra pacotes e classes Java e Servlets, criados no processo de desenvolvimento da sua aplicação.

52 52 Figura 19: Diretórios expandidos do projeto na janela projects No caso de uma aplicação criada para trabalhar com o Tomcat, por exemplo, o padrão Jakarta entra em ação. A Apache Jakarta fornece diretrizes de como estruturar suas aplicações Web para assegurar que elas trabalhem corretamente com o servidor Tomcat. Quando você cria um projeto na IDE e seleciona o Tomcat, esta estrutura é respeitada. A seguir você tem a imagem da janela Projects com a estrutura de sua aplicação utilizando a Apache Jakarta para um projeto com o container Servlet Tomcat 6:

53 53 Figura 20: Estrutura do projeto utilizado pelo tomcat Clicando na janela Files, ao lado de Projects, você vê a estrutura do seu projeto como se encontra no sistema operacional. Figura 21: Arquivos encontrados em projeto no Netbeans ide A Tabela a seguir compara a estrutura de um projeto Web criado no NetBeans e a estrutura real da aplicação no GlassFish ou Tomcat.

54 54 CONTEÚDO REPRESENTAÇÃO NA JANELA PROJECTS REPRESENTAÇÃO NA JANELA FILES NO ARQUIVO WAR Páginas Web Nó Web Pages Diretório web Na raiz do arquivo Arquivos Java não compilados, servlets, entre outros Nó Source Packages Diretório src Diretório classes dentro de WEB-INF testes unitários Nó Test Packages Diretório test N/A deployment descriptor (web.xml) Nó Configuration Files GlassFish(sun-web.xml) Nó Configuration Files Arquivo de configuração do Tomcat e GlassFish V2 ou superior (context configuration) (context.xml) Nó Configuration Files Diretório WEB-INF em web Diretório WEB-INF em web Diretório META-INF em web Bibliotecas Nó Libraries Diretório lib em web/ WEB-INF Testes Nó Test Libraries Diretório test N/A Metadata do projeto incluindo script build Propriedade do projeto na caixa de diálogo Project Properties, que pode ser aberta com um clique com o direito do mouse sobre o projeto, selecionando a opção Properties no menu de contexto. Diretório WEB-INF Diretório WEB-INF Diretório META-INF Diretório WEB-INF/lib DESENVOLVENDO SERVLETS Como você pôde ver, o NetBeans criou na conclusão do projeto, um arquivo JSP (JavaServer Pages). O que você vai fazer agora é um Servlet, que receberá de um formulário vindo deste arquivo criado na conclusão do projeto, para imprimir um determinado valor, que no seu caso, será seu nome. Vá ao menu File e clique em New File. Alternativamente você pode clicar com o direito do mouse e selecionar, no menu de contexto, em New, o item em Servlet. Caso Servlet não esteja aparecendo, clique em New File. O atalho para um novo arquivo é Ctrl + N.

55 55 Na caixa de diálogo New File selecione em Categories o item Web e em File Types o item Servlet. Clique no botão Next para prosseguir. Figura 22: Criando um Servlet Na segunda etapa do assistente, em New Servlet, digite MeuPrimeiroServlet em Class Name. Toda classe Java, assim como Servlets, devem ter um pacote. Como você ainda não fez nenhum pacote, digite em Package o nome do seu pacote. Caso queira seguir o livro, seria br.com.integrator. Perceba que o assistente lhe mostra a localização da classe Servlet que será gerada, em Source Packages, bem como onde será criado, em Created File. Clique no botão Next para a terceira e última etapa deste assistente.

56 56 Figura 23: Definindo um nome e um pacote para o servletcriando um Servlet Na última etapa, mantenha como está. Esta etapa existe para que você possa con- figurar o caminho do seu Servlet na chamada pela URL através de URL Pattern(s). Se você possui alguma experiência com aplicações Web construídas em Java, sabe que isto pode ser mudado, assim como o seu Name. Estas informações deverão ser gravadas no deployment descriptor (Add information to deployment descriptor), portanto, mantenha esta opção selecionada. Clique no botão Finish para completar o assistente. Figura 24: Última etapa para a criação do Servlet

57 57 Perceba que o NetBeans criou para você um arquivo, baseado em seu template, com parte do desenvolvimento de um Servlet. Vamos alterá-lo para que você o veja funcionando e então explicarei melhor como tudo funciona. No Servlet pré-construído, altere seguir, em destaque: como mostrado na Listagem a protected void processrequest(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { String nome = request.getparameter( nome ); response.setcontenttype( text/html;charset=iso ); PrintWriter out = response.getwriter( ); // /* TODO output your page here out.println( <html> ); out.println( <head> ); out.println( <title>meu nome é +nome+ </title> ); out.println( </head> ); out.println( <body> ); out.println( <h1>meu nome é + nome + </h1> ); out.println( </body> ); out.println( </html> ); // */ out.close( ); }... Os demais itens permanecerão exatamente como estão. No arquivo index.jsp, você irá adicionar um formulário HTML. Para fazer isso, você possui duas formas: digitando ou utilizando a janela Palette como auxiliar. Vou ensinar pela janela Palette para simplificar sua digitação.

58 58 Primeiramente, apague todo o conteúdo existente por entre as tags HTML <body>... </body>. Mantenha o cursor por entre estas tags. Vá a janela Palette e dê um duplo clique em Form, na categoria HTML Forms. Alternativamente você pode arrastar desta janela para o Editor, por entre as tags HTML mencionadas. Figura 25: O item form selecionado Na caixa de diálogo Insert Form digite em Action o nome do seu Servlet, que no caso é MeuPrimeiroServlet. Selecione em Method o método POST de envio de dados e em Name você pode dar um nome ao seu formulário, alternativamente. Confirme a caixa de diálogo clicando no botão OK.

59 59 Figura 26: A caixa de diálogo insert form com as configurações preenchidas Perceba que o NetBeans construiu o formulário, através das tags HTML <form /> no seu código, por entre as tags <body />. Coloque seu cursor por entre as tags <form>... </form>. Novamente na janela Palette, na categoria HTML Forms, dê um duplo clique no componente Text Input. Figura 27: Componente text input selecionado Na caixa de diálogo Insert Text Input digite nome em Name. Mantenha text selecionado em Type e coloque 25 para a largura da sua caixa de texto, em Width. Confirme a caixa de diálogo clicando no botão OK.

60 60 Figura 28: Caixa de diálogo insert text input com o campo nome configurado Resta agora apenas adicionar um botão de envio (submissão) do formulário. Vá à janela Palette novamente, e dê um duplo clique no componente Button, ainda na categoria HTML Forms. Figura 29: Componente Button em destaque Na caixa de diálogo Insert Button digite Enviar em Label e mantenha se- lecionada a opção submit em Type. Dê um nome ao seu botão em Name e confirme a caixa de diálogo no botão OK.

61 61 Figura 30: Botão enviar configurado na caixa de diálogo insert button Neste ponto, o NetBeans deve ter criado todo o código necessário do formulário HTML para enviar seu nome ao Servlet desenvolvido. Com o formulário construído e o Servlet alterado, vamos compilar e rodar a apli- cação criada, de uma só vez. Para compilar e rodar, você tem mais do que duas formas, na qual você pode escolher entre: 1. Clique no menu Run e selecione Run Main Project. Figura 31: Run main Project do menu run 2. Com o botão direito do mouse sobre o projeto, na janela Projects selecione no menu de contexto o item Run. Este modo de rodar seu projeto também é muito usado quando queremos um projeto que não seja o padrão do compi- lador e executor.

62 62 Figura 32: Detalhe da seleção run do menu de context na janela projects 3. A terceira forma é clicando sobre o botão Run Main Project, na barra de ferramentas Build. Figura 33: Botão run main Project pressionado na barra de ferramentas build 4. A quarta forma se encontra no atalho F6, que pode ser visto no menu Run quando você o abre, em Run Main Project. Ao começar a rodar a sua aplicação, note a janela Output que surgiu logo abaixo de sua IDE, acima da barra de status. Ela contém três janelas. A primeira é a exibi- ção da compilação da sua aplicação Java (ferramenta Ant), a segunda é o Java DB Database Process, que exibe a inicialização do banco de dados derby, embutido a IDE. O log do servidor de aplicações ou Container Servlet é a terceira a janela, contendo no caso o nome GlassFish 3, juntamente com botões de controle. Veremos isto com detalhes mais adiante.

63 63 Figura 34: Saídas encontradas na execução de uma aplicação O navegador abrirá. O NetBeans usa o navegador padrão do seu sistema opera- cional para abrir a página principal, no caso o index.jsp primeiramente. No for- mulário, digite seu nome e clique no botão Enviar. O Servlet criado no exemplo, receberá esta informação e a imprimirá na tela, gerando um HTML.

64 64 Figura 35: Formulário de envio e o resultado impresso pelo servlet após receber os dados EXERCÍCIOS 1) Quais são as 5 fases do ciclo de vida de uma Servlet? 2) Quais são os métodos associados a cada fase do ciclo de vida de uma Servlet? 3) Por que o código colocado no método service de uma Servlet precisa ser thread-safe?

65 65 4) Quando uma Servlet é destruída? 5) Quantas vezes o código colocado dentro do método init() do Servlet pode ser chamado? E o código dentro do método service()? 6) Caso a Servlet estenda a classe HttpServlet, quais métodos adicionais poderemos implementar para produzir a funcionalidade necessária? 7) Crie uma Servlet chamado SOMATORIO que irá recuperar 2 números dados pelo usuário, adicione- os, e gere o resultado. 8) Crie uma Servlet chamado CarrinhodeCompras que irá recuperar as seleções feitas pelo usuário, adicionar os seus valores, e retornar o resultado computado para o usuário. RESUMO DA AULA A tecnologia Servlets são a solução Java para a produção de conteúdo dinâmico para a WEB em resposta a tecnologia CGI. Servlets possui várias vantagens sobre CGI, incluindo uma reduzida na área de ocupação de memória e menos despesa para cada solicitação. Uma Servlet está completamente administrada pelo seu contêiner. O único código necessário para os desenvolvedores é a funcionalidade da implementação. Para criar Servlets, os desenvolvedores devem criar subdivisões de classe de HttpServlet e seus lugares de implementações funcionais em quaisquer dos métodos, doget ou dopost. Detalhes de pedido podem ser recuperados por HttpServletRequest, e métodos geradores de resposta podem ser acessados por HttpServletResponse. Estes são passados como parâmetros para doget e dopost. NA PRÓXIMA AULA Veremos com desenvolver sistemas web utilizando a tecnologia JSP.

66 JavaServer Pages JSP Aula 3 66 Meta da Aula Demonstrar as operações básicas com registros de bancos de dados utilizando a api jdbc e a tecnologia JSP. Objetivos Ao final desta aula, você deverá ser capaz de: 1. Ter uma visão geral sobre páginas JSP; 2. Conhecer o ciclo de vida de páginas JSP; 3. Compreender a sintaxe e a semântica das páginas JSP; 4. Desenvolver aplicações web utilizando a tecnologia JSP.

67 INTRODUÇÃO AO JAVASERVER PAGES. C Enquanto que desenvolver um Servlet, você tem que inserir muitos códigos Java, a parte de layout da página fica a cargo do Web Designer, no qual trabalha com imagens, cores e outros elementos visuais existentes em um web site. Graças a esse problema, a equipe da Sun desenvolveu uma tecnologia baseada em Servlets chamada de JavaServer Pages (JSP). JavaServer Pages são páginas HTML embebidas em código Java. Dessa forma a página dinâmica é gerada pelo código JSP. A primeira vez que uma página JSP é carregada pelo container JSP, o código Java é compilado gerando um Servlet que é executado. As chamadas subseqüentes são enviadas diretamente ao Servlet, não havendo mais a recompilação do código Java. A estrutura do JavaServer Pages Como o JavaServer Pages são códigos Java embebidos em páginas HTML, você pode definir o local que deseja colocar seu código. Dentro do arquivo, você insere elementos pertencentes ao JSP, seguindo a sintaxe: Figura 36: Código Index.jsp

68 68 O arquivo index.jsp, diferente do Servlet, não fica dentro do diretório classes, em WEB-INF, mas sim diretamente na raiz da sua aplicação. Observe também que o arquivo, embora contenha códigos HTML, tem a extensão modificada para.jsp. Para escrever código Java em sua página basta colocá-lo entre as tags <% e %>. Esse código é chamado de scriplet. Scriplet é o código escrito entre <% e %>, nome composto da palavra script (linguagem de script) com o sufixo let, que indica pequeno. 1 - Existem variáveis já implícitas no jsp, onde todo arquivo jsp já possui uma variável chamada out (do tipo JspWriter) que permite imprimir objetos através do método write, print ou println: <% out.write(s); %> Preciso compilar uma página JavaServer Pages? Uma das grandes vantagens de desenvolver em JavaServer Pages é que você não precisa compilar seu código. Você cria a página e a coloca pra rodar no Servlet Container. Caso precise alterar, altere e pronto. JavaServer Pages são Servlets? O JSP é um arquivo de script interpretado inicialmente e depois compilado em um Servlet. O arquivo é pré-compilado numa classe Java quando acontecer o primeiro chamado desse arquivo. Você pode visualizar o Java criado, assim como o compilado no Tomcat em: $CATALINA_HOME/work/Catalina/localhost/SiteJSP/org/apache/jsp Como o Servlet Container saberá que alterei o arquivo?

69 69 O compilador verifica a data de alteração do arquivo que contém a página JSP e caso essa data se modifique, o processo de compilação é executado novamente para garantir que as alterações feitas na página sejam visíveis para os usuários da aplicação. Devido a todo esse processo de compilação / recompilação, após a modificação, assim como na criação, de uma página JSP, é sempre mais lento que os acessos seguintes. Por trás de uma página JSP existe um Servlet especial, chamado Page Compiler, que intercepta requisições direcionadas a recursos com extensão.jsp. O ciclo de vida O fato de uma página JSP ser convertida para um Servlet faz com que ela tenha o mesmo ciclo de vida apresentado pelo Servlet, onde existe a inicialização, a requisição, e finalmente a finalização. Não existem métodos equivalentes ao doget e dopost de um Servlet para o atendimento as requisições, já que o próprio conteúdo da página contém o código a ser executado e retornado para o browser a cada chamada. Por outro lado, existem os métodos jspinit( ) e jspdestroy( ) que possibilitam a implementação de códigos de inicialização e finalização, respectivamente, da página JSP. A estrutura do JavaServer Pages Em páginas dinâmicas escritas em JSP você tem as tags de abertura <% e fechamento %>, como já dito anteriormente, para se adicionar o comando desejado. As tags mais comuns são: Comentários: <%-- esse é um comentário em JSP --%> e

70 70 <% /* esse comentário tem mais de uma linha */ %> Declaração de atributos ou métodos: <%! %> Expressão de um resultado: <%= %> Tags Personalizadas: taglib %> Diretivas Diretivas são usadas para fornecer informações especiais ditas ao container sobre a página JSP quando esta é compilada para Servlet. Você tem três tipos de diretivas principais: page: permite importação de classes, customização de super classes servlet entre outras; include: permite que um conteúdo seja inserido de um arquivo no servlet. taglib: permite que o ambiente JSP importe uma determinada biblioteca de tags. Para cada um desses tipos de diretivas, existem conjuntos de atributos específicos utilizados para parametrizar a diretiva. Diretiva page Conforme o próprio nome indica, a diretiva page serve para se definir diretivas da página. A diretiva page tem a seguinte sintaxe: <%@ page %> Os atributos mais usados são: language="java" Especifica a linguagem que está sendo usada.

71 71 extends="pacote.classe" Define se a super classe do servlet por herança. import="pacote.classe.*" Pacote que deve ser importado. session="true false" Permite ou não variáveis de sessão. buffer="none 10kb" Tamanho do buffer em KB para o JspWriter out. O buffer padrão é definido pelo servidor. info="mensagem" - Define uma string que pode ser recuperada pelo método getservletinfo( ). Com esse atributo o desenvolvedor pode adicionar uma documentação à página que resume sua funcionalidade. errorpage="erro.jsp" Define a página de erro no qual será desviado caso isso ocorra. iserrorpage="true false" Define se é uma página de controle de erro. contenttype="text/html" Informações sobe a página, o MIME type do documento. pageencoding="iso " Define o conjunto de caracteres para a página JSP. autoflush="true false" - O valor true (padrão) indica se o buffer deve ser esvaziado quando estive cheio. Em false, indica que uma exceção deve ser mostrada quando ocorrer overflows. Usando a diretiva page A página JSP a seguir demonstra alguns atributos da diretiva page:

72 72 Figura 37: Código data.jsp 1 - Você pode notar que no início da sua página JSP existe a diretiva page com vários atributos, discutidos no início desse tópico. O mais importante nesse ponto é compreender a simplicidade perto do desenvolvimento usando Servlets. 2 - Utilização da classe SimpleDateFormat. 3 - Como resultado da diretiva page em conjunto com o atributo import você pode manipular a data do servidor e formatá-la, dando como resultado o visto na imagem a seguir: Figura 38: Página retornada utilizando a diretiva page

73 73 Diretiva Include A diretiva include permite que sejam incluídos arquivos na hora em que a página JSP é compilada em servlet. Sua sintaxe é similar a: <%@ include file="topo.html" %> Para exemplificar essa diretiva, você irá criar três páginas: usandodiretivaimport.jsp, cabecalho.html e rodape.html. cabecalho.html <h1 style="color:red; background-color:#eeeeee">esse é o cabeçalho </h1> rodape.html <strong>esse texto faz parte do rodapé</strong> A única página dinâmica no caso, ou seja, feita em JSP é o usandodiretivaimport.jsp: Figura 39: Código usandodiretivaimport.jsp

74 74 Figura 40: Página exibida A vantagem de utilizar essa diretiva está no fato de que você pode manter conteúdo estático ou dinâmico comum a diversas páginas JSP em arquivos separados, incluídos, através dessa diretiva, conforme a necessidade. Sendo assim, um menu, cabeçalho, rodapé e outras situações que podem se repetir ao longo de diversas páginas no site podem ser inclusos, não necessitando de ser refeito a cada nova página e, auxiliando assim, na administração do conteúdo. O uso de expressões Em algumas páginas JSP construídas até agora utilizamos um elemento dinâmico chamado de expressão, e esse elemento serve para imprimir o resultado na página do usuário Web, convertendo o valor em uma String. <%= expressão %> Note que a expressão contém um sinal de igual = e não termina com ponto-e-vírgula. 3.2 TRABALHANDO COM BANCO DE DADOS Trabalhar com banco de dados em aplicações Web é a coisa mais comum no desenvolvimento. Esse tópico tratará do uso de banco de dados em aplicações Web com Servlets e páginas JSP.

75 75 Existem atualmente dezenas de bancos de dados no mercado. Os mais populares são o Oracle, MySQL, SQL Server, PostgreSQL, DB2, Interbase, Firebird. Todos eles são baseados no conceito relacional de dados. Introdução ao JDBC JDBC é uma API incluída dentro da linguagem Java para o acesso a banco de dados. Consiste em um conjunto de classes e interfaces escritas em Java que oferecem uma completa API para a programação com banco de dados, por tanto é uma solução 100% Java. JDBC é uma especificação formada por uma coleção de interfaces e classes abstratas, que devem implementar todos os fabricantes de drivers que queiram realizar uma implementação de seu driver 100% Java e compatível com JDBC. Devido ao JDBC ser escrito completamente em Java também passa a ter a vantagem de ser independente de plataforma. Sendo assim, não será necessário escrever um programa para cada tipo de banco de dados, uma mesma aplicação escrita utilizando JDBC poderá trabalhar com banco de dados como Oracle, Sybase, SQL Server, MySQL, Firebird, PostgreSQL e etc. Para que isso aconteça, basta alterar o JDBC referente ao banco de dados usado e o seu sistema passará a se comunicar com o banco de dados configurado. MySQL e o JDBC Sendo um dos sistemas de gerenciamento de bancos de dados mais usados do mundo, sua velocidade e capacidade de ser multiplataforma só poderiam chamar a atenção de quem desenvolve em Java.O driver JDBC escolhido para fazer os exemplos neste material foi o Connector/J. Usando o driver Connector/J, todos os tipos de aplicações de Java podem acessar um banco de dados e seus dados, desde que seja em MySQL é claro.

76 76 Para proseguir os estudos é necessário que o mysql esteja instalado em sua máquina. Vamos criar um banco de dados de uma livraria como exemplo. Segue o script: CREATE DATABASE livraria; USE livraria; CREATE TABLE livros( isbn CHAR(13) NOT NULL PRIMARY KEY, titulo VARCHAR(50), edicao_num TINYINT(2), ano_publicacao YEAR, descricao TEXT); Instalando o driver JDBC O arquivo que será adicionado, o ajudará a se conectar ao banco de dados MySQL. Esse arquivo JAR é o driver JDBC chamado de Connector/J, que você poderá baixar no site No momento em que escrevo, o driver que estou utilizando é o mysqlconnector-java bin.jar. O arquivo pode ser baixado em formato.zip ou formato.tar.gz. Após baixar, descompacte e coloque o arquivo citado anteriormente no diretório lib do seu projeto. O pacote java.sql Este pacote contém as classes core e interfaces que são necessárias para lidar com o bancos de dados. Esses elementos relacionam as tarefas como as mostradas a seguir: Fazer uma conexão ao banco de dados pelo DriverManager;

77 77 Enviar declarações SQL para um banco de dados, inclusive elementos como Statement, PreparedStatement e Connection; Lidar com respostas e atualizações via ResultSet; Mapeamento padrão de tipos SQL para classes e interfaces na linguagem Java, inclusive elementos como Array, Blob, Clob, Date, Time e Timestamp, Obter metadados de um banco de dados por DatabaseMetaData, colunas em um ResultSet via ResultSetMetaData Lidar com exceções tal como o SQLException. O javax.sql Este pacote contém as classes e interfaces que são usadas pelo acesso de lado servidor de fonte de dados. A principal inclusão como parte de javax.sql é o DataSource que possibilita uma alternativa para DriverManager. Também inclui coisas como pool de conexões, transações distribuídas, e a implementação de RowSet. O acesso ao banco de dados e a conexão JDBC A tabela a seguir descreve algumas das classes mais comuns e interfaces usadas para conexões de banco de dados e a execução de querys no banco de dados.

78 78 Os tipos de dados no Java e na SQL Não é novidade alguma dizer que a linguagem Java é diferente da linguagem SQL, tanto em suas estruturas como em tipo de dados. Evidentemente isso não é um problema, uma vez que você pode desenvolver classes Java que usam comandos SQL, podendo traduzir de um modelo para o outro. Para que isso seja possível, você precisa mapear os tipos de dados do Java para os tipos de dados da SQL. A tabela a seguir mostra os tipos de objeto Java e seus similares no tipo JDBC:

79 79 Para ajudá-lo a compreender o mapeamento no uso do banco de dados MySQL, o método ResultSet.getObject( ) usa as conversões de tipo entre MySQL e tipos Java, seguindo a especificação de JDBC onde apropriado. O valor devolvido por ResultSetMetaData.GetColumnClassName( ) também é mostrado a seguir:

80 80 Desenvolvendo via JDBC Os exemplos mostrados a seguir demonstram o trabalho de páginas JSP usando a API JDBC. Embora essa prática de desenvolvimento não seja recomendada nos dias atuais, é importante que você, como desenvolvedor iniciante, aprenda como utilizá-la. Conectando sua página JSP ao banco de dados Para que você entenda como funciona a conexão e a leitura de dados de um banco de dados, a página JSP a seguir demonstra de forma simples como trabalhar com o MySQL. <%@ page language="java" contenttype="text/html" pageencoding="iso " import="java.sql.*" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " <html xmlns=" <head> <meta http-equiv="content-type" content="text/html; charset=iso " /> <title>trabalhando com Banco de dados usando JDBC e JSP</title> </head>

81 <body> <table border="1"> <thead> <tr> <th>isbn</th><th>título</th> </tr> </thead> <tbody> <% Connection conn = null; Statement st = null; ResultSet rs = null; try { Class.forName("com.mysql.jdbc.Driver").newInstance(); conn = DriverManager.getConnection("jdbc:mysql://localhost/livrari a", "francieric","senha"); st = conn.createstatement(); rs = st.executequery("select isbn, titulo from livros"); while(rs.next()) { %> <tr> <td><%= rs.getstring("isbn") %></td> <td><%= rs.getstring("titulo") %></td> </tr> <% } //end while } catch (Exception ex) { ex.printstacktrace(); } finally { if (rs!= null) rs.close(); if (st!= null) st.close(); if (conn!= null) conn.close(); } %> </tbody> </table> </body> </html> Dentro do bloco try...catch você define o trabalho com o banco de dados para se conectar e executar a instrução SQL. Ao importar o pacote java.sql.*, através da diretiva page, você tem acesso as classes e interfaces para manipular os bancos de dados relacionais em Java. O driver de banco de dados deve ser empregado antes do programa se conectar ao banco de dados. A linha anterior utiliza o método static forname da classe Class (pacote java.lang) para carregar a definição de classe para o driver de banco de dados. 81

82 82 Se a classe não for localizada, ele dispara uma exceção: java.lang.classnotfoundexception. Um objeto Connection gerencia a conexão entre o programa Java e o banco de dados. Ele também fornece suporte ao programa para executar instruções SQL. Através do método static getconnection, a classe DriverManager tenta uma conexão com o banco de dados especificado pela string: jdbc:mysql://localhost/livraria. Os argumentos seguintes são o nome de usuário e a senha, demonstrados pela String francieric e senha respectivamente. Caso a classe DriverManager não conseguir se conectar ao banco de dados, o método getconnection dispara uma exceção: A responsabilidade principal da interface Statement é executar sentenças SQL no banco de dados. Com o método público createstatement você cria um objeto Statement para enviar declarações SQL ao banco de dados. Se houver um erro, dispara também a exceção java.sql.sqlexception. Com o método executequery, você tem o retorno de um objeto que implementa ResultSet e que contém os resultados da consulta. Através de um loop while você varre os resultados encontrados, onde o método next( ), de ResultSet, retorna um valor booleano true, quando o resultado das linhas pesquisadas na query forem exauridas. O método getstring( ) %, de ResultSet, traz o valor da coluna designada na fila atual deste ResultSet como uma String na linguagem Java. Depois de consumidos, os recursos devem ser retornados ao servidor, utilizando o método close( ) &.

83 Nesse caso a cláusula usada é finally, que liberará os recursos, caso os resultados sejam bem sucedidos ou não. 83 Inserindo dados O exemplo que será feito agora irá ilustrar a inserção de dados no banco de dados. Você terá em uma página HTML comum um formulário contendo os campos necessários para inserir. Esse formulário irá enviar os dados, via método POST, para uma outra página, no caso JSP, que recuperará esses dados e os enviará para o banco de dados MySQL. Como você está usando a tabela livros, será baseado nessa tabela esse exemplo. forminserindodados.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " <html xmlns=" <head> <meta http-equiv="content-type" content="text/html; charset=iso " /> <title>inserindo dados via JDBC com JSP</title> </head> <body> <form action="inserindodados.jsp" method="post"> <table> <tr>

84 84 <td>isbn:</td><td><input type="text" name="isbn" /></td> </tr> <tr> <td>título:</td><td><input type="text" name="titulo" /></td> </tr> <tr> <td>edição:</td><td><input type="text" name="edicao" /></td> </tr> <tr> <td>publicação:</td><td><input type="text" name="publicacao" /></td> </tr> <tr> <td>descrição:</td> <td><textarea name="descricao" rows="5" cols="25"></textarea></td> </tr> <tr> <td colspan="2"> <input type="submit" name="btcadastrar" value="enviar" /> </td> </tr> </table> </form> </body> </html> Figura 41: Página exibida

85 A página JSP que irá receber esses valores é mostrada a seguir: inserindodados.jsp <%@ page language="java" contenttype="text/html; " pageencoding="iso " import="java.sql.*" %> <% String isbn = request.getparameter("isbn"); String titulo = request.getparameter("titulo"); String edicao = request.getparameter("edicao"); String publicacao = request.getparameter("publicacao"); String descricao = request.getparameter("descricao"); Connection conn = null; PreparedStatement pst = null; try { Class.forName("com.mysql.jdbc.Driver").newInstance(); conn = DriverManager.getConnection("jdbc:mysql://localhost/livrari a", "edson","integrator"); String SQL = "INSERT INTO livros (isbn, titulo, edicao_num, " + "ano_publicacao, descricao) " + "values (?,?,?,?,?)"; pst = conn.preparestatement(sql); pst.setstring(1, isbn); pst.setstring(2, titulo); pst.setint(3, Integer.parseInt(edicao)); pst.setstring(4, publicacao); pst.setstring(5, descricao); pst.executeupdate(); pst.clearparameters(); } catch (Exception ex) { ex.printstacktrace(); } finally { if (pst!= null) pst.close(); if (conn!= null) conn.close(); } %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " <html xmlns=" <head> <meta http-equiv="content-type" content="text/html; charset=iso " /> <title>dados recebidos</title> </head> <body> O ISBN <strong><%=isbn %></strong> foi inserido com sucesso! </body> </html> 85

86 86 A interface PreparedStatement tem um papel semelhante a interface Statement, o que nos permite executar sentenças SQL sobre uma conexão estabelecida com um banco de dados. Porém, neste caso,você utiliza sentenças mais especializadas, como a de inserir dados, onde você pode receber vários parâmetros como entrada. Um parâmetro de entrada é aquele cujo valor não se especifica quando a sentença é criada. No seu lugar a sentença recebe um sinal de interrogação (?) para cada parâmetro de entrada. Antes de executar a sentença, você deve especificar um valor para cada parâmetro, através dos métodos set apropriados. Para criar um objeto PreparedStatement você deve lançar um método preparestatement(string s) da interface Connection sobre o objeto que representa a conexão estabelecida com o banco de dados. Através do método setstring(int i, String s), você prepara os dados que estão vindo dos campos do seu aplicativo para inserir no banco de dados. Como você mesmo já concluiu, o tipo string foi utilizado graças ao tipo existente no banco de dados. O método setint(int i, int i) faz o mesmo que o anterior, mas exige um valor inteiro. Com o método executeupdate( ) você executa a sentença SQL para o tipo, que no caso é de inserção (INSERT). Esse método também serve para os atualizações (UPDATE) e exclusões (DELETE). Após utilizar os métodos setter, você pode limpá-los usando o método clearparameters( ). Entendendo os principais Statements Como você viu, Statements são essenciais para se comunicar com uma base de dados que usa a linguagem SQL. Há três

87 87 principais tipos de Statements. O primeiro é a interface Statement. Quando são criados objetos pela implementação da interface Statements, estes são geralmente usados para executar declarações SQL genéricas que não levam qualquer parâmetro. O segundo tipo é o PreparedStatement que herda da interface Statement. Objetos PreparedStatement são úteis quando você precisar criar e compilar declarações SQL antes do tempo. Objetos PreparedStatement também aceitam parâmetros IN. O tipo final de statement é o CallableStatement. O CallableStatement herda de PreparedStatement e aceita parâmetros IN e OUT. Seu propósito principal é executar procedimentos armazenados de banco de dados. Explorando a interface PreparedStatement Se você precisar executar declarações SQL muitas vezes, o PreparedStatement é a escolha perfeita para essa tarefa, isso porque aumenta a eficiência e desempenho do programa. O PreparedStatement é a escolha lógica do nome para a interface porque contém uma declaração SQL que previamente foi compilada e enviada ao DBMS de sua escolha, por isso o termo prepared. O PreparedStatement dá o desenvolvedor que a habilidade de embutir parâmetros na declaração SQL contidos no objeto PreparedStatement. Estes parâmetros IN (de entrada) são denotadas na declaração SQL pelo símbolo de interrogação (?). A tabela a seguir mostra os métodos setters que indicam os tipos para PreparedStatement:

88 88 EXERCÍCIOS 1) Considere a seguinte classe: public class Cliente { private String Nome; private String Endereco; private int Cpf; // métodos getter and setter aqui. } Crie uma pagina JSP que faça o seguinte: a) Retorne uma instância de Cliente usando as ações JSP. b) Mostre detalhes contidos na instância. detalhes devem ser mostrados usando ações JSP. 2) Usando a mesma classe do exercício anterior crie outra página que mostre os mesmo detalhes. Desta vez, faça uso de banco de dados.

Java para Desenvolvimento Web

Java para Desenvolvimento Web Java para Desenvolvimento Web Servlets A tecnologia Servlet foi introduzida pela Sun Microsystems em 1996, aprimorando e estendendo a funcionalidade e capacidade de servidores Web. Servlets é uma API para

Leia mais

INTRODUÇÃO À TECNOLOGIA SERVLETS

INTRODUÇÃO À TECNOLOGIA SERVLETS PROGRAMAÇÃO SERVIDOR EM SISTEMAS WEB INTRODUÇÃO À TECNOLOGIA SERVLETS Prof. Dr. Daniel Caetano 2012-1 Objetivos Apresentar o conceito aplicações orientada a serviços via web Apresentar o papel dos contentores

Leia mais

Aula 03 - Projeto Java Web

Aula 03 - Projeto Java Web Aula 03 - Projeto Java Web Para criação de um projeto java web, vá em File/New. Escolha o projeto: Em seguida, na caixa Categorias selecione Java Web. Feito isso, na caixa à direita selecione Aplicação

Leia mais

Scriptlets e Formulários

Scriptlets e Formulários 2 Scriptlets e Formulários Prof. Autor: Daniel Morais dos Reis e-tec Brasil Programação Avançada Para Web Página1 Meta Permitir ao aluno aprender a criar um novo projeto Java para web no Netbeans IDE,

Leia mais

Java para WEB. Servlets

Java para WEB. Servlets Servlets Servlets são classes Java que são instanciadas e executadas em associação com servidores Web, atendendo requisições realizadas por meio do protocolo HTTP. Servlets é a segunda forma que veremos

Leia mais

Java II. Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com

Java II. Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com Java II Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com Servlets Servlet Aplicação Java que é executada no servidor que estende a capacidade do servidor Web Alternativa Java para os scripts CGI Gerenciado

Leia mais

Java na WEB Servlet. Sumário

Java na WEB Servlet. Sumário 1 Java na WEB Servlet Objetivo: Ao final da aula o aluno será capaz de: Utilizar Servlets para gerar páginas web dinâmicas. Utilizar Servlets para selecionar páginas JSPs. Utilizar Servlets como elemento

Leia mais

Curso de Java. Geração de Páginas WEB. TodososdireitosreservadosKlais

Curso de Java. Geração de Páginas WEB. TodososdireitosreservadosKlais Curso de Java Geração de Páginas WEB Aplicação WEB Numa aplicação WEB de conteúdo dinâmico As páginas são construídas a partir de dados da aplicação (mantidos num banco de dados). Usuários interagem com

Leia mais

Sistemas Distribuídos na WEB (Plataformas para Aplicações Distribuídas)

Sistemas Distribuídos na WEB (Plataformas para Aplicações Distribuídas) Sistemas Distribuídos na WEB (Plataformas para Aplicações Distribuídas) Web Container: e JSP Sumário Protocolo HTTP Exemplos de JSP (Java Server Pages) Exemplos JSP 2 Protocolo HTTP URL: Um URL (Uniform

Leia mais

Associação Carioca de Ensino Superior Centro Universitário Carioca

Associação Carioca de Ensino Superior Centro Universitário Carioca Desenvolvimento de Aplicações Web Lista de Exercícios Métodos HTTP 1. No tocante ao protocolo de transferência de hipertexto (HTTP), esse protocolo da categoria "solicitação e resposta" possui três métodos

Leia mais

Use a Cabeça! FREEMAN, Eric e Elisabeth. HTML com CSS e XHTML BASHMAN, Brian / SIERRA Kathy / BATES, Bert. Servlets & JSP

Use a Cabeça! FREEMAN, Eric e Elisabeth. HTML com CSS e XHTML BASHMAN, Brian / SIERRA Kathy / BATES, Bert. Servlets & JSP Use a Cabeça! FREEMAN, Eric e Elisabeth. HTML com CSS e XHTML BASHMAN, Brian / SIERRA Kathy / BATES, Bert. Servlets & JSP Software cliente: browser e outros Protocolo HTTP Infraestrutura de transporte

Leia mais

Desenvolvimento Web TCC-00.226 Turma A-1

Desenvolvimento Web TCC-00.226 Turma A-1 Desenvolvimento Web TCC-00.226 Turma A-1 Conteúdo Arquitetura de Aplicações Distribuídas na Web Professor Leandro Augusto Frata Fernandes laffernandes@ic.uff.br Material disponível em http://www.ic.uff.br/~laffernandes/teaching/2013.2/tcc-00.226

Leia mais

Prática em Laboratório N.02 Criando um serviço Web via NetBeans

Prática em Laboratório N.02 Criando um serviço Web via NetBeans Prática em Laboratório N.02 Criando um serviço Web via NetBeans O objetivo deste exercício é criar um projeto apropriado para desenvolver um contêiner que você resolva utilizar. Uma vez criado o projeto,

Leia mais

1. Introdução pág.3 2. Apresentação do sistema Joomla! pág.4 3. Acessando a administração do site pág.4 4. Artigos 4.1. Criando um Artigo 4.2.

1. Introdução pág.3 2. Apresentação do sistema Joomla! pág.4 3. Acessando a administração do site pág.4 4. Artigos 4.1. Criando um Artigo 4.2. 1. Introdução pág.3 2. Apresentação do sistema Joomla! pág.4 3. Acessando a administração do site pág.4 4. Artigos 4.1. Criando um Artigo 4.2. Editando um Artigo 4.3. Excluindo um Artigo 4.4. Publicar

Leia mais

PadrãoIX. Módulo II JAVA. Marcio de Carvalho Victorino. Servlets A,L,F,M

PadrãoIX. Módulo II JAVA. Marcio de Carvalho Victorino. Servlets A,L,F,M JAVA Marcio de Carvalho Victorino 1 Servlets 2 1 Plataforma WEB Baseada em HTTP (RFC 2068): Protocolo simples de transferência de arquivos Sem estado (não mantém sessão aberta) Funcionamento (simplificado):

Leia mais

Bem- Vindo ao manual de instruções do ECO Editor de COnteúdo.

Bem- Vindo ao manual de instruções do ECO Editor de COnteúdo. Manual de Instruções ECO Editor de Conteúdo Bem- Vindo ao manual de instruções do ECO Editor de COnteúdo. O ECO é um sistema amigável e intui?vo, mas abaixo você pode?rar eventuais dúvidas e aproveitar

Leia mais

Prática Sobre Servlets e JSP

Prática Sobre Servlets e JSP 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

Leia mais

Aula 4. Objetivos. Conteúdo dinâmico na internet.

Aula 4. Objetivos. Conteúdo dinâmico na internet. Aula 4 Objetivos Conteúdo dinâmico na internet. Para uma solicitação da Web mais simples, um navegador solicita um documento HTML e o servidor Web encontra o arquivo correspondente e devolve. Se o documento

Leia mais

Na tela dele, clique no sinal de + ao lado do nome do seu computador, para expandi-lo. A seguir, expanda também o item "Sites da web".

Na tela dele, clique no sinal de + ao lado do nome do seu computador, para expandi-lo. A seguir, expanda também o item Sites da web. Servidor WEB Desenvolvedores de sites que querem aprender ou testar ASP, ou mesmo profissionais que precisam desenvolver páginas ASP ou ASP.Net, não precisam necessariamente ter um servidor na web com

Leia mais

Web Browser como o processo cliente. Servidor web com páginas estáticas Vs. Aplicações dinâmicas para a Web:

Web Browser como o processo cliente. Servidor web com páginas estáticas Vs. Aplicações dinâmicas para a Web: Web Browser como o processo cliente Servidor web com páginas estáticas Vs Aplicações dinâmicas para a Web: 1 Cliente Web browser HTTP porto 80 Servidor web... JDBC RMI XML... Base de Dados Aplicação em

Leia mais

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões Prof. MSc. Hugo Souza Se você precisar manter informações sobre seus usuários enquanto eles navegam pelo seu site, ou até quando eles saem

Leia mais

Programando em PHP. Conceitos Básicos

Programando em PHP. Conceitos Básicos Programando em PHP www.guilhermepontes.eti.br lgapontes@gmail.com Conceitos Básicos Todo o escopo deste estudo estará voltado para a criação de sites com o uso dos diversos recursos de programação web

Leia mais

TUTORIAL: MANTENDO O BANCO DE DADOS DE SEU SITE DENTRO DO DOMÍNIO DA USP USANDO O SSH!

TUTORIAL: MANTENDO O BANCO DE DADOS DE SEU SITE DENTRO DO DOMÍNIO DA USP USANDO O SSH! UNIVERSIDADE DE SÃO PAULO (USP) ESCOLA DE ARTES, CIÊNCIAS E HUMANIDADES (EACH) TUTORIAL: MANTENDO O BANCO DE DADOS DE SEU SITE DENTRO DO DOMÍNIO DA USP USANDO O SSH! Autoria e revisão por: PET Sistemas

Leia mais

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES Alexandre Egleilton Araújo, Jaime Willian Dias Universidade Paranaense (Unipar) Paranavaí PR Brasil araujo.ale01@gmail.com, jaime@unipar.br Resumo.

Leia mais

MANUAL DE UTILIZAÇÃO

MANUAL DE UTILIZAÇÃO MANUAL DE UTILIZAÇÃO Módulo de operação Ativo Bem vindo à Vorage CRM! Nas próximas paginas apresentaremos o funcionamento da plataforma e ensinaremos como iniciar uma operação básica através do nosso sistema,

Leia mais

Desenvolvendo Websites com PHP

Desenvolvendo Websites com PHP Desenvolvendo Websites com PHP Aprenda a criar Websites dinâmicos e interativos com PHP e bancos de dados Juliano Niederauer 19 Capítulo 1 O que é o PHP? O PHP é uma das linguagens mais utilizadas na Web.

Leia mais

Instalando o Internet Information Services no Windows XP

Instalando o Internet Information Services no Windows XP Internet Information Services - IIS Se você migrou recentemente do Windows 95 ou 98 para o novo sitema operacional da Microsoft Windows XP, e utilizava antes o Personal Web Server, deve ter notado que

Leia mais

LICENCIAMENTO V14 USANDO REPRISE LICENSE MANAGER

LICENCIAMENTO V14 USANDO REPRISE LICENSE MANAGER LICENCIAMENTO V14 USANDO REPRISE LICENSE MANAGER V14 de BricsCAD vem com um novo sistema de licenciamento, com base na tecnologia de licenciamento de Reprise Software. Este novo sistema oferece um ambiente

Leia mais

Universidade da Beira Interior

Universidade da Beira Interior Universidade da Beira Interior Relatório Apresentação Java Server Pages Adolfo Peixinho nº4067 Nuno Reis nº 3955 Índice O que é uma aplicação Web?... 3 Tecnologia Java EE... 4 Ciclo de Vida de uma Aplicação

Leia mais

Follow-Up Acompanhamento Eletrônico de Processos (versão 3.0) Manual do Sistema. 1. Como acessar o sistema Requisitos mínimos e compatibilidade

Follow-Up Acompanhamento Eletrônico de Processos (versão 3.0) Manual do Sistema. 1. Como acessar o sistema Requisitos mínimos e compatibilidade do Sistema Índice Página 1. Como acessar o sistema 1.1 Requisitos mínimos e compatibilidade 03 2. Como configurar o Sistema 2.1 Painel de Controle 2.2 Informando o nome da Comissária 2.3 Escolhendo a Cor

Leia mais

Procedimentos para Reinstalação do Sisloc

Procedimentos para Reinstalação do Sisloc Procedimentos para Reinstalação do Sisloc Sumário: 1. Informações Gerais... 3 2. Criação de backups importantes... 3 3. Reinstalação do Sisloc... 4 Passo a passo... 4 4. Instalação da base de dados Sisloc...

Leia mais

MANUAL DO ANIMAIL 1.0.0.1142 Terti Software

MANUAL DO ANIMAIL 1.0.0.1142 Terti Software O Animail é um software para criar campanhas de envio de email (email Marketing). Você pode criar diversas campanhas para públicos diferenciados. Tela Principal do sistema Para melhor apresentar o sistema,

Leia mais

Parte I. Demoiselle Mail

Parte I. Demoiselle Mail Parte I. Demoiselle Mail Para o envio e recebimento de e-s em aplicativos Java, a solução mais natural é usar a API JavaMail [http:// www.oracle.com/technetwork/java/java/index.html]. Ela provê um framework

Leia mais

Desenvolvimento WEB II. Professora: Kelly de Paula Cunha

Desenvolvimento WEB II. Professora: Kelly de Paula Cunha Desenvolvimento WEB II Professora: Kelly de Paula Cunha O Java EE (Java Enterprise Edition): série de especificações detalhadas, dando uma receita de como deve ser implementado um software que utiliza

Leia mais

Vamos iniciar a nossa exploração do HTTP baixando um arquivo em HTML simples - bastante pequeno, que não contém objetos incluídos.

Vamos iniciar a nossa exploração do HTTP baixando um arquivo em HTML simples - bastante pequeno, que não contém objetos incluídos. Wireshark Lab: HTTP Versão 1.1 2005 KUROSE, J.F & ROSS, K. W. Todos os direitos reservados 2008 BATISTA, O. M. N. Tradução e adaptação para Wireshark. Tendo molhado os nossos pés com o Wireshark no laboratório

Leia mais

Manual SAGe Versão 1.2 (a partir da versão 12.08.01)

Manual SAGe Versão 1.2 (a partir da versão 12.08.01) Manual SAGe Versão 1.2 (a partir da versão 12.08.01) Submissão de Relatórios Científicos Sumário Introdução... 2 Elaboração do Relatório Científico... 3 Submissão do Relatório Científico... 14 Operação

Leia mais

Esse manual é um conjunto de perguntas e respostas para usuários(as) do Joomla! 1.5.

Esse manual é um conjunto de perguntas e respostas para usuários(as) do Joomla! 1.5. Esse manual é um conjunto de perguntas e respostas para usuários(as) do Joomla! 1.5. Ele considera que você já tem o Joomla! instalado no seu computador. Caso você queira utilizá lo em um servidor na web,

Leia mais

02 - Usando o SiteMaster - Informações importantes

02 - Usando o SiteMaster - Informações importantes 01 - Apresentação do SiteMaster - News Edition O SiteMaster foi desenvolvido para ser um sistema simples de gerenciamento de notícias, instalado em seu próprio computador e com configuração simplificada,

Leia mais

INTRODUÇÃO: 1 - Conectando na sua conta

INTRODUÇÃO: 1 - Conectando na sua conta INTRODUÇÃO: Com certeza a reação da maioria dos que lerem esse mini manual e utilizarem o servidor vão pensar: "mas porque eu tenho que usar um console se em casa eu tenho uma interface gráfica bonito

Leia mais

ECD1200 Equipamento de Consulta de Dados KIT DE DESENVOLVIMENTO

ECD1200 Equipamento de Consulta de Dados KIT DE DESENVOLVIMENTO Equipamento de Consulta de Dados KIT DE DESENVOLVIMENTO Versão do documento: 1.1 1. Introdução...3 2. Documentação...3 2.1. DOCUMENTAÇÃO DE REFERÊNCIA... 3 2.2. DESCRIÇÃO FUNCIONAL... 4 2.2.1. INTERFACE...

Leia mais

Microsoft Office Outlook Web Access ABYARAIMOVEIS.COM.BR

Microsoft Office Outlook Web Access ABYARAIMOVEIS.COM.BR Microsoft Office Outlook Web Access ABYARAIMOVEIS.COM.BR 1 Índice: 01- Acesso ao WEBMAIL 02- Enviar uma mensagem 03- Anexar um arquivo em uma mensagem 04- Ler/Abrir uma mensagem 05- Responder uma mensagem

Leia mais

Satélite. Manual de instalação e configuração. CENPECT Informática www.cenpect.com.br cenpect@cenpect.com.br

Satélite. Manual de instalação e configuração. CENPECT Informática www.cenpect.com.br cenpect@cenpect.com.br Satélite Manual de instalação e configuração CENPECT Informática www.cenpect.com.br cenpect@cenpect.com.br Índice Índice 1.Informações gerais 1.1.Sobre este manual 1.2.Visão geral do sistema 1.3.História

Leia mais

Guia Sphinx: instalação, reposição e renovação

Guia Sphinx: instalação, reposição e renovação Sphinx : software para coleta e análise de dados acadêmicos e gerenciais. Tecnologia e informação para a decisão! Copyright Sphinx Todos direitos reservados Guia Sphinx: instalação, reposição e renovação

Leia mais

Arquitetura de uma Webapp

Arquitetura de uma Webapp Arquitetura de uma Webapp Arquitetura J2EE Containers e componentes MVC: introdução Frederico Costa Guedes Pereira 2006 fredguedespereira@gmail.com Plataforma J2EE World Wide Web e a Economia da Informação

Leia mais

Introdução a Informática - 1º semestre AULA 02 Prof. André Moraes

Introdução a Informática - 1º semestre AULA 02 Prof. André Moraes Introdução a Informática - 1º semestre AULA 02 Prof. André Moraes 3 MÁQUINAS VIRTUAIS Em nossa aula anterior, fizemos uma breve introdução com uso de máquinas virtuais para emularmos um computador novo

Leia mais

FERRAMENTAS DE COLABORAÇÃO CORPORATIVA

FERRAMENTAS DE COLABORAÇÃO CORPORATIVA FERRAMENTAS DE COLABORAÇÃO CORPORATIVA Compartilhamento de Arquivos no Google Drive Sumário (Clique sobre a opção desejada para ir direto à página correspondente) Utilização do Google Grupos Introdução...

Leia mais

Programação II Programação para a Web. Christopher Burrows

Programação II Programação para a Web. Christopher Burrows Programação II Programação para a Web Christopher Burrows Apache Tomcat O Apache Tomcat é um Servlet Container desenvolvido pela Apache Software Foundation. Implementa as tecnologias Java Servlets e Java

Leia mais

Servlets e Applets, funcionamento e comparativo.

Servlets e Applets, funcionamento e comparativo. Servlets e Applets, funcionamento e comparativo. Airon Rabel Teixeira Rua Guarapuava Joinville SC airon@ymail.com Resumo: Este artigo explica de maneira breve o funcionamento de servlets e applets, mostrando

Leia mais

Prática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva

Prática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva 1. O que são Serviços Web (Web Services)? Prática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva A ideia central dos Web Services parte da antiga necessidade

Leia mais

Sumário INTRODUÇÃO... 3. 1. Acesso ao Ambiente do Aluno... 4. 2. Ferramentas e Configurações... 5. 2.1 Ver Perfil... 5. 2.2 Modificar Perfil...

Sumário INTRODUÇÃO... 3. 1. Acesso ao Ambiente do Aluno... 4. 2. Ferramentas e Configurações... 5. 2.1 Ver Perfil... 5. 2.2 Modificar Perfil... Sumário INTRODUÇÃO... 3 1. Acesso ao Ambiente do Aluno... 4 2. Ferramentas e Configurações... 5 2.1 Ver Perfil... 5 2.2 Modificar Perfil... 6 2.3 Alterar Senha... 11 2.4 Mensagens... 11 2.4.1 Mandando

Leia mais

Tencologia em Análise e Desenvolvimento de Sistemas Disciplina: WEB I Conteúdo: WEB Container Aula 04

Tencologia em Análise e Desenvolvimento de Sistemas Disciplina: WEB I Conteúdo: WEB Container Aula 04 Tencologia em Análise e Desenvolvimento de Sistemas Disciplina: WEB I Conteúdo: WEB Container Aula 04 Agenda 1. 2. Web Container TomCat 2 3 J2EE permite criar aplicações Web dinâmicas (com conteúdo dinâmico)

Leia mais

Programação Web Aula 12 - Java Web Software

Programação Web Aula 12 - Java Web Software Programação Web Aula 12 - Java Web Software Bruno Müller Junior Departamento de Informática UFPR 25 de Maio de 2015 1 Java 2 Java Web Software 3 Servlets Modelo de Trabalho Funcionamento API Java Código

Leia mais

ArpPrintServer. Sistema de Gerenciamento de Impressão By Netsource www.netsource.com.br Rev: 02

ArpPrintServer. Sistema de Gerenciamento de Impressão By Netsource www.netsource.com.br Rev: 02 ArpPrintServer Sistema de Gerenciamento de Impressão By Netsource www.netsource.com.br Rev: 02 1 Sumário INTRODUÇÃO... 3 CARACTERÍSTICAS PRINCIPAIS DO SISTEMA... 3 REQUISITOS DE SISTEMA... 4 INSTALAÇÃO

Leia mais

Como acessar o novo webmail da Educação? Manual do Usuário. 15/9/2009 Gerencia de Suporte, Redes e Novas Tecnologias Claudia M.S.

Como acessar o novo webmail da Educação? Manual do Usuário. 15/9/2009 Gerencia de Suporte, Redes e Novas Tecnologias Claudia M.S. Como acessar o novo webmail da Educação? Manual do Usuário 15/9/2009 Gerencia de Suporte, Redes e Novas Tecnologias Claudia M.S. Tomaz IT.002 02 2/14 Como acessar o Webmail da Secretaria de Educação? Para

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Modelo Cliente-Servidor: Introdução aos tipos de servidores e clientes Prof. MSc. Hugo Souza Iniciando o módulo 03 da primeira unidade, iremos abordar sobre o Modelo Cliente-Servidor

Leia mais

MANUAL DO USUÁRIO SORE Sistema Online de Reservas de Equipamento. Toledo PR. Versão 2.0 - Atualização 26/01/2009 Depto de TI - FASUL Página 1

MANUAL DO USUÁRIO SORE Sistema Online de Reservas de Equipamento. Toledo PR. Versão 2.0 - Atualização 26/01/2009 Depto de TI - FASUL Página 1 MANUAL DO USUÁRIO SORE Sistema Online de Reservas de Equipamento Toledo PR Página 1 INDICE 1. O QUE É O SORE...3 2. COMO ACESSAR O SORE... 4 2.1. Obtendo um Usuário e Senha... 4 2.2. Acessando o SORE pelo

Leia mais

MANUAL DO PVP SUMÁRIO

MANUAL DO PVP SUMÁRIO Manual PVP - Professores SUMÁRIO 1 INTRODUÇÃO... 6 2 ACESSANDO O PVP... 8 3 TELA PRINCIPAL... 10 3.1 USUÁRIO... 10 3.2 INICIAL/PARAR... 10 3.3 RELATÓRIO... 10 3.4 INSTITUIÇÕES... 11 3.5 CONFIGURAR... 11

Leia mais

Noções de. Microsoft SQL Server. Microsoft SQL Server

Noções de. Microsoft SQL Server. Microsoft SQL Server Noções de 1 Considerações Iniciais Basicamente existem dois tipos de usuários do SQL Server: Implementadores Administradores 2 1 Implementadores Utilizam o SQL Server para criar e alterar base de dados

Leia mais

Orientação a Objetos

Orientação a Objetos 1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou

Leia mais

Manual do Visualizador NF e KEY BEST

Manual do Visualizador NF e KEY BEST Manual do Visualizador NF e KEY BEST Versão 1.0 Maio/2011 INDICE SOBRE O VISUALIZADOR...................................................... 02 RISCOS POSSÍVEIS PARA O EMITENTE DA NOTA FISCAL ELETRÔNICA.................

Leia mais

Curso de Informática Básica

Curso de Informática Básica Curso de Informática Básica O e-mail Primeiros Cliques 1 Curso de Informática Básica Índice Introdução...3 Receber, enviar e responder mensagens...3 Anexando arquivos...9 Cuidado com vírus...11 2 Outlook

Leia mais

Acessando um Banco de Dados

Acessando um Banco de Dados Acessando um Banco de Dados Introdução Agora que você já está craque em JSP e já instalou seu servidor, vamos direto para a parte prática! Neste tutorial vamos aprender a acessar um banco de dados. Para

Leia mais

SUMÁRIO Acesso ao sistema... 2 Atendente... 3

SUMÁRIO Acesso ao sistema... 2 Atendente... 3 SUMÁRIO Acesso ao sistema... 2 1. Login no sistema... 2 Atendente... 3 1. Abrindo uma nova Solicitação... 3 1. Consultando Solicitações... 5 2. Fazendo uma Consulta Avançada... 6 3. Alterando dados da

Leia mais

Manual das funcionalidades Webmail AASP

Manual das funcionalidades Webmail AASP Manual das funcionalidades Webmail AASP 1. Configurações iniciais 2. Regras 3. Histórico da conta 4. Autorresposta 5. Dados de acesso (alterando senha de acesso) 6. Identidade (assinatura) 7. Redirecionamento

Leia mais

Está apto a utilizar o sistema, o usuário que tenha conhecimentos básicos de informática e navegação na internet.

Está apto a utilizar o sistema, o usuário que tenha conhecimentos básicos de informática e navegação na internet. 1. Descrição Geral Este manual descreve as operações disponíveis no módulo VTWEB Client, cuja finalidade é gerenciar cadastros de funcionários, realização de pedidos e controle financeiro dos pedidos.

Leia mais

WF Processos. Manual de Instruções

WF Processos. Manual de Instruções WF Processos Manual de Instruções O WF Processos é um sistema simples e fácil de ser utilizado, contudo para ajudar os novos usuários a se familiarizarem com o sistema, criamos este manual. Recomendamos

Leia mais

Microsoft Access XP Módulo Um

Microsoft Access XP Módulo Um Microsoft Access XP Módulo Um Neste primeiro módulo de aula do curso completo de Access XP vamos nos dedicar ao estudo de alguns termos relacionados com banco de dados e as principais novidades do novo

Leia mais

15/8/2007 Gerencia de Tecnologia da Informação Claudia M.S. Tomaz

15/8/2007 Gerencia de Tecnologia da Informação Claudia M.S. Tomaz 15/8/2007 Gerencia de Tecnologia da Informação Claudia M.S. Tomaz MANUAL DE UTILIZAÇÃO DO WEBMAIL GETEC 01 2/13 Como acessar o Webmail da Secretaria de Educação? Para utilizar o Webmail da Secretaria de

Leia mais

Manual de Instalação. SafeSign Standard 3.0.77. (Para MAC OS 10.7)

Manual de Instalação. SafeSign Standard 3.0.77. (Para MAC OS 10.7) SafeSign Standard 3.0.77 (Para MAC OS 10.7) 2/23 Sumário 1 Introdução... 3 2 Pré-Requisitos Para Instalação... 3 3 Ambientes Homologados... 4 4 Hardware Homologado... 4 5 Instruções de Instalação... 5

Leia mais

Fluxo de trabalho do Capture Pro Software: Indexação de OCR e separação de documentos de código de correção

Fluxo de trabalho do Capture Pro Software: Indexação de OCR e separação de documentos de código de correção Este procedimento corresponde ao fluxo de trabalho de Indexação de OCR com separação de código de correção no programa de treinamento do Capture Pro Software. As etapas do procedimento encontram-se na

Leia mais

Curso de Aprendizado Industrial Desenvolvedor WEB

Curso de Aprendizado Industrial Desenvolvedor WEB Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos II Professor: Cheli dos S. Mendes da Costa Modelo Cliente- Servidor Modelo de Aplicação Cliente-servidor Os

Leia mais

1 REQUISITOS BÁSICOS PARA INSTALAR O SMS PC REMOTO

1 REQUISITOS BÁSICOS PARA INSTALAR O SMS PC REMOTO 1 ÍNDICE 1 REQUISITOS BÁSICOS PARA INSTALAR O SMS PC REMOTO... 3 1.1 REQUISITOS BASICOS DE SOFTWARE... 3 1.2 REQUISITOS BASICOS DE HARDWARE... 3 2 EXECUTANDO O INSTALADOR... 3 2.1 PASSO 01... 3 2.2 PASSO

Leia mais

ALTERNATIVA PARA CONEXÃO VIA INTERNET DE IP MASCARADO A IP REAL

ALTERNATIVA PARA CONEXÃO VIA INTERNET DE IP MASCARADO A IP REAL Documento: Tutorial Autor: Iuri Sonego Cardoso Data: 27/05/2005 E-mail: iuri@scripthome.cjb.net Home Page: http://www.scripthome.cjb.net ALTERNATIVA PARA CONEXÃO VIA INTERNET DE IP MASCARADO A IP REAL

Leia mais

Programação para Internet Orientada a Objetos com PHP & MySQL Instalando e configurando um ambiente de ferramentas PHP e MySQL. Prof. MSc.

Programação para Internet Orientada a Objetos com PHP & MySQL Instalando e configurando um ambiente de ferramentas PHP e MySQL. Prof. MSc. Programação para Internet Orientada a Objetos com PHP & MySQL Instalando e configurando um ambiente de ferramentas PHP e MySQL Prof. MSc. Hugo Souza Na última aula falamos um pouco sobre as ferramentas

Leia mais

4 O Workflow e a Máquina de Regras

4 O Workflow e a Máquina de Regras 4 O Workflow e a Máquina de Regras O objetivo do workflow e da máquina de regras é definir um conjunto de passos e regras configuráveis. Ao longo de sua execução, um usuário consegue simplificar o seu

Leia mais

Programação Web Prof. Wladimir

Programação Web Prof. Wladimir Programação Web Prof. Wladimir Linguagem de Script e PHP @wre2008 1 Sumário Introdução; PHP: Introdução. Enviando dados para o servidor HTTP; PHP: Instalação; Formato básico de um programa PHP; Manipulação

Leia mais

UNIDADE II JAVA SERVLETS

UNIDADE II JAVA SERVLETS UNIDADE II JAVA SERVLETS INTERNET É uma rede de redes, reunindo computadores do Governo, de universidades e empresas fornecendo infra-estrutura para uso de bancos de dados, correio eletrônico, servidores

Leia mais

PHP Material de aula prof. Toninho (8º Ano)

PHP Material de aula prof. Toninho (8º Ano) Na aula anterior entendemos como se faz o acesso aos nossos arquivos PHP; Como construir um script em php. Nesta aula (3) vamos entender: Como roda o PHP Inserindo comentários Visualizando páginas a partir

Leia mais

Fundamentos de Servlets. Conceitos e ciclo de vida Classes e Interfaces da API Exemplos de Servlets

Fundamentos de Servlets. Conceitos e ciclo de vida Classes e Interfaces da API Exemplos de Servlets Fundamentos de Servlets Conceitos e ciclo de vida Classes e Interfaces da API Exemplos de Servlets Common Gateway Interface Aplicações Geração de documentos com conteúdo dinâmico Produzir resultados em

Leia mais

Manual do Google agenda. criação e compartilhamento de agendas

Manual do Google agenda. criação e compartilhamento de agendas Manual do Google agenda criação e compartilhamento de agendas 1 O que é o Google Agenda? Google Agenda é um serviço de agenda on line gratuito do Google, onde você pode anotar compromissos e tarefas, organizando

Leia mais

Despachante Express - Software para o despachante documentalista veicular DESPACHANTE EXPRESS MANUAL DO USUÁRIO VERSÃO 1.1

Despachante Express - Software para o despachante documentalista veicular DESPACHANTE EXPRESS MANUAL DO USUÁRIO VERSÃO 1.1 DESPACHANTE EXPRESS MANUAL DO USUÁRIO VERSÃO 1.1 1 Sumário 1 - Instalação Normal do Despachante Express... 3 2 - Instalação do Despachante Express em Rede... 5 3 - Registrando o Despachante Express...

Leia mais

Sumário. Apresentação O que é o Centro de Gerenciamento de Serviços (CGS) NTI? Terminologia Status do seu chamado Utilização do Portal Web

Sumário. Apresentação O que é o Centro de Gerenciamento de Serviços (CGS) NTI? Terminologia Status do seu chamado Utilização do Portal Web Sumário Apresentação O que é o Centro de Gerenciamento de Serviços (CGS) NTI? Terminologia Status do seu chamado Utilização do Portal Web Fazendo Login no Sistema Tela inicial do Portal WEB Criando um

Leia mais

CONCEITOS INICIAIS. Agenda A diferença entre páginas Web, Home Page e apresentação Web;

CONCEITOS INICIAIS. Agenda A diferença entre páginas Web, Home Page e apresentação Web; CONCEITOS INICIAIS Agenda A diferença entre páginas Web, Home Page e apresentação Web; O que é necessário para se criar páginas para a Web; Navegadores; O que é site, Host, Provedor e Servidor Web; Protocolos.

Leia mais

Novell. Novell Teaming 1.0. novdocx (pt-br) 6 April 2007 EXPLORAR O PORTLET BEM-VINDO DESCUBRA SEU CAMINHO USANDO O NOVELL TEAMING NAVIGATOR

Novell. Novell Teaming 1.0. novdocx (pt-br) 6 April 2007 EXPLORAR O PORTLET BEM-VINDO DESCUBRA SEU CAMINHO USANDO O NOVELL TEAMING NAVIGATOR Novell Teaming - Guia de início rápido Novell Teaming 1.0 Julho de 2007 INTRODUÇÃO RÁPIDA www.novell.com Novell Teaming O termo Novell Teaming neste documento se aplica a todas as versões do Novell Teaming,

Leia mais

Entendendo como funciona o NAT

Entendendo como funciona o NAT Entendendo como funciona o NAT Vamos inicialmente entender exatamente qual a função do NAT e em que situações ele é indicado. O NAT surgiu como uma alternativa real para o problema de falta de endereços

Leia mais

Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL

Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL Prof. MSc. Hugo Souza Iniciando nossas aulas sobre

Leia mais

CONSTRUÇÃO DE BLOG COM O BLOGGER

CONSTRUÇÃO DE BLOG COM O BLOGGER CONSTRUÇÃO DE BLOG COM O BLOGGER Blog é uma abreviação de weblog, qualquer registro frequênte de informações pode ser considerado um blog (últimas notícias de um jornal online por exemplo). A maioria das

Leia mais

Manual Captura S_Line

Manual Captura S_Line Sumário 1. Introdução... 2 2. Configuração Inicial... 2 2.1. Requisitos... 2 2.2. Downloads... 2 2.3. Instalação/Abrir... 3 3. Sistema... 4 3.1. Abrir Usuário... 4 3.2. Nova Senha... 4 3.3. Propriedades

Leia mais

3. No painel da direita, dê um clique com o botão direito do mouse em qualquer espaço livre (área em branco).

3. No painel da direita, dê um clique com o botão direito do mouse em qualquer espaço livre (área em branco). Permissões de compartilhamento e NTFS - Parte 2 Criando e compartilhando uma pasta - Prática Autor: Júlio Battisti - Site: www.juliobattisti.com.br Neste tópico vamos criar e compartilhar uma pasta chamada

Leia mais

Manual AGENDA DE BACKUP

Manual AGENDA DE BACKUP Gemelo Backup Online DESKTOP Manual AGENDA DE BACKUP Realiza seus backups de maneira automática. Você só programa os dias e horas em que serão efetuados. A única coisa que você deve fazer é manter seu

Leia mais

Manual Sistema de Autorização Online GW

Manual Sistema de Autorização Online GW Sistema de Autorização Online GW Sumário Introdução...3 Acesso ao sistema...4 Logar no sistema...4 Autorizando uma nova consulta...5 Autorizando exames e/ou procedimentos...9 Cancelamento de guias autorizadas...15

Leia mais

Manual de configuração do sistema

Manual de configuração do sistema Manual de configuração do sistema (v.1.5.x Beta) Rua México, 119 Sala 2004 Centro Rio de Janeiro, RJ www.doctors-solution.com.br www.simdoctor.com.br contato@simdoctor.com.br Sumário 1. Fazendo seu primeiro

Leia mais

MÓDULO 5 Movimentações

MÓDULO 5 Movimentações MÓDULO 5 Movimentações Bem-vindo(a) ao quinto módulo do curso. Agora que você já conhece as entradas no HÓRUS, aprenderá como são feitas as movimentações. As movimentações do HÓRUS são: Requisição ao Almoxarifado:

Leia mais

CRIANDO TEMPLATES E LEGENDAS

CRIANDO TEMPLATES E LEGENDAS CRIANDO TEMPLATES E LEGENDAS Este tutorial tem como objetivo instruir passo à passo como criar templates de peças, utilizar os novos recursos de cadastro de propriedade de peças e criação de legenda. 1-

Leia mais

MANUAL DE INSTALAÇÃO E CONFIGURAÇÃO. Motor Periférico Versão 8.0

MANUAL DE INSTALAÇÃO E CONFIGURAÇÃO. Motor Periférico Versão 8.0 MANUAL DE INSTALAÇÃO E CONFIGURAÇÃO Motor Periférico Versão 8.0 1. Apresentação... 3 2. Instalação do Java... 3 2.1 Download e Instalação... 3 2.2 Verificar Instalação... 3 3. Download do Motor Periférico...

Leia mais

Faculdade de Tecnologia SENAC Goiás. Disciplina: Gerenciamento de Rede de Computadores. Goiânia, 16 de novembro de 2014.

Faculdade de Tecnologia SENAC Goiás. Disciplina: Gerenciamento de Rede de Computadores. Goiânia, 16 de novembro de 2014. Faculdade de Tecnologia SENAC Goiás Disciplina: Gerenciamento de Rede de Computadores : Goiânia, 16 de novembro de 2014. Faculdade de Tecnologia SENAC Goiás Professor: Marissol Martins Alunos: Edy Laus,

Leia mais

CURSO DE PROGRAMAÇÃO EM JAVA

CURSO DE PROGRAMAÇÃO EM JAVA CURSO DE PROGRAMAÇÃO EM JAVA Introdução para Iniciantes Prof. M.Sc. Daniel Calife Índice 1 - A programação e a Linguagem Java. 1.1 1.2 1.3 1.4 Linguagens de Programação Java JDK IDE 2 - Criando o primeiro

Leia mais

NetBeans. Conhecendo um pouco da IDE

NetBeans. Conhecendo um pouco da IDE NetBeans Conhecendo um pouco da IDE Professor: Edwar Saliba Júnior Sumário Apresentação:...1 Criando Um Novo Projeto de Software:...1 Depurando Um Código-fonte:...4 Entendendo o Código-fonte:...7 Dica

Leia mais