PROJETO WEB: Java. Prof Fernando Gomes

Documentos relacionados
Tutorial Jogo da Velha WEB

Trabalhando com Servlet

Lista de exercícios I - RESPOSTAS Servlets e banco de dados

Projeto webservicejax

JavaScript Fundamental e Servlet Fundamental

Aplicativos móveis com HTML5

SERVLETS. Introdução UNIDADED

Implementar um exemplo de relacionamento entre classes um para muitos (1:N) e um para um (1:1). Sistema para uma Promotora de Evento Agenda Anual

Autenticação e Autorização

Universidade São Judas Tadeu. Faculdade de Tecnologia e Ciências Exatas. Sistemas de Informação 3ASIN

Tutorial 1 Configuração Apache Tomcat no NetBeans 8.0 (passo a passo)

Ciclo de vida; Funcionamento; Requisições e Respostas.

Executando comandos do Sistema Operacional em uma aplicação WEB Java

Java Server Pages (JSP)

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

Aplicativos Web com Orientação a Objetos

JAVASCRIPT. Desenvolvimento Web I

Desenvolvimento de Sistemas Corporativos Aula 1.5 Introdução a Servlets. Prof. Bruno Moreno

Prof. Roberto Desenvolvimento Web Avançado

Many-to-many. Mapear no Context Na classe Context.cs, dentro do método OnModelCreating, adicionar o trecho

Surgindo em 1997 a API Java Servlet proporciona ao desenvolvedor a possibilidade de adicionar conteúdo dinâmico em um servidor web usando a

OFICINA DA PESQUISA PROGRAMAÇÃO APLICADA À CIÊNCIA DA COMPUTAÇÃO

Java para Desenvolvimento Web

INTRODUÇÃO À TECNOLOGIA SERVLETS

Agilizando o processo de redeploy de aplicações Java

!" # # # $ %!" " & ' ( 2

Desenvolvimento Web. HTML 5 Parte I. Prof. Vicente Paulo de Camargo

Programação WEB I Funções

HTML BÁSICO E TEMPLATE VIEW. Gabrielle Amorim Porto

PROF. DANIELA PIRES. Aplicações para Web. Aplicações para Web - FMU Prof. Daniela Pires

Faculdades Integradas Santa Cruz. Tutorial de Java MVC WEB Criando uma tela de Login com Banco de Dados

Material de apoio a aulas de Desenvolvimento Web. Tutorial Java WEB JSP & HTML & CSS & CLASSE & OBJETOS. AAS -

Tutorial. Começando a Criar Aplicativos SMS

JSP e Servlet Princípio de MVC

Frameworks para interfaces móveis

<link rel="stylesheet" type="text/css" href="imagens.css" />

Java para WEB com Struts 2 e Hibernate

DESENVOLVIMENTO DE SOFTWARE PARA INTERNET. Prof. Emilio Parmegiani

1. Crie um banco de dados (no MySQL) chamado produtos e um tabela produto. Realise as inserções na tabela produto de acordo com os scripts abaixo.

JSP (JAVASERVER PAGES)

Figura 1: Eclipse criação de um Dynamic Web Project

Como criar um EJB. Criando um projeto EJB com um cliente WEB no Eclipse

Arquitetura de Aplicações JSP/Web. Padrão Arquitetural MVC

A composição de uma Java Server Pages (Diretivas, Elementos de Script e Objetos Implícitos)

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

INTRODUÇÃO À TECNOLOGIA SERVLETS

DESENVOLVIMENTO DE SOFTWARE PARA INTERNET LABORATÓRIO 4 PROF. EMILIO PARMEGIANI

DESENVOLVIMENTO DE SOFTWARE PARA INTERNET. quarta-feira, 17 de outubro de 12

EXERCÍCIOS DE REVISÃO DE CONTEÚDO QUESTÕES DISSERTATIVAS

Java: Linguagem de programação (OOP) JavaScipt: Linguagem de scripts (OOP)

