Baixe o app para aproveitar ainda mais
Prévia do material em texto
Desenvolvimento de Aplicações Web Questões Objetivas Questão 1 Marque a alternativa que apresenta o protocolo utilizado na troca de arquivos de hipertexto na internet. (a) RIP (b) SNMP (c) HTTP (d) NFS (e) DNS Questão 2 Marque a alternativa que apresenta o nome do servidor web mais usado atualmente. (a) Lynx (b) BIG-IP (c) Varnish (d) Apache (e) Google Questão 3 Marque a alternativa que apresenta a estrutura básica de uma página web que usa HTML. a) <head>..</head><body>...</body> b) <html><head>..</head></html> c) <html><head>..</head><body>...</body></html> d) <html><body>...</body><head>..</head></html> e) <head><html>..</ html ><body>...</body></ head > Questão 4 Linguagem em formato script usado para definir a APARÊNCIA (DESIGN) do portal a) Java b) Javascript c) CSS d) HTML e) SGML Questão 5 É uma linguagem de programação que é executada no lado cliente, pelo navegador do usuário. Esta linguagem é focada na interação com o usuário. Marque a alternativa que apresenta o nome dessa linguagem. a) Java b) Javascript c) PHP d) HTML e) SGML Questão 6 Em um formulário HTML, um dos atributos disponíveis é o ACTION . Marque a alternativa que apresenta um possível valor desse atributo. a) N, fornecido pelo usuário, para o cálculo de do n-ésimo termo da série de Fibonacci b) O endereço de um programa no servidor c) POST d) TYPE e) SUBMIT Questão 7 Em um formulário HTML, um dos atributos disponíveis é o METHOD. Marque a alternativa que apresenta um possível valor desse atributo. a) N, fornecido pelo usuário, para o cálculo de do n-ésimo termo da série de Fibonacci b) O endereço de um programa no servidor c) POST d) TYPE e) SUBMIT Questão 8 Marque a alternativa que apresenta o parâmetro do método doGet responsável por encapsular os dados do cliente. a) REQUEST b) RESPONSE c) SUBMIT d) POST e) GET Questão 9 Marque a alternativa que apresenta o parâmetro do método doGet responsável por encapsular que serão enviados para o cliente. a) REQUEST b) RESPONSE c) SUBMIT d) POST e) GET Questão 10 Marque a alternativa que apresenta o nome do método que é chamado quando é feita uma requisição do tipo POST em um servlet. a) doGet b) doPost c) REQUEST d) RESPONSE e) SUBMIT Questão 11 Marque a alternativa que apresenta a forma correta para vincularmos um estilo à uma página HTML. (a) inline, incorporado e externo. (b) internos, externos e em arquivo. (c) inline, outline e externo. (d) inline, incorporado e interno. (e) incorporado, outline e externo. Questão 12 Considere a figura 1. Figura 1: tela; Marque a alternativa que apresenta a linha de código que deverá ser usada para obter a janela acima. (a) prompt(“A página em localhost diz:”); (b) prompt(“Digite sua idade”); (c) dialog(“Digite sua idade”); (d) dialog(“A página em localhost diz:”); (e) prompt(“A página em localhost diz:”, “Digite a sua idade”); Questão 13 Marque a alternativa que apresenta a resposta correta, que informa a relação entre um servlet e um jsp (a) Um servlet é traduzido para um jsp. (b) Um jsp é traduzido para um servlet. (c) Um jsp é compilado para um servelt. (d) Um servlet é compilado para um jsp. (e) Não há relação. Questão 14 Considere a cor em hexadecimal: #1234A5. Marque a alternativa que apresenta a cor predominante no hexadecimal apresentado. (a) vermelho (b) verde (c) azul (d) laranja (e) amarelo Questão 15 Marque a alternativa que possui o comando que indica para o navegador qual é a principal linguagem que será utilizada na página html. (a) DOCTYPE (b) HTML (c) LANG (d) LINK (e) HEAD Questão 16 Para obter o resultado contido na segunda linha da figura abaixo (Cabeçalho nível 2), devemos usar a tag da opção: (a) <h1> (b) <h2> (c) <h3> (d) <h4> (e) <h5> Questão 17 Marque a alternativa que contém a tag usada para fazer uma “linha horizontal“. (a) <br /> (b) <hr /> (c) <lb /> (d) <p /> (e) \n Questão 18 Marque a alternativa que contém a tag usada para fazer uma lista não ordenada. (a) <al /> (b) <el /> (c) <il /> (d) <ol /> (e) <ul /> Questão 19 Deseja-se colocar a fórmula abaixo em uma página HTML. 𝑥"=2 Para isso usaremos a tag da alternativa (a) <b> (b) <i> (c) <small> (d) <sup> (e) <sub> Questão 20 Considere o texto: “O homem é do tamanho do seu sonho.” Essa citação é de Fernando Pessoa. Para colocar em uma página e dando a merecida ênfase necessária, usamos a tag: (a) <b> (b) <i> (c) <strong> (d) <sup> (e) <sub> Questão 21 Na tag select, fornecemos ao usuário uma lista de opções, na qual poderá ser escolhido um único elemento. Porém algumas vezes deseja-se que o usuário escolha mais de uma opção. Para que esta alteração seja necessária, acrescentamos na tag select o valor: (a) single (b) selected (c) chosed (d) multiple (e) optgroup Questão 22 Marque a alternativa que não apresenta uma categoria de valor para uma regra CSS. (a) palavra-reservada (b) string (c) número (d) número não negativo (e) número com unidade de medida Questão 23 Marque a alternativa que apresenta o nome da forma de vincular a folha de estilo à página de acordo com: <p style=”color:white;"> (a) incorporados (b) outline (c) externos (d) inline (e) hiperlinkados Questão 24 Marque a alternativa que possui o comando que indica para o navegador qual é a especificação do código que será utilizada na página html. (a) DOCTYPE (b) HTML (c) LANG (d) LINK (e) HEAD Questão 25 Para obter o resultado contido na primeira linha da figura abaixo (Cabeçalho nível 1), devemos usar a tag da opção: (a) <h1> (b) <h2> (c) <h3> (d) <h4> (e) <h5> Questão 26 Marque a alternativa que contém a tag usada para fazer uma “quebra de linha”. (a) <br /> (b) <hr /> (c) <lb /> (d) <p /> (e) \n Questão 27 Marque a alternativa que contém a tag usada para fazer uma lista ordenada. (a) <al /> (b) <el /> (c) <il /> (d) <ol /> (e) <ul /> Questão 28 Deseja-se colocar a fórmula abaixo em uma página HTML. 𝑥#=2 Para isso usaremos a tag da alternativa (a) <b> (b) <i> (c) <small> (d) <sup> (e) <sub> Questão 29 Considere o texto: “O homem é do tamanho do seu sonho.” Essa citação é de Fernando Pessoa. Para colocar em uma página e dando a merecida ênfase necessária, usamos a tag: (a) <em> (b) <i> (c) <small> (d) <sup> (e) <sub> Questão 30 Na tag select, para que uma das opções já venha pré-selecionada, usamos: (a) single (b) selected (c) chosed (d) multiple (e) optgroup Questão 31 Marque a alternativa que apresenta a categoria utilizada na regra CSS: p{color:red;}. (a) palavra-reservada (b) string (c) número (d) palavra-chave (e) número com unidade de medida Questão 32 Marque a alternativa que apresenta o nome da forma de vincular a folha de estilo à página de acordo com: <head> <style type="text/css" media="all"> body { margin: 0; padding: 0; font-size: 80%; color: black; background: white; } </style> </head> (a) incorporados (b) outline (c) externos (d) inline (e) hiperlinkados Questão 33 Considere que temos um servlet chamado calculo. Em um formulário html o atributo action para este servlet deverá ser: (a) calculo (b) calculo.java (c) calculo.jsp (d) calculo.class (e) servlet.calculo Questão 34 No método GET o tipo de codificação usada é: (a) application/x-www-form-urlencoded(b) application/x-www-form-encoded (c) multipart/form-data (d) multipart/form-data-encoded (e) application/x-www-form-urldecoded Questão 35 Padrão de resposta HTTP informando que a solicitação foi respondida com sucesso: (a) 200 (b) 203 (c) 205 (d) 307 (e) 404 Questão 36 Considere a versão do protocolo HTTP na coluna da esquerda e as descrições da coluna da direita. Marque a alternativa que apresenta a correlação correta. 1. HTTP 0.9 ( ) Uma conexão para vários recursos 2. HTTP 1.0 ( ) Transfere dados em formato ASCII 3. HTTP 1.1 ( ) Priorização no fornecimento de recursos. 4. HTTP 2.0 ( ) Uma conexão para cada recurso (a) 2-4-1-3 (b) 3-4-1-2 (c) 2-1-4-2 (d) 3-1-4-2 (e) 1-2-3-4 Questão 37 Marque a opção que apresenta o tipo de INPUT utilizado para o uso de senhas um formulário HTML. (a) number (b) password (c) keygen (d) text (e) passwd Questão 38 Marque a opção que apresenta o tipo de dado retornado pelo método getParameter de um objeto do tipo HttpServletRequest (a) Enumeration (b) String [] (c)String (d) boolean (e) void Questão 39 Considere a saída em um navegador web conforme a figura 1. *### #*## ##*# ###* Figura 1: Saída do algoritmo Marque a alternativa que apresenta o scriptlet responsável por esta saída. (a) <%= for(int i=2; i<6; i++){ for(int j=2; j<6; j++) if(i==j) out.print("*"); else out.print("#"); out.println(""); } %> (b) <%! for(int i=2; i<6; i++){ for(int j=2; j<6; j++) if(i%j==0) out.print("*"); else out.print("#"); out.println(""); } %> (c) <% for(int i=2; i<6; i++) for(int j=2; j<6; j++){ if(i%j==0) out.print("*"); else out.print("#"); out.println(""); } %> (d) <% for(int i=2; i<6; i++){ for(int j=2; j<6; j++) if(i%j==0) out.print("*"); else out.print("#"); out.println(""); } %> (e) <% for(int i=2; i<6; i++){ for(int j=2; j<6; j++){ if(i==j) out.print("*"); else out.print("#"); out.println(""); } %> Questão 40 Em um tráfego de redes que foi capturado, há todo o fluxo de comunicação entre um navegador Chrome e um servidor web apache. Neste tráfego há um pacote TCP com a flag SYN configurada com o valor 1 e o número de sequencia 3141592. Considerando que este pacote é o primeiro que foi enviado, na camada de transporte, entre o cliente e o servidor acima, marque a alternativa correta. (a) A porta TCP utilizada no cliente é, necessariamente, 80, considerando as condições normais de comunicação entre o cliente e o servidor (b) Este pacote utiliza, necessariamente, a flag RST configurada com o valor 0, considerando as condições normais de comunicação entre o cliente e o servidor (c) A porta UDP utilizada no cliente é, necessariamente, 80, considerando as condições normais de comunicação entre o cliente e o servidor (d) O número de sequencia utilizado no próximo pacote TCP da comunicação é, necessariamente, 3141592, considerando as condições normais de comunicação entre o cliente e o servidor (e) o número de sequencia utilizada no próximo pacote TCP da comunicação é, necessariamente, 3141593, considerando as condições normais de comunicação entre o cliente e o servidor Questão 41 Considere a figura 1, parte de uma tela capturada de um site na web. Figura 1:Captura de tela de um site na internet Marque a alternativa que apresenta a informação correta. (a) Nesta figura possui um componente de um formulário HTML que foi gerado usando uma folha de estilo (b) Nesta figura possui um componente de um formulário HTML que foi gerado usando uma linha de código HTML (c) Nesta figura possui um componente de um formulário HTML que foi gerado usando uma linha de código escrito em Javascript (d) Nesta figura possui um componente de um formulário HTML que foi gerado usando uma linha de código HTML e uma folha de estilo (e) Nesta figura possui um componente de um formulário HTML que foi gerado pela seguinte linha de código <input type=”text” name=”nome” length=”10”> Questão 42 Ao fazer uma pesquisa no google, um usuário percebeu que na barra de endereços do navegador apareceu o seguinte conteúdo: https://www.google.com.br/search?q=unicarioca&oq=unicarioca+&aqs=chrome..69i57j69i60l4j0.1577j0 j9&sourceid=chrome&ie=UTF-8 Marque a alternativa correta. (a) O formulário utilizado possui como valor para o atributo METHOD a string GET. (b) O formulário utilizado possui como valor para o atributo METHOD a string POST. (c) O formulário utilizado possui como valor para o atributo ACTION a string GET. (d) O formulário utilizado possui como valor para o atributo ACTION a string POST. (e) O formulário utilizado possui como valor para o atributo METHOD a string ./search. Questão 43 Ao fazer uma pesquisa no google, um usuário percebeu que na barra de endereços do navegador apareceu o seguinte conteúdo: https://www.google.com.br/search?q=unicarioca&oq=unicarioca+&aqs=chrome..69i57j69i60l4j0.1577j0 j9&sourceid=chrome&ie=UTF-8#q=cora%C3%A7%C3%A3o Marque a alternativa correta. (a) O tipo de codificação utilizada no formulário quando o método é GET é application/x-www-form- urlencoded (b) O tipo de codificação utilizada no formulário quando o método é GET é multipart/form-data (c) O tipo de codificação utilizada no formulário quando o método é GET não é importante, uma vez que é realizada a decodificação adequada no lado cliente (d) Esta pesquisa não poderá ser armazenada no histórico, a menos que se instale um determinado plugin, disponível para todos os navegadores (e) Devido ao método de codificação utilizado, esta pesquisa torna-se a mais segura disponível no mercado Questão 44 Considere as figuras 1 e 2. Marque a alternativa que apresenta o atributo que acrescentamos na tag select para transformar select da figura 1 no select da figura 2. Figura 1 Figura 2 a) selected b) value=multiple c) multiple d) value=selected e) name=time Questão 45 Ao recuperarmos os nomes dos atributos disponíveis em uma requisição, usamos o método getAttributeNames(). Marque a alternativa que possui o tipo que é retornado ao usar esse método. a)java.lang.String; b)java.lang.String[]; c)java.util.Enumeration; d)ServletContext; e)java.lang.Object; Questão 46 O método setContentType() é usado para definir o tipo de informação que será enviada para o cliente. Marque a alternativa que apresenta a classe que esse método foi definida. a)ServletResponse b)ServletRequest c)HttpServletResponse d)HttpServletRequest e)Servlet Questão 47 Considere o segmento de código: <%}%> a) Action b) Declaration c) Scriptlet d) Directive e) Scripting Questão 48 Um desenvolvedor estava escrevendo um formulário para validação de login e senha. O código do formulário é: <form action = “validar” method = “post”> O código do servlet é: public class ValidarSenha extends HttpServlet{ public void doPost(.... Sabendo que tudo funcionou corretamente, marque a alternativa correta. a) A action validar foi redirecionada corretamente para o servlet, uma vez que os parâmetros servlet- name e servlet-class estavam configurados corretamente. b) A action validar foi redirecionadacorretamente para o servlet, uma vez que o servlet de controle padrão do java funciona dessa forma. c) A action validar foi redirecionada corretamente para o servlet, uma vez que o valor da action foi dado corretamente. d) A action validar foi redirecionada corretamente para o servlet, uma vez que os parâmetros servlet- name e url-pattern estavam corretamente configurados. e) A action validar foi redirecionada corretamente para o servlet, uma vez que foi escolhido o método correto: POST. Questão 49 Considere a figura 1: Figura 1: HTTP Status 500 Marque a alternativa que, provavelmente, apresenta a ação do desenvolvedor que gerou esta tela. a) Alterou a página index.html para Index.html. b) Escreveu um servlet com o código: out.println(“HTTP Status 500 – ja”);. c) Escreveu um servlet com erro. d) Fez uma classe em Java sem herdar a classe HttpServlet. e) Escreveu um formulário HTML sem colocar o código: <!DOCTYPE html> Questão 50 Considere a figura 2. Figura 2: Captura do AVA; Esta imagem foi capturada diretamente do AVA você tem acesso. É do local onde você envia mensagem para os seus professores e outros alunos da Unicarioca. Sobre a imagem acima, marque a alternativa correta. a) Esta imagem tem um formulário HTML com um elemento do tipo INPUT cujo TYPE é TEXT. b) Esta imagem tem um formulário HTML com um elemento do tipo INPUT cujo TYPE é TEXTAREA. c) Esta imagem tem um formulário HTML com um elemento do tipo INPUT cujo TYPE é MESSAGE. d) Esta imagem em um formulário HTML com um elemento do tipo TEXTAREA. e) Esta imagem tem um formulário HTML com um elemento do tipo TEXT. Questão 51 Considere o seguinte segmento de código. <% int numero = Integer.parseInt( request.getParameter(“numero”)); out.println(String.valueOf(numero)); %> Marque a alternativa que apresenta um segmento de código que pode substituir o segmento acima apresentado. a) <%= request.getParameter(“numero”)%> b) <%@ request.getParameter(“numero”)%> c) <%! request.getParameter(“numero”)%> d) <% request.getParameter(“numero”)%> e) <$ request.getParameter(“numero”)$> Questão 52 Em um tráfego de redes que foi capturado, há todo o fluxo de comunicação entre um navegador do cliente, que no caso foi o Chrome e um servidor web, que no caso foi um Apache Tomcat. Neste tráfego há um pacote TCP com a flag SYN configurada com o valor 1 e o número de sequencia 3141592. Considerando que este pacote é o primeiro que foi enviado, na camada de transporte, entre o cliente e o servidor acima, marque a alternativa correta. a) A porta TCP utilizada no cliente é, necessariamente, 80, considerando as condições normais de comunicação entre o cliente e o servidor. b) Este pacote utiliza, necessariamente, a flag URG configurada com o valor 0, considerando as condições normais de comunicação entre o cliente e o servidor. c) A porta UDP utilizada no cliente é, necessariamente, 80, considerando as condições normais de comunicação entre o cliente e o servidor. d) O número de sequencia utilizado no próximo pacote TCP da comunicação é, necessariamente, 3141592, e possui as flags SYN e ACK configuradas como 0 e 1 respectivamente, considerando as condições normais de comunicação entre o cliente e o servidor. e) o número de sequencia utilizada no próximo pacote TCP da comunicação é, necessariamente, 3141593, e possui as flags SYN e ACK configuradas como 0 e 1 respectivamente, considerando as condições normais de comunicação entre o cliente e o servidor. Questão 53 Considere a imagem abaixo. Figura 1: captura de tela do software wireshark; Nesta figura é apresentada uma tabela contendo detalhes do tráfego de redes entre os computadores de endereço 192.168.1.104 e 216.18.166.136. Marque a alternativa que apresenta a explicação mais adequada com relação ao que está ocorrendo. a) É o 3-way handshake entre os equipamentos com endereços citados, onde o servidor enviou dois pacotes e o cliente apenas um. b) Está ocorrendo a troca de pacotes para o estabelecimento da comunicação entre os equipamentos, usando o protocolo HTTP. c) Está ocorrendo a troca de pacotes para o estabelecimento da comunicação entre os equipamentos, mas somente um destes está usando o protocolo HTTP. d) Está ocorrendo o estabelecimento da conexão através da troca de pacotes TCP, conhecido como 3- way handshake, ou conexão de três vias. e) Está ocorrendo a execução do comando HTTP 1.1 GET /. Questão 54 Considere a imagem abaixo. Figura 2: Segmento de uma página web. Marque a opção que apresenta o código HTML utilizado. a) <select name="example"> <option value="News">News</option> <option value="Sports">Sports</option> <option value="Music">Music</option> <option value="Java">Java</option> <option value="Web">Web</option> </select> b) <input type=text value="News">News</input> <input type=text value="Sports">Sports</input> <input type=text value="Music">Music</input> <input type=text value="Java">Java</input> <input type=text value="Web">Web</input> c) <textarea> News Sports Music Java Web </textarea> d) <input type= radio value="News">News</input> <input type= radio value="Sports">Sports</input> <input type= radio value="Music">Music</input> <input type= radio value="Java">Java</input> <input type= radio value="Web">Web</input> e) <select name="example" multiple> <option value="News">News</option> <option value="Sports">Sports</option> <option value="Music">Music</option> <option value="Java">Java</option> <option value="Web">Web</option> </select> Questão 55 O conteúdo integral de um arquivo é apresentado abaixo. A { color: white; background-color: red} P { color: green} Esse conteúdo é do tipo: a) HTML. b) CSS. c) JAVASCRIPT. d) JSP. e) JAVA. Questão 56 A respeito das tecnologias utilizadas na Internet, é correto afirmar que: a) o Java Script pode ser utilizado para validar informações digitadas em campos de entrada de dados de um formulário escrito em HTML. b) o código escrito em Java Script é executado somente nos servidores Web, não sendo executado nos browsers. c) um arquivo JSP (Java Server Pages) pode ser executado tanto nos servidores Web como nos browsers. d) os tags <@ e @> delimitam código escrito em Java Script em uma página JSP (Java Server Pages). e) em JSP (Java Server Pages), somente é possível utilizar as linguagens Java e Java Script. Questão 57 Considere a imagem abaixo. Figura 3: Captura de tela do wireshark; Marque a opção que apresenta o tipo de resposta informada do servidor ao cliente. a) Execução realizada com sucesso. b) Redireciomanto realizado. c) Arquivo não encontrado. d) Erro interno do servidor. e) Servidor não encontrado. Fatorial Implemente um portal que calcule o fatorial de um número fornecido por um usuário, usando servlet Arquivo: index.html <html> <head> <title>TODO supply a title</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body> <div> <form action="fatorial" method="post"> n=<input type="number" name="n"> <input type="submit" value="calcular"> </form> </div> </body> </html> Arquivo: servlet.java public class servlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); try (PrintWriter out = response.getWriter()) { out.println("<!DOCTYPEhtml>"); out.println("<html>"); out.println("<head>"); out.println("<title>Servlet servlet</title>"); out.println("</head>"); out.println("<body>"); out.println((new fatorial(Integer.parseInt(request.getParameter("n"))))); out.println("<form action=\"fatorial\" method=\"post\">\n" + " n=<input type=\"number\" name=\"n\" value="+Integer.parseInt(request.getParameter("n"))+">\n" + " <input type=\"submit\" value=\"calcular\">\n" + " </form>"); out.println("</body>"); out.println("</html>"); } } } Arquivo: fatorial.java public class fatorial { private int n; public fatorial(int n) { this.n=n; } private int calculo(int n) { if(n<=1) return 1; else return n*calculo(n-1); } @Override public String toString() { if(this.n>=0) return "O fatorial de " + this.n + " vale " + String.valueOf(calculo(this.n)); else return "Não existe fatorial de número negativo (n="+this.n+")"; } } Fibonacci Implemente um portal em Java usando Servlet, JSP no padrão MVC. Arquivo: index.html <html> <head> <title>TODO supply a title</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body> <form action="calculo" method="post"> n:<input type="number" name="n"> <input type="submit" name="calcular"> </form> </body> </html> Arquivo: Calculo.java public class Calculo extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); try(PrintWriter out = response.getWriter()) { try{ Fibonacci f = new Fibonacci(Integer.parseInt(request.getParameter("n"))); request.setAttribute("fibonacci", f.calculo()); request.setAttribute("n", request.getParameter("n")); ServletContext app = this.getServletContext(); RequestDispatcher rd = app.getRequestDispatcher("/resposta.jsp"); rd.forward(request, response); } catch(NumberFormatException e) { request.setAttribute("error", "Entrada Inválida: parâmetro não é um número válido."); ServletContext app = this.getServletContext(); RequestDispatcher rd = app.getRequestDispatcher("/error.jsp"); rd.forward(request, response); } catch(Exception e) { request.setAttribute("error", "Erro no processamento da aplicação"); ServletContext app = this.getServletContext(); RequestDispatcher rd = app.getRequestDispatcher("/error.jsp"); rd.forward(request, response); } } } } Arquivo: Fibonacci.java public class Fibonacci { private int n; public int getN() { return n; } public void setN(int n) { this.n = n; } public Fibonacci(int n) { this.setN(n>=0?n:0); } private int recursivo(int n) { if(n==0 || n==1) return n; return recursivo(n-1) + recursivo(n-2); } public int calculo() { return recursivo(this.getN()); } } Arquivo: resposta.jsp <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body> O Fibonacci de <%=request.getAttribute("n")%> vale <%=request.getAttribute("fibonacci")%>. </body> </html> Arquivo: error.jsp <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body> Sua requisição não pode ser processada: <% out.println(request.getAttribute("error")); %> </body> </html> Calculadora Implemente uma calculadora em um portal em Java. Esta calculadora deverá realizar as quatro operações e deverá ser impresso na tela todas as operações que foi realizada. Arquivo: index.html <html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <form action="calculadora" method="post"> operando1:<input type="text" name="operando1"><br> operando2:<input type="text" name="operando2"><br> <select name="operacao"> <option option="+">+</option> <option option="-">-</option> <option option="/">/</option> <option option="*">*</option> </select><br> <input type="submit"> </form> </body> </html> Arquivo: calculadora.java public class calculadora extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try { double operando1 = Double.parseDouble(request.getParameter("operando1")); double operando2 = Double.parseDouble(request.getParameter("operando2")); char operacao = request.getParameter("operacao").charAt(0); double resultado = 0; String Resultado = ""; switch(operacao) { case '+': resultado = operando1 + operando2; break; case '-': resultado = operando1 - operando2; break; case '*': resultado = operando1 * operando2; break; case '/': if(operando2!=0) resultado = operando1 / operando2; break; } String Historico = (request.getParameter("historico")==null)?"":request.getParameter("historico"); if(!(operando2==0 && operacao=='/')) { Historico += operando1; Historico += operacao; Historico += operando2; Historico += "="; Historico += resultado; Historico += "<br>"; } else out.println("ERRO: DIVISAO POR ZERO!"); out.println(Historico); out.println("<form action=\"calculadora\" method=\"post\">"); if(!(operando2==0 && operacao=='/')) { out.println("operando1:<input type=\"text\" name=\"operando1\" value="+resultado+"><br>"); out.println("operando2:<input type=\"text\" name=\"operando2\" ><br>"); } else { out.println("operando1:<input type=\"text\" name=\"operando1\"><br>"); out.println("operando2:<input type=\"text\" name=\"operando2\"><br>"); } out.println("<input type=\"hidden\" name=\"historico\"value='"+Historico+"'><br>"); out.println("<select name=\"operacao\">"); out.println("<option option=\"+\">+</option>"); out.println("<option option=\"-\">-</option>"); out.println("<option option=\"/\">/</option>"); out.println("<option option=\"*\">*</option>"); out.println("</select><br>"); out.println("<input type=\"submit\">"); out.println("</form>"); } finally { out.close(); } } } Código Morse Implemente um portal em Java que traduza uma frase fornecida por um usuário em código Morse. Arquivo: index.html <!DOCTYPE html> <html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <form action="morse" method="post"> Palavra:<input type="text" name="palavra"><input type="submit"> </form> </body> </html> Arquivo: morse.java public class morse extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try { String palavraMorse = (new morsedecode()).execute(request.getParameter("palavra").toUpperCase()); out.println("<html>"); out.println("<head>"); out.println("<title>Servlet morse</title>"); out.println("</head>"); out.println("<body>"); out.println("<body>"); out.println("A palavra decodificada é:" + palavraMorse +"<br>"); out.println("<form action=\"morse\" method=\"post\">"); out.println("Palavra:<input type=\"text\" name=\"palavra\"><input type=\"submit\">"); out.println("</form>"); out.println("</body>"); out.println("</html>"); } finally { out.close(); } } } Arquivo: morsedecode.java public class morsedecode { protected HashMap CodigoMorse; public morsedecode() { CodigoMorse = new HashMap<String, String>(); CodigoMorse.put("A", ".-"); CodigoMorse.put("B", "-..."); CodigoMorse.put("C", "-.-."); CodigoMorse.put("D", "-.."); CodigoMorse.put("E", "."); CodigoMorse.put("F", "..-."); CodigoMorse.put("G", "--."); CodigoMorse.put("H", "...."); CodigoMorse.put("I", ".."); CodigoMorse.put("J", ".---"); CodigoMorse.put("K", "-.-"); CodigoMorse.put("L", ".-.."); CodigoMorse.put("M", "--"); CodigoMorse.put("N", "-."); CodigoMorse.put("O", "---"); CodigoMorse.put("P", ".--."); CodigoMorse.put("Q", "--.-"); CodigoMorse.put("R", ".-."); CodigoMorse.put("S", "..."); CodigoMorse.put("T", "-"); CodigoMorse.put("U", "..-"); CodigoMorse.put("V", "...-"); CodigoMorse.put("W", ".--"); CodigoMorse.put("X", "-..-"); CodigoMorse.put("Y", "-.--"); CodigoMorse.put("Z", "--.."); CodigoMorse.put("1", ".----"); CodigoMorse.put("2", "..---"); CodigoMorse.put("3", "...--"); CodigoMorse.put("4", "....-"); CodigoMorse.put("5", "....."); CodigoMorse.put("6", "-...."); CodigoMorse.put("7", "--..."); CodigoMorse.put("8", "---.."); CodigoMorse.put("9", "----."); CodigoMorse.put("0", "-----"); } public String execute(String palavra) { String resposta = ""; for(int i=0; i<palavra.length(); i++) resposta += this.CodigoMorse.get(palavra.substring(i, i+1)); return resposta; } } Inversão de palavras Implemente um portal em java que inverta uma palavra fornecida pelo usuário Arquivo: index.jsp <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body> <form action="acao.jsp" method="post"> <input type="text" name="palavra"> <input type="submit"> </form> </body> </html> Arquivo: acao.jsp <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body> <% String palavra = request.getParameter("palavra"); for(int i=palavra.length()-1; i>=0; i--) out.println(palavra.charAt(i)); %> </body> </html> Outra Solução: Arquivo: index.jsp <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body> <form action="acao2.jsp" method="post"> Palavra: <input type="text" name="palavra"><br> Método: <select name="metodo"> <option value="0"> Com String</option> <option value="1"> Com StringBuilder</option> <input type="submit"> </select> </form> </body> </html> arquivo: acao2.jsp <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body> <%! String palavra; StringBuilder palavra2; int metodo; %> <% palavra = request.getParameter("palavra"); palavra2 = new StringBuilder(request.getParameter("palavra")); metodo = Integer.parseInt(request.getParameter("metodo")); switch (metodo) { case 0: String palavraInvertida = ""; for(int i=0; i<palavra.length(); i++) palavraInvertida += palavra.charAt(palavra.length()-i-1); out.println(palavraInvertida); break; case 1: out.println(palavra2.reverse()); } %> </body> </html> MMC Implemente uma página que calcule o MMC de dois números fornecidos pelo usuário Arquivo: index.jsp <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body> <form action="acao.jsp" method="post"> n1: <input type="text" name="n1"><br> n2: <input type="text" name="n2"><br> <input type="submit"> </form> </body> </html> Arquivo: acao.jsp <%@page contentType="text/html" pageEncoding="UTF-8"%> <%! int MMC(int num1, int num2) { int x,y,r,mmc; x = num1; y = num2; do { r = x % y; x = y; y = r; } while (r != 0); mmc = (num1 * num2) / x;return mmc; } %> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body> <%=MMC(Integer.parseInt(request.getParameter("n1")), Integer.parseInt(request.getParameter("n2")))%> </body> </html> Círculo (Área e Perímetro), Tipo de triângulo e Cifra de César Implemente um programa em Java para web para: Questão 1) Calcular a área e o perímetro de um círculo; Questão 2) Verificar se um triângulo é isósceles, escaleno ou equilátero; e Questão 3) Encriptar uma palavra fornecida pelo usuário, utilizando a Cifra de César. Arquivo: index.html <!DOCTYPE html> <html> <head> <title>AV1 - Desenvolvimento de Aplicações Web</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <a href="q1.html">Questão 1</a><br> <a href="q2.html">Questão 2</a><br> <a href="q3.html">Questão 3</a> </body> </html> arquivo: q1.html <html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <form action="servletq1" method="post"> Raio: <input type="text" name="raio"> <input type="submit"> </form> </body> </html> arquivo: q2.html <!DOCTYPE html> <html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <form action="servletq2" method="post"> L1: <input type="text" name="l1"><br> L2: <input type="text" name="l2"><br> L3: <input type="text" name="l3"><br> <input type="submit"> </form> </body> </html> arquivo:q3.html <!DOCTYPE html> <html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <form action="servletq3" method="post"> <input type="text" name="texto"> <input type="submit"> </form> </body> </html> arquivo: servletq1.java public class servletq1 extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try { double raio = Double.parseDouble(request.getParameter("raio")); out.println("<html>"); out.println("<head>"); out.println("<title>Servlet servletq1</title>"); out.println("</head>"); out.println("<body>"); out.println("Área: " + Math.PI * raio * raio + "<br>"); out.println("Perímetro: " + 2 * Math.PI * raio + "<br>"); out.println("</body>"); out.println("</html>"); } finally { out.close(); } } } arquivo: servletq2.java public class servletq2 extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try { double l1 = Double.parseDouble(request.getParameter("l1")); double l2 = Double.parseDouble(request.getParameter("l2")); double l3 = Double.parseDouble(request.getParameter("l3")); String triangulo=""; if(l1==l2 && l2==l3) triangulo = "Equilátero"; else if(l1!=l2 && l1!=l3 && l2!=l3) triangulo = "Escaleno"; else triangulo = "Isósceles"; out.println("<html>"); out.println("<head>"); out.println("<title>Servlet servletq2</title>"); out.println("</head>"); out.println("<body>"); out.println("Esse triângulo é " + triangulo); out.println("</body>"); out.println("</html>"); } finally { out.close(); } } } arquivo: servletq3.java public class servletq3 extends HttpServlet { protected String CifraCesar(String textoClaro) { String textoCifrado = ""; textoClaro = textoClaro.toUpperCase(); for(int i=0; i<textoClaro.length(); i++){ if(textoClaro.charAt(i)-65<26 && textoClaro.charAt(i)-65>=0) textoCifrado += (Character.toString((char)((textoClaro.charAt(i)- 65+3)%26+65))); else textoCifrado += textoClaro.charAt(i); } return textoCifrado; } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try { /* * TODO output your page here. You may use following sample code. */ out.println("<html>"); out.println("<head>"); out.println("<title>Servlet servletq3</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>Texto cifrado é " + CifraCesar(request.getParameter("texto")) + "</h1>"); out.println("</body>"); out.println("</html>"); } finally { out.close(); } } } Trocar Maiúscula por Minúscula Implemente um portal em Java que troque maiúsculas por minúsculas. Arquivo: index.html <!DOCTYPE html> <html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <form action="acao" method="post"> Palavra: <input type="text" name="palavra"> <input type="submit"> </form> </body> </html> arquivo: MaiusculasMinusculas.java public class MaiusculasMinusculas { private String palavra; public String getPalavra() { return palavra; } public void setPalavra(String palavra) { this.palavra = palavra; } public MaiusculasMinusculas(String palavra) { this.setPalavra(palavra); } private char paraMaiuscula(char letra) { return (char)(letra-32); } private char paraMinuscula(char letra) { return (char)(letra+32); } public String converter() { String novaPalavra=""; for(int i=0; i<palavra.length(); i++) { novaPalavra += ((palavra.charAt(i)>90)?paraMaiuscula(palavra.charAt(i)):paraMinuscula(palavra.charAt (i))); } return novaPalavra; } } arquivo: acao.java public class acao extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try { MaiusculasMinusculas m = new MaiusculasMinusculas(request.getParameter("palavra")); out.println(m.converter());} finally { out.close(); } } } Palindrome Implemente um portal em Java que verifique se uma palavra fornecida pelo usuário é Palindrome ou não Arquivo: index.html <!DOCTYPE html> <html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <form action="palindrome" method="post"> palavra:<input type="text" name="palavra"><input type="submit"> </form> </body> </html> arquivo: Texto.java public class Texto { public boolean Palindrome(String palavra) { boolean EhPalindrome=true; for(int i=0; i<=(palavra.length()/2); i++) { if(palavra.charAt(i)!=palavra.charAt(palavra.length()-1-i)) EhPalindrome = false; } return EhPalindrome; } } arquivo: palindrome.java public class palindrome extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try { String palavra = request.getParameter("palavra"); Texto text = new Texto(); out.println((text.Palindrome(palavra) ?"É Palindrome":"Não é palindrome")); } finally { out.close(); } } } Anagrama Implemente um portal em Java para verificar se duas palavras fornecidas pelo usuário são anagramas. Arquivo:index.html <html> <head> <title>TODO supply a title</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body> <div> <form action="ServletAnagrama" method="get"> Palavra1: <input type="text" name="palavra1"><br> Palavra2: <input type="text" name="palavra2"><br> <input type="submit"> </form> </div> </body> </html> arquivo:Anagrama.java public class Anagrama { public boolean verifica(String palavra1, String palavra2){ char P1[] = palavra1.toCharArray(); char P2[] = palavra2.toCharArray(); Arrays.sort(P1); Arrays.sort(P2); return Arrays.equals(P1, P2); } public static void main(String args[]){ Anagrama a = new Anagrama(); System.out.println(a.verifica("amor", "roma")?"S":"N"); System.out.println(a.verifica("amor", "ramo")?"S":"N"); System.out.println(a.verifica("amor", "rama")?"S":"N"); System.out.println(a.verifica("amor", "romo")?"S":"N"); System.out.println(a.verifica("amarganas", "granamasa")?"S":"N"); System.out.println(a.verifica("amarganas", "gramasa")?"S":"N"); } } arquivo: ServletAnagrama.java public class ServletAnagrama extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); try (PrintWriter out = response.getWriter()) { String palavra1 = request.getParameter("palavra1"); String palavra2 = request.getParameter("palavra2"); out.print(palavra1 + " e " + palavra2); if(!(new Anagrama()).verifica(palavra1, palavra2)) out.print(" não"); out.println(" são anagramas"); } } } CPF Implemente um portal em Java que verifique se um CPF fornecido pelo usuário é válido. Arquivo:index.html <html> <head> <title>TODO supply a title</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body> <form action="validar.jsp" method="post"> CPF: <input type="text" name="numero"><br> <input type="submit"> </form> </body> </html> arquivo: validar.jsp <%@page import="cadastros.CPF"%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <% String numero = request.getParameter("numero"); %> <jsp:useBean class="cadastros.CPF" id="cpf"></jsp:useBean> <% cpf.setCodigo(numero); %> <%=cpf.validar()?"Válido":"Inválido"%> arquivo:CPF.java public class CPF { private String codigo; public String getCodigo() { return codigo; } public void setCodigo(String codigo) { this.codigo = codigo; } private int digito(String sequencia){ int acumulado = 0; int tamanho = sequencia.length(); int J = 0; for(int i = (tamanho+1), j = 0; j < tamanho; i--, j++){ acumulado += (sequencia.charAt(j)-'0')*i; } J = acumulado % 11; if(J==0 || J==1)J=0; else J = 11-J; return J; } public boolean validar(){ if(codigo.charAt(9)==(digito(codigo.substring(0, 9))+'0')) if(codigo.charAt(10)==(digito(codigo.substring(0, 10))+'0')) return true; return false; } public static void main(String args[]){ String cpf = "70477802036"; CPF c = new CPF(); c.setCodigo(cpf); System.out.println(c.validar()?"Válido":"Não Válido"); } } Cartão de Crédito. Para a solução, considere o seguinte texto introdutório: Cartão de crédito, figura 1, é usado forma de pagamento eletrônico. É um cartão de plástico que pode conter ou não um chip e apresenta na frente o nome do portador, número do cartão e data de validade (pelo menos) e, no verso, um campo para assinatura do cliente, o número de segurança (CVV) e a tarja magnética (geralmente preta). A maioria dos cartões de crédito tem forma e tamanho padronizados, como especificado pelo padrão do ISO 7810. O cartão de crédito pode ser usado como meio de pagamento para comprar um bem ou contratar um serviço. O titular recebe mensalmente a fatura para pagamento no endereço indicado e pode escolher pagar o total cobrado, somente o mínimo ou algum valor intermediário, postergando o pagamento do restante para o mês seguinte mediante cobrança de juros. Figura 1: Cartão de Crédito O número do cartão de crédito é formado pela seguinte sequencia: ABBB BBCC CCCC CCCD, onde: - A: é o identificador principal da indústria, de acordo com a tabela 1; - BBBBB: é o identificador da instituição financeira, de acordo com a tabela 2; - CCCCCCCCC: indica o número da conta do usuário; e - D: é o dígito verificador. Tabela 1: Identificador da Industria Valor Descrição 1 e 2 Companhias Aéreas 3 Viagem e Entretenimento 4 e 5 Bancos e Instituições financeiras 6 Marketing e Bancos 7 Petróleo 8 Telecomunicações 9 Atribuição nacional Tabela 2: Operadora da instituição financeira Operadora Valor (ABBBBB) Visa 4XXXXX Mastercard 51XXXX 55XXXX Amex 34XXXX 37XXXX Diners 300XXX 305XXX 36XXXX 38XXXX A verificação da validade é realizada através de um operação matemática utilizando-se o dígitos do cartão. Para isso, é realizada a multiplicação de cada dígito pelo número 2 ou pelo número 1, de forma alternada, conforme tabela 3,tendo tomado como base o número do cartão de crédito presente na figura 1. Tabela 3: Primeira parte do exemplo de verificação da validade do número de cartão de crédito. Formato do número de cartão de crédito A B B B B B C C C C C C C C C D Número do cartão de crédito 1 2 3 4 5 6 7 8 9 8 7 6 5 4 3 2 Fator multiplicativo 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 Realiza-se a multiplicação número a número, conforme tabela 4. Tabela 4: Segunda parte do exemplo de verificação da validade do número de cartão de crédito. Número do cartão de crédito 1 2 3 4 5 6 7 8 9 8 7 6 5 4 3 2 Fator multiplicativo 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 Resultado 2 2 6 4 10 6 14 8 18 8 14 6 10 4 6 2 Quando o resultado da multiplicação realizada na operação anterior for um número maior do que 10, os algarismos que compõe o número são somados, resultando na tabela 5. Tabela 5: Segunda parte do exemplo de verificação da validade do número de cartão de crédito. Número do cartão de crédito 1 2 3 4 5 6 7 8 9 8 7 6 5 4 3 2 Fator multiplicativo 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 Resultado atualizado 2 2 6 4 10 1 6 14 5 8 18 9 8 14 5 6 10 1 4 6 2 A partir do resultado atualizado, os valores são somados, conforme equação 1. 2 + 2 + 6 + 4 + 1 + 6 + 5 + 8 + 9 + 8 + 5 + 6 + 1 + 4 + 6 + 2 = 74 Eq. 1 O valor resultado, obrigatoriamente, deverá ser divisível por 10. Se não o for, o número do cartão de crédito é inválido, conforme obtido através da equação 1. O cartão de crédito de número 4417 1234 5678 9113, por exemplo, é válido, uma vez que a operação realizada com os seus algarismos resulta no número 70 que é divisível por 10. a) Implemente uma aplicação para linha de comando, usando a linguagem Java, que, recebendo o número de cartão de crédito, por exemplo 4417 1234 5678 9113, informe se o mesmo é válido ou inválido. Implemente uma aplicação para web, usando servlet ou JSP (não deverá ser usado javascript), que, a partir do fornecimento de parte do número do cartão de crédito, por exemplo 4417 1234 5678 911, informe: b.1) O identificador da indústria, vide tabela 1; b.2) A operadora da instituição financeira (strings e imagem da bandeira), vide tabela 2; b.3) O dígito verificador D, conforme explicação realizada após a figura 1. Condições de implementação, deverão ser seguidas, caso contrário será penalizado: I) Deverá existir uma classe chamada CartaoCredito que deverá possuir TODAS as funcionalidades necessárias para verificação, validação, etc, relativo ao cartão de crédito; II) A classe citada no item I deverá, obrigatoriamente, ser usada nas duas questões; III) A classe que fará a interação do usuário deverá apenas instanciar outras classes e fornecer a saída necessária para o usuário. Não é permitido fazer operações nesta classe. Resolução arquivo: index.html <html> <head> <title>Cartão de Crédito</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body> <form action="validar" method="post"> número: <input type="text" name="numero"> <input type="submit"> </form> </body> </html> arquivo: CartaoCredito.java public class CartaoCredito { private String numero; public String getNumero() { return numero; } public void setNumero(String numero) { this.numero = numero; } public CartaoCredito(String numero) { this.numero = numero; } public CartaoCredito() { } public String getIdentificadorIndustria() { switch (this.getNumero().charAt(0)) { case '1': case '2': return ("Companhias Aéreas"); case '3': return ("Viagem e Entretenimento"); case '4': case '5': return ("Bancos e Instituições financeiras"); case '6': return ("Marketing e Bancos"); case '7': return ("Petróleo"); case '8': return ("Telecomunicações"); case '9': return ("Atribuição nacional"); default: return ("Erro"); } } public String getInstituicaoFinanceira() { switch (this.getNumero().charAt(0)) { case '4': return "Visa"; case '5': switch (this.getNumero().charAt(1)) { case '1': case '5': return "Mastercard"; default: return "Erro"; } case '3': switch (this.getNumero().charAt(1)) { case '4': case '7': return "Amex"; case '6': case '8': return "Diners"; case '0': switch (this.getNumero().charAt(2)) { case '0': case '5': return "Diners"; default: return "Erro"; } default: return "Erro"; } default: return "Erro"; } } public char getDigitoVerificador(){ char caracteres[] = this.getNumero().substring(0, this.getNumero().length()- 1).toCharArray(); int acumulado = 0; int fator=2; int multi; for(char digito: caracteres){ multi = (digito-'0')*fator; multi = (multi>=10)?(multi-9):multi; acumulado+=multi; fator=(fator==1)?2:1; } return (char) (10 - (acumulado%10) + '0'); } public boolean isValido(){ return this.getDigitoVerificador()==this.getNumero().charAt(this.getNumero().length()-1); } } arquivo: CartaoCreditoBandeira.java public class CartaoCreditoBandeira extends CartaoCredito{ public String getBandeira(){ switch(this.getInstituicaoFinanceira()){ case "Visa": return "visa.png"; case "Mastercard": return "mastercard.jpg"; case "Amex": return "amex.jpg"; case "Diners": return "diners.png"; default: return ""; } } public CartaoCreditoBandeira(String numero) { super(numero); } } arquivo: validar.java public class validar extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); try (PrintWriter out = response.getWriter()) { CartaoCreditoBandeira c = new CartaoCreditoBandeira(request.getParameter("numero")+"X"); out.println(c.getIdentificadorIndustria()); out.println(c.getInstituicaoFinanceira() + "<img src='"+c.getBandeira()+"'>"); out.println("Dígito Verificador: " + c.getDigitoVerificador()); } } }
Compartilhar