Universidade do Vale do Paraíba Colégio Técnico Antônio Teixeira Fernandes Disciplina Programação Orientada a Objetos III Material IV-Bimestre Criação de programa em Java com recursos para web, arquivo de texto, Threads e JSP(Java Server Page) Site : http://www1.univap.br/~wagner Prof. Responsável Wagner Santos C. de Jesus Usando Thread : Vem a ser um recurso de se tratar processos em concorrência ou seja várias aplicações podem ser executadas ao mesmo tempo. Criação da classe básica de um Thread implements Runnable - Cria a classe básica para um processamento concorrente. Classe: Runnable A interface Runnable deve ser implementada por qualquer classe cujas instâncias são destinados a ser executado por um Thread. A classe deve definir um método de chamada sem argumentos de execução. Estrutura de uma classe básica para Thread. public class <Nome-Classe> extends implements Runnable { ........... .......... } Função do Thread Thread Processo1(Applet) run() Tarefas a serem executadas Instanciando uma Thread. Sintaxe : Thread <Nome-Canal>; <Nome-Canal> = new Thread(this); Uma Thread pode ter quatro estados: Que são dados pelos métodos start() : Dispara uma Thread suspend() - Permite uma pausa na Thread. resume() - Reinicia o processo thread. stop() - Para definitivamente uma thread. run() - Permite que executar continuamente um programa para Appet. Manipulação de Arquivo de dados (texto). Em Java para manipularmos cadeias de dados streams existem classes para podermos implementar aplicações com esse recursos. E essas classes estão disponíveis em um pacote denominado io.*. Um stream vem a ser uma cadeia de caracteres. Exemplo : import java.io.*; Para abrir um arquivo para leitura devemos usar a classe FileInputStream. Exemplo : FileInputStream f1; f1 = new FileInputStream("arq.txt"); Obs : Referência o nome do arquivo. Para acessar um arquivo de dados que já foi referenciado devemos usar a classe DataInputStream. Exemplo : DataInputStream i1; i1 = new DataInputStream(f1); Após usamos os métodos DataInputStream, FileInputStream e FileOutputStream poderemos gravar ou ler os dados de um arquivo. PrintStream() - Abrindo um arquivo para gravação. Exemplo : f1 = new FileOutputStream("arq.txt"); PrintStream grava; grava = new PrintStream(f1); Para mover uma linha de dados para um arquivo de texto usamos o método prinln() ou print() com a instância da classe PrintStream(). Exemplo : PrintStream grava; grava = new PrintStream(f1); grava.println("String"); Para ler uma linha de dados de um arquivo de texto usamos o método readLine(); Exemplo : Fazendo a leitura de uma linha de um arquivo texto. FileInputStream f1; DataInputStream i1; f1 = new FileInputStream("arq.txt"); i1 = new DataInputStream(f1); String str = i1.readLine(); Exemplo : Fazendo a gravação de uma linha de dados em um arquivo de texto. FileOutputStream f1; PrintStream grava; f1 = new FileOutputStream("arq.txt"); grava = new PrintStream(f1); grava.println("José da Couves"); Exemplo de um programa que faz a gravação de dados em um arquivo texto. import java.io.*; class grava { public static void main(String args[]){ FileOutputStream f1; PrintStream grava; try { f1 = new FileOutputStream("cadastro.txt"); grava = new PrintStream(f1); grava.println("Mariana da Silva"); // Gravacao de dados... grava.println("Joselina Pereira"); grava.println("Arquimede Silveira"); } catch(Exception e) { System.out.println("Erro no arquivo !!! "); } } } Armazenando dado no final do arquivo. Classe FileWrite FileWriter fw = new FileWriter(<ExpS>, <ExpB>); <ExpS> => Nome do arquivo. <ExpB> => Expressão booleana que determina se as informações irão para o final do arquivo. write() Envia o dado para o arquivo de texto especificado. objetoFilewrite.write(<ExpS>); <ExpS> - Determina a string que será enviada para o arquivo de texto. close(); Fecha e armazena os dados do Buffer em disco. objetoFilewrite.close(); Exemplo : Inserção em arquivo de texto. import java.io.*; public class Addtexto { public static void main(String arquivo[]) throws IOException { FileWriter fw = new FileWriter(arquivo[0], true); fw.write(arquivo[1]+"\n"); fw.close(); } } Leitura de um arquivo de texto. import java.io.*; class leitura { public static void main(String args[]){ FileInputStream f1; DataInputStream i1; try { f1 = new FileInputStream("teste.txt"); i1 = new DataInputStream(f1); String str = i1.readLine(); while( str != null ) { System.out.println(str); str = i1.readLine(); } } catch(Exception e) { System.out.println("Erro no arquivo !!! "); } } } JSP (Java Server Page) É uma especialização do servlet que permite que conteúdo dinâmico seja facilmente desenvolvido. Com essa tecnologia é possível o desenvolvimento de páginas dinâmicas usando recursos de alta qualidade com reaproveitamento total de códigos Java. Arquitetura Cliente/Servidor Cliente-servidor é um modelo computacional que separa clientes e servidores, sendo interligados entre si geralmente utilizando-se uma rede de computadores. Cada instância de um cliente pode enviar requisições de dado para algum dos servidores conectados e esperar pela resposta. Por sua vez, algum dos servidores disponíveis pode aceitar tais requisições, processá-las e retornar o resultado para o cliente. Apesar do conceito ser aplicado em diversos usos e aplicações, a arquitetura é praticamente a mesma. Browser Visão da Aplicação Java servlet JSP awt Swing JVM JavaBeans APPLET Banco Dados Requisição e Serviço Cliente/Servidor Cliente Servidor Realização da Tarefa Para realizar essa tarefa devemos, montar um servidor de aplicação é uma plataforma sobre a qual roda a porção servidora de um aplicativo. Isto inclui hardware e software. mas o software pode ser dividido em dois grupos: funções do negócio, que são específicas para um domínio de problema; e serviços especializados, que são funções genéricas aplicáveis a diversas soluções. Servidor de Aplicação O Tomcat é um servidor de aplicação Java para web, mais especificamente, um container de servlets. Desenvolvido pela Apache Software Foundation, é distribuído como software livre dentro do conceituado projeto Apache Jakarta, sendo oficialmente endossado pela Sun como a implementação de referência para as tecnologias Java Servlet e Java Server Pages (JSP). Ele cobre parte da especificação J2EE (Java Edição Empresarial) com tecnologias como servlet e JSP, e tecnologias de apoio relacionadas a segurança, e JDBC DataSources. Porta de transmissão serviço HTTP para servidor TOMCAT (8084). Alguns serviços (que fazem uso de protocolos específicos) são tipicamente acessíveis em portas fixas, conhecidas como portas bem conhecidas. São número de 1 a 1024 Exemplo : http://localhost:8084/teste/lixo.jsp Funcionamento JSP Requisição JSP Servidor Cliente Interface HTML Converte em servlet Compilador - JAVA Envio Gerar (.class) Página HTML Todos programa confeccionado para arquitetura Java Server Page deve ter a extensão (JSP) Exemplo de tags jsp. @include – É utilizada para incorporar os códigos de um arquivo padrão (HTML,JSP,TXT) @page – Traz informações sobre página JSP como o tipo, as bibliotecas que serão importtadas, a linguagem da página. <%@ %> - Determina Instruções de cabeçalho. Referente as tags acima. <% %> - Determina o trecho de código que será escrito em Java. <%= %> - Usado para executar uma função em Java retornando apenas o trecho de código para a página HTML. <%- -%> - Usado para documentar trechos de código não sendo executadas. Caminho Servidor local (Padrão) Configuração Apache. Projetos Arquivos JSP Servicos build web META-INF WEB-INF Estrutura de um programa JSP <%@page contentType="text/html"%> <html> <head><title>Pagina JSP </Title> <% String a = “Maria da Silva”; out.println("<h1>”+a+”</h1>"); %> </html> Simplesmente JSP <% String a = “Maria”; out.println("<h1>”+a+”</h1>"); %> Exemplo <Form> <Form Name = "NomedoFormulario"> : : : <Objetos do Formulario> : : </Form> <Input Type> - Cria objetos de entrada de dados. Criando uma Caixa de Texto em um Browser. <INPUT TYPE> - Tipo de entrada. (Caixa de texto, Caixa de Verificação ou botão de Rádio, Objeto Oculto ou Caixa de Texto para senha). Formatação de <Input Type> Text - Caixa de Texto Simples. Hidden - Caixa de Texto Invisível. Radio - Botão de Radio. Checkbox - Caixa de Verificação. Password - Caixa de Texto que esconde os dados com (*) asterisco Button - Botão de Comandos submit – Submete o formulário para protocolos de envio. reset – Apaga os dados de um formulário Cláusulas do Marcador <Input Type> Name - nome dados para caixa de texto. Value - Define a informação que irá aparecer na caixa de texto. Size - Define o tamanho da caixa de texto. MaxLength - Define o tamanho máximo de caracteres que podem ser escritos em uma caixa de texto. Exemplo da Criação de uma caixa de texto. Nome:<INPUT TYPE="text" NAME="teste" VALUE="" SIZE="30" MAXLENGTH=”20"> Senha:<INPUT TYPE="Password" NAME="teste"> Exemplo da Criação de Botão de Comandos <INPUT TYPE="Button" NAME="btn2" VALUE="OK"> Usando Métodos de envio de dado via TCP/IP(protocolo HTTP) O protocolo HTTP provê dois principais métodos para enviar informações para o servidor web, além da URL referente ao arquivo solicitado. Esses métodos são denominados GET e o POST. GET – Envia os dados de forma aparente para o browser. POST – Envia os dados de forma não aparente para o browser. Usando Get Servidor http://servidor/prog.jsp?nome=Wagner&endereco=Rua+23 Responde uma Página HTML Cliente JSP Mostra os dados que foram enviados para o servidor DB Exemplo : Envio com GET <html> <head> <title> JSP - Aula </head> <body> </title> <FORM action=“exemplo1.jsp" method=“get"> Nome : <Input type Name="nome"><br> Nome : <Input type Name="endereco"><br> <Input type="submit" value = "Enviar"> </Form> </body> </html> Usando Post Servidor http://servidor/prog.jsp Responde uma Página HTML Cliente JSP Envia todo o formulário HTML sem mostrar as informações DB Exemplo : Envio com GET <html> <head> <title> JSP - Aula </head> <body> </title> <FORM action=“exemplo1.jsp" method=“post"> Nome : <Input type Name="nome"><br> Nome : <Input type Name="endereco"><br> <Input type="submit" value = "Enviar"> </Form> </body> </html> Objeto (request) Permite capturar dados enviados pelo formulário por intermédio do método getParameter() no servidor. Servidor Envia os dados Cliente Request Retorna Página HTML Captura Dados getParameter() Exemplo Prático de captura de dados <% String vw_nome = request.getParameter("nome"); out.println("<h1>"+vw_nome + "</h1>"); %> Exemplo da Criação de Botão de Rádio. Masculino:<INPUT TYPE="radio" NAME="br" VALUE="1" > Feminino: <INPUT TYPE="radio" NAME="br" VALUE="2" Checked> Exemplo da Criação de Caixa de Verificação. Curso <br> Java : <INPUT TYPE="Checkbox" NAME="ch" VALUE="1"> HTML :<INPUT TYPE="Checkbox" NAME="ch" VALUE="2"> Objetos de Lista(Caixa de Combinação e Caixa de Lista) Para se criar um Objeto de lista em HTML usa-se o marcador <Select>. Exemplo da Criação de uma Caixa de Combinação. <Select Name ="cargo"> <Option>Programador Junior <Option selected>Programador Senior <Option>Programador Pleno </Select> Exemplo da Criação de uma Caixa de Lista. <Select Name ="cargo" size=3> <Option>Programador Junior <Option selected>Programador Senior <Option>Programador Pleno <Option>Programador Estagiário <Option>Programador Web <Option>Projetista VB </Select> Usando recursos de JavaScript com JSP <% String str1 = "Marta"; if(str1.equals("Marta")) out.println("<Script>alert('Nome "+str1 +" Correto !!!')</Script>"); else out.println("<Script>alert('Nome Incorreto !!!')</Script>"); %> Links – Acionando JSP <body> <a href=“nomearq.jsp"> Exemplo Link </a> </body> <Textarea> - Criação de uma área de edição de texto. Cria uma caixa de texto com um número pré estabelecido de linhas e colunas para edição do usuário. Exemplo : <BODY> <Textarea rows=5 cols=30 Name=dados></textarea> </BODY> </HTML> Criação da conexão Banco acesso.jspf <%@page import="java.sql.*"%> <% Connection con; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); con=DriverManager.getConnection("jdbc:odbc:Banco","",""); Statement st=con.createStatement(); %> JSPF - Criação Todo arquivo jspf deve ser criado em um diretório que deve ter um nome padrão que a aplicação irá referenciar no momento que encontre seu cabeçalho. <%@include file="WEB-INF/jspf/acesso.jspf"%> <%@include file=“WEB-INF/jspf/acesso.jspf”%> <% ResultSet res = st.executeQuery("Select * from tabela1"); while(res.next()) { out.println("Nome : "+res.getString("nome")+"<br>"); } %>