Interfaces Pessoa. Laboratório 1. Máquina. HTML, CSS, JS- Introdução

PROGRAMAÇÃO PARA INTERNET. Fonte: Raul Paradeda

HTML 5 TAGS BÁSICAS E ESTRUTURAIS. Prof. Rosemary Melo

J2EE. Exemplo completo Utilização Servlet. Instrutor HEngholmJr

Desenvolvimento para Internet. Professor Ariel da Silva Dias HTML

Login. Criar uma pasta Repositories na raiz do projeto. Criar uma classe Funcoes.cs dentro da pasta Repositories.

INSTALAÇÃO E USO DO GOOGLE APP ENGINE PLUGIN utilizando o Eclipse Galileo

Este exercício será parecido com a montagem de um projeto real, onde trabalhamos com vários arquivos XHTML e um único arquivo CSS.

Java na WEB Servlet. Sumário

Configurando uma aplicação Struts

Desenvolvimento de Aplicações para Internet Aula 11

Unidade 6: Java Server Pages Prof. Daniel Caetano

Computação II Orientação a Objetos

O que faz um servidor/navegador web? 14/03/2016 Rômulo da Silva Lima Slid e 2

<HTML> Vinícius Roggério da Rocha

Introdução ao Javascript. Parte 3 Prof. Victor Hugo Lopes

Aula 06 Classe Net.Mail

Primefaces 3. Laboratório Passo-a-Passo. JSF - Primefaces. Prof. Leandro Rubim de Freitas Versão 1.

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

DESENVOLVIMENTO DE SOFTWARE PARA INTERNET LABORATÓRIO 5 PROF. EMILIO PARMEGIANI


Desenvolvimento Web. JavaScript aula II variáveis (cont.) e diálogos. Professor: Bruno Gomes

Mini-Tutorial. Como criar relatórios Java para Web com JasperReports e ireport por Roberto J. Furutani 20/07/2005

Desvantagens: a) Dependência b) Complexidade de modificação do framework c) Códigos desnecessários que podem deixar o programa pesado

cadastro de usuários utilizando Ajax e PHP para inserir os dados em uma tabela MySQL.

Unidade 9: Middleware JDBC para Criação de Beans

Aplicação para Web I. Manipulando Imagens e Links

Estudo Dirigido - Parte 1

Criação de estilos CSS

Unidade 12: Uso de Sessão e DAO e Servlets

CSS [10] Desenvolvimento e Design de. Websites. Prof.: Ari Oliveira

05 Como utilizar POO no ambiente gráfico do C#?

Programação Web Aula 2 XHTML/CSS/XML

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

Criação de Servlets Name Directory Build WAR JSP/Servlet frameworks Launch URL Package Class name Generate header comments

Uma regra CSS quando válida para vários seletores, estes podem ser agrupados. Exemplo: h1, h2, h3, h4, h5, h6 { color: #00FF00; }

Criação de Applets Package: Class Name Base Class: Generate header comments: Can run standalone: Generate Standard methods:

Adobe. Dreamweaver CS4

<head>/*o elemento <head> deve incluir um título para o documento, e pode incluir scripts, estilos, informações de meta, e muito mais*/

Java para WEB. Servlets

PLATAFORMA SIGA RIO DAS VELHAS MANUAL DO CÓDIGO FONTE

Estrutura do Projeto - Trabalhando com Banco de Dados

COM222 DESENVOLVIMENTO DE SISTEMAS WEB. Aula 01: HTML e CSS

DESENVOLVIMENTO DE SOFTWARE PARA INTERNET LABORATÓRIO 1 PROF. EMILIO PARMEGIANI

A figura acima mostra o script de criação do banco de dados que chamaremos de minicurso.

Professor Jefferson Chaves Jefferson de Oliveira Chaves

Transcrição:

PROJETO WEB: Este projeto nos mostra uma página JSP que contém um formulário para digitarmos um número inteiro. Na mesma página, o sistema retorna se esse número é primo ou não - caso não seja primo, retorna o valor de um número inteiro que seja seu divisor. Estrutura do projeto depois de finalizado: WWW.COTIINFORMATICA.COM.BR 1

Para criar esse projeto: Clicar no menu File -> New -> Dynamic Web Project Vamos criar um pacote chamado control, onde vamos ter as classes do nosso sistema. WWW.COTIINFORMATICA.COM.BR 2

Para criar um novo pacote clique em Resources e depois, clique com o botão direito em src [abaixo de Resources]. WWW.COTIINFORMATICA.COM.BR 3

Depois escolha New -> Package. WWW.COTIINFORMATICA.COM.BR 4

Dê o nome control e clique em Finish. WWW.COTIINFORMATICA.COM.BR 5

Agora, precisamos criar a interface funcional de nosso sistema. Como toda interface, ela vai conter apenas a assinatura dos métodos sem a sua implementação. Para criar uma nova interface funcional, clique com o botão direito em control [veja imagem abaixo] e escolha New -> Interface. Depois, basta dar o nome para a interface funcional e clicar em Finish. WWW.COTIINFORMATICA.COM.BR 6

O nome da nossa interface funcional é ICalculoDois. Essa interface terá um método apenas. Toda interface funcional deve ter apenas um método. Essa interface irá receber 2 números inteiros. O primeiro é o número que queremos saber se é primo ou não, e o segundo é o número inteiro mais próximo do valor da raiz quadrada do primeiro número, por exemplo, se a raiz quadrada do primeiro número for 33,7, o número inteiro mais próximo é 34 e se for 33,1 o número inteiro mais próximo é 33. Recebe 2 números inteiros e retorna um número inteiro - todos Integer. WWW.COTIINFORMATICA.COM.BR 7

ICalculoDois.java package control; @FunctionalInterface public interface ICalculoDois { public Integer operacao(integer a, Integer b); } Precisamos criar uma Classe chamada Controle. Nessa Classe, vamos implementar o método que foi declarado na interface funcional que criamos. Para criar a Classe Controle, Clique com o botão direito no pacote control e selecione New -> Class. Depois, é só dar o nome Controle e clicar em Finish. WWW.COTIINFORMATICA.COM.BR 8

WWW.COTIINFORMATICA.COM.BR 9

A Classe Controle irá implementar o método declarado na interface funcional. Essa implementação é como no exemplo abaixo: public static ICalculoDois PRIMO = (a, b) -> (a % b == 0? b : Controle.PRIMO.operacao(a, b - 1)); WWW.COTIINFORMATICA.COM.BR 10

A expressão mostrada acima é uma Função Lambda. Funções Lambda fazem parte do 8 no contexto de Programação Funcional. Uma Função Lambda pode ser criada como se fosse um método público e estático, sem haver necessidade de criar um objeto para utilizála. Função Lambda P implementa o método operacao da interface funcional ICalculoDois; recebe 2 parâmetros Integer (a, b) e retorna o valor que é calculado à direita da seta -> O valor inicial de b, é o valor inteiro mais próximo da raiz quadrada de a. A Função Lambda então executa um Ternário da seguinte forma: Se o resto da divisão de a por b for zero, a Função Lambda retorna b, caso contrário, a Função chama ela mesma, recursivamente, passando os parâmetros a e (b-1) e segue buscando um número que divida a. Controle.java package control; public class Controle { public static ICalculoDois PRIMO = (a, b) -> (a % b == 0? b : Controle.PRIMO.operacao(a, b - 1)); } Precisamos criar o Servlet que vai receber o número enviado via POST por um formulário html. Esse Servlet irá chamar o método implementado na classe Controle, e vai retornar a mensagem se o número é primo ou não. Para criar um novo Servlet, clique com o botão direito no pacote control e selecione New -> Servlet. Depois dê um nome ao Servlet e clique em Next. WWW.COTIINFORMATICA.COM.BR 11

WWW.COTIINFORMATICA.COM.BR 12

Depois de Clicar Next na tela mostrada acima, clicamos em Next na tela seguinte. Vamos entrar na tela mostrada abaixo. Como vamos enviar os dados de um formulário html via POST, desmarcamos o método doget, indicado pela seta. Depois, clicamos em Finish. WWW.COTIINFORMATICA.COM.BR 13

Criamos o Servlet ControlPrimo. Esse Servlet irá fazer algumas avaliações sobre o número recebido antes de chamar a Função Lambda definida na Classe Controle, para evitar uma chamada desnecessária. Primeiramente, o Servlet recebe o valor passado por form, que vem como String, e o converte para Integer. Integer n = Integer.parseInt((request.getParameter("N1"))); Se o número enviado for 2 ou 3, o Servlet retorna a mensagem que o número digitado é primo; se o número digitado for 0 ou 1, o Servlet retorna a mensagem que deve ser digitado um número maior que 1; e se WWW.COTIINFORMATICA.COM.BR 14

o resto da divisão do número por 2 for zero, o Servlet retorna a mensagem que o número digitado é par. Criamos um contador inteiro com o valor 1, e chamamos de i. Se o Servlet enviar qualquer uma das 3 mensagens citadas acima, esse contador é decrementado e todo o resto do processamento do Servlet não é executado. Se o valor do contador que criamos for maior que zero, então o Servlet chama a Função Lambda definida na Classe Controle, passando como parâmetros o número recebido do formulário html [chamamos esse parâmetro de n no Servlet], e o valor de i, que passa a ser o valor inteiro mais próximo da raiz quadrada de n. Recursivamente, a Função Lambda executa até chegar a um número que divida n. O Servlet, por fim, avalia se esse número é 1 se for o caso, então o Servlet retorna a mensagem que o número é primo, caso contrário, retorna a mensagem que o número não é primo e exibe i como um divisor de n. O Envio dessas mensagens é feito via Expression Language, como veremos mais adiante. ControlPrimo.java package control; import java.io.ioexception; import javax.servlet.servletexception; import javax.servlet.annotation.webservlet; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; @WebServlet("/ControlPrimo") WWW.COTIINFORMATICA.COM.BR 15

public class ControlPrimo extends HttpServlet { private static final long serialversionuid = 1L; public ControlPrimo() { super(); } protected void dopost(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { Integer n = Integer.parseInt((request.getParameter("N1"))); Integer i = 1; if (n == 2 n == 3) { request.setattribute("primo", n + " é primo!!!"); i--; } else if (n == 1 n == 0) { request.setattribute("primo", "Digite um valor maior que 1..."); i--; } else if (n % 2 == 0) { request.setattribute("primo", n + " é par!!!"); i--; } if (i > 0) { i = Controle.PRIMO.operacao(n, (int) (Math.round(Math.sqrt(n)))); if (i == 1) { request.setattribute("primo", n + " é primo!!!"); } else { request.setattribute("primo", n + " não é primo!!!<br>é um número divisível por " + i); } WWW.COTIINFORMATICA.COM.BR 16

} request.getrequestdispatcher("destino.jsp").forward(re quest, response); } } Precisamos criar uma página JSP, e colocar nela o formulário que irá enviar via POST o número digitado para o Servlet ControlPrimo. Para criar uma nova página JSP, primeiro clicamos com o botão direito em WebContent e selecionamos New -> JSP File. WWW.COTIINFORMATICA.COM.BR 17

Em seguida, damos um nome ao arquivo JSP e clicamos Next. Para o nosso projeto, na tela seguinte, selecionamos o template pronto New JSP File (html 5), como na imagem abaixo. Depois clicamos em Finish. WWW.COTIINFORMATICA.COM.BR 18

WWW.COTIINFORMATICA.COM.BR 19

sistema.jsp <!DOCTYPE html> <html lang="pt-br"> <head> <meta charset="utf-8"> <title>números Primos</title> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12. 1/jquery-ui.css" /> <script type="text/javascript" src="https://code.jquery.com/jquery-3.2.1.js"></script> <script type="text/javascript" src="https://code.jquery.com/ui/1.12.1/jqueryui.js"></script> <link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/cs s/bootstrap.min.css" rel="stylesheet"> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/ bootstrap.min.js"></script> <script> $(document).ready(function() { var txtn1 = ""; function dadospagina() { } txtn1 = $("#N1").val(); $("#btn1").on('click', function() { dadospagina(); $.ajax({ url : "ControlPrimo", method : "POST", data : { N1 : txtn1, WWW.COTIINFORMATICA.COM.BR 20

} }).done(function(resultado) { $("#resposta1").html(resultado); }); }); }); </script> </head> <body style="padding: 25px 50px; width: 800px; margin: auto; background-color: #ededed;"> <div class="container"> <h3 style="text-align: center;">números Primos</h3> <hr style="border: 0; height: 1px; backgroundimage: linear-gradient(to right, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.75), rgba(0, 0, 0, 0));"> <form id="form" style="margin-top: 20px;"> Digite o Número:<br> <img src="https://static.todamateria.com.br/upload/ta/be/tabelap rimos1000.jpg" style="float: right; width: 400px; marginbottom: 20px;"> <input type="number" step=1 name="n1" size="10" id="n1"><br> <br> <button type="button" id="btn1" class="btn btnprimary">enviar AJAX</button> <br> </form> <br> <br> <div id="resposta1" style="color: #4B0082;">Aqui vai aparecer a resposta...</div> </div> </body> </html> WWW.COTIINFORMATICA.COM.BR 21

Na tag <head>, vemos os links CDN de todos os recursos de que vamos necessitar: JQuery, JQuery-UI, Bootstrap. Logo abaixo desses links temos a tag <script> que marca o início das funções JQuery e AJAX que vamos utilizar. $(document).ready(function() { No momento em que a página é carregada, inicia o código [veja abaixo] que "zera" o valor da variável txtn1, que vamos utilizar para envio do número digitado no formulário html. var txtn1 = ""; Abaixo desse código, existe o código da função que vai instanciar a variável txtn1 com o valor inserido no formulário html. function dadospagina() { txtl1 = $("#N1").val(); }.val() indica que o valor vem do formulário html, no caso, do input com o id= N1. E, terminando esse trecho de código, temos a função que é disparada no evento do clique no botão btn1 e, via AJAX, chama o servlet ControlTriangulo enviando via POST os valores de txtn1. $("#btn1").on('click', function() { dadospagina(); $.ajax({ url : "ControlPrimo", method : "POST", data : { N1 : txtn1 } }).done(function(resultado) { $("#resposta1").html(resultado); WWW.COTIINFORMATICA.COM.BR 22

Abaixo da tag <script> temos o formulário html onde vamos digitar o número inteiro que queremos saber se é primo ou não. As classes CSS utilizadas nesse layout são do BootStrap, que incluímos na tag <head>. Ex: class="container" class="btn btn-primary" Nessa página, também existe uma imagem com uma lista de números primos até 1000 para facilitar os testes. destino.jsp <%@ page language="java" contenttype="text/html; charset=utf-8" pageencoding="utf-8"%> <strong> ${primo} </strong> Essa é a última página de nosso projeto. Nela serão inseridos os dados enviados pelo Servlet, via expression language..done(function(resultado) { $("#resposta1").html(resultado); O trecho de código acima está na página sistema.jsp, e pega o que foi enviado pelo Servlet em resposta ao processamento da requisição enviada via formulário HTML; e essa resposta, que é o conteúdo da página destino.jsp, é inserida no html da div com o id resposta1, substituindo o texto Aqui vai aparecer a resposta... WWW.COTIINFORMATICA.COM.BR 23

Tela do sistema ao carregar WWW.COTIINFORMATICA.COM.BR 24

Tela do sistema com a resposta se o número digitado é primo ou não. Não se esqueça de testar com os valores 0 e 1 também. WWW.COTIINFORMATICA.COM.BR 25