Primeiro exemplo de uso de páginas JSP Crie um arquivo html com o nome: index, e digite o código abaixo no Eclipse. Salve no seguinte diretório: C:\apache-tomcat-6.0.33\webapps\ROOT\Prog1\ Voces podem utilizar como editor para escrever o código HTML e jsp, o Dr. Java, o Context que pode ser baixado gratuitamente, ou mesmo o Bloco de Notas, salvado todos os arquivos dentro do diretório ROOT do Tomcat. O ideal e criar uma pasta para o programa que estamos testando, no entanto quando for fazer o teste da página no Browser, após startar o Tomcat no diretório /Bin deste e carregar nossa página no navegador, da seguinte forma: http://localhost:8080/prog1/ Observem que o diretório Prog1 é o nome que dei projeto (diretório), salvo dentro do diretório C:\apache-tomcat-6.0.33\webapps\ROOT\ Índex.html <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/tr/html4/loose.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> <title>exemplo de IF</title> </head> <body> <a href="decisao1.jsp">exemplo IF</a> </body> </html> Crie um segundo arquivo denominado decisao1.jsp e salve no mesmo diretório do arquivo HTML if(request.getparameter("valor")==null) { <form> Informe seu nome: <input name="valor"> <br> <input type="submit" value ="enviar"> </form> else { Seu nome é =request.getparameter("valor")
Segundo exemplo de JSP Incluir a linha <a href="decisao2.jsp">exemplo Switch</a> no arquivos índex.html Você pode dar uma quebra de linha, digitando no final da primeira linha a tag <BR>. Em seguida crie um segundo arquivo JSP denominado, decisao2.jsp, ditando o mesmo no editor de sua preferência e salvando o mesmo dentro da pasta /ROOT/Prog1: if(request.getparameter("valor")= =null) { <form> Informe um numero entre 1 e 5: <input name="valor"> <br> <input type="submit"> </form> else { int num = Integer.parseInt(request.getParameter("valor")); switch (num) { case 1: case 3 : case 5: out.println("é um número impar"); break; case 2: case 4: out.println("é um número par"); break; default: out.println("não é um número entre 1 e 5"); Para podermos expandir nossos exemplos com JSP, abaixo alguns operadores que poderemos utilizar a fim de executar qualquer teste lógico em nossas páginas: Comparadores: (a= = b) Igualdade (a!= b) Não igual ou diferente de (a > b) Maior que (a < b) Menor que (a >= b) Maior ou igual a... (a <= b) Menor ou igual a... Concatenadores lógicos: && - Função E (And) Para retornar verdade, ambas as condições analizades dever ser verdadeiras
- Função ou (Or) Para retornar verdade, basta que umas das condições analisadas seja verdadeira. ^ - Função ou exclusivo (Or exclusive) Para retornar verdade, apenas uma das condições deve ser verdadeira. Ainda analisando o segundo exemplo, podemos notar uma conversão de tipos. Abaixo vejam todas as opções de conversão. Ao ser enviada a consulta, inicialmente convertemos o parâmetro para um tipo inteiro (Como por exemplo esta linha do código: int num = Integer.parseInt(request.getParameter("valor"));), utilizando o método parseint, da classe Integer. Existem várias outras conversões, como podemos ver abaixo: Byte.parseByte(objeto String) Converte um objeto string para um tipo primitivo byte; Short.parseShort(objeto String) Converte um objeto string para um tipo primitivo short; Float.parseFloat(objeto String) Converte um objeto String para um tipo primitivo float; Double.parseDouble(objeto String) Converte um objeto String para um tipo primitivo Double. É isso que nosso código decisao1.jsp faz, ele executa um teste lógico nos números, para ver se são ímpares ou pares, tomando uma decisão e apresentando a resposta. Como o parâmetro valor é uma string, temos que antes de atribuir esse valor a variável num que é inteira, converter a string numérica para um número inteiro, para que não haja erro. Comando de repetição While Tanto o comando while quanto o comando do..while são chamados de comandos de repetição indeterminados, pois não sabemos quando o laço irá terminar. Normalmente esses comandos são utilizados em pesquisa de banco de dados. Vamos utilizar esse exemplo para isso. Antes precisamos criar uma pasta dentro de /ROOT/WEB-INFO, denominada classes e copiar para dentro dela, o driver do mysql denominado mysql-connector-java-5.1.7-bin.jar. No exemplo abaixo, foi criado um banco de dados no mysql, denominado dvdhome e uma tabela filmes com id do filme autonumeração e um campo filmes tipo caracter com o nome dos filmes. O código abaixo gera uma página JSP que Le o banco de dados e retorna o nome dos filmes. Crie um banco de dados denominado dvdhome e uma tabela filmes com a seguinte estrutura no mysql: Create database dvdhome; Use dvdhome; Create table filmes ( Cod int(11) auto_increment, Filmes varchar(35) not null, Primary key(cod)); Não se esqueça de incluir no arquivo índex.html a linha: <a href="repeticao1.jsp">exemlo WHILE</a><br><hr>
Para chamar a página jsp. Segue o código da página repeticao1.jsp @page import="java.sql.*" Class.forName("com.mysql.jdbc.Driver"); Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/dvdhome?userUnicode =true","root",""); Statement stm = con.createstatement(); ResultSet res = stm.executequery("select * from filmes"); if(res.next()) { out.println("seus usuarios sao: "); out.println("\n"); do { out.println(res.getstring(2)); while (res.next()); else { out.println("nao existgem registros cadastrados"); O aquivo acima funciona da seguinte forma: um objeto ResultSet é uma matriz de dados, onde o primeiro registro da tabela chama-se BOF (Begin of file), ou seja, executamos um comando IF para verificar se existem registros. Caso existam, será mostrada a mensagem Seus filmes são: e, em seguida, o comando DO mostrará todos os registros localizados. Comando de repetição FOR O comando de repetição FOR é considerado do tipo comando de repetição determinado exatamente por termos o domínio dele (tanto quando começa quanto quando ele termina). Ele possui a seguinte estrutura: FOR (atributo inicial; condição; incremento) { Instruções a serem repetidas; Exemplo utilizando o FOR para cálculo do fatorial de um número. if(request.getparameter("valor") == null) { <form>
Informe o valor de um número para calcular seu fatorial...:<input name="valor"> <br> <input type="submit"> </form> else { int i = 0; int num = Integer.parseInt(request.getParameter("valor")); int res = 1; for(i = num; I > 1; i--) res *= i; out.println("o fatorial de " + num + " é " + res); Abaixo outro exemplo de uso para o laço FOR, usando um texto com uma mensagem: <body> for (int i = 1; i < 6; i++) { <h=i>isto é um teste</h=i> </body> Digite o texto acima e salve com o nome testeloop.jsp. Não se esqueça de criar um link na página índex.html para este arquivo. Vamos para exemplos mais elaborados... Para o Java, tudo são objetos, atributos, métodos ou classes. Existe uma classe que cuida das datas e horas que chama-se date e está contida no pacote java.util. Além disso, toda data é armazenada, seu padrão é um inteiro longo, então, precisamos um objeto da classe SimpleDateFormat pertencente ao pacote java.text. Para formatar datas podemos utilizar as seguintes máscaras: y ano (2001) M mês (July 07) d dia (10) h hora AM/PM (1 a 12) H hora (0 a 23) m Minutos (30) s segundos (1) S milisegundos (1) E dia da semana (Tuesday) D Dia do ano (189) F dia da semana dentro do mês ( 2 segunda semana em Julho, por exemplo) w Dia da semana no ano (27) W Dia da semana no mês (2) a AM/PM (AM)
k Hora (1 a 24) K Hora AM/PM (0 a 11) - para digitar o texto (às) Assim se por exemplo, quisermos mostrar uma data em seu formato normal com dia/mês/ano, basta utilizar: =(new SimpleDateFormat( dd/mm/yyyy )) Se quiser formatar a hora, podemos utilizar: =(new SimpleDateFormat( hh:mm )).format(new Date()) Para praticarmos com as datas, crie uma nova página JSP comeando-a como testedata.jsp e insira os códigos abaixo: Controle de Formulários (tag form) Usaremos as tag de form para enviar dados para a página JSP processar. A tag <form> compreende as seguintes tags: <input type= text > - É a caixa de texto padrão para a entrada de dados, este tipo é o padrão quando a propriedade type for informada. <input type = hidden > - Objetos do tipo texto que ficam ocultos. <input type = password > É a caixa de texto para solicitação de senhas. <input type = radio > São os objetos tipo escolha apenas um. <input type = checkbox > - São objetos tipo escolha. <input type = button > - Botões para pressionar. <input type = submit > - Botão utilizado para submeter o formulário. <input type = reset > - Botão para apagar os dados dos objetos do formulário. <textarea rows = n cols n></textarea> - Caixa de texto com várias linhas (rows) e várias colunas (cols). <select><option></option></selcct> - São listas de seleção (podendo ser padrão ComboBox ou List). Além disso, duas propriedades são muito importantes para todos esses objetos e nosso uso: value Armazena o valor digitado pelo usuário. name Usado pela JSP para obter o valor de determinada tag. A tag <form> possui a seguinte sintaxe: <form name=nome action=formação.jsp method=método></form> Onde metodo indica a forma com que os dados serão passados para o formulário. Por GET que é a forma direta de passagem dos dados, ou por POST que passa todo o formulário. Vamos fazer um programinha que é uma enquete utilizando uma dessas opções.
Crie um arquivo denominado teste3.html e não esqueça de criar uma referencia para ele na página índex.html <HTML> <HEAD> <TITLE>Pesquisa Alcoólica</TITLE> </HEAD> <BODY> <H1>Pesquisa Alcoólica</H1> <FORM action='teste3.jsp' method=post> Você gosta de Beber: <SELECT name='ebebida'> <OPTION value=0>vinho</option> <OPTION value=1>cerveja</option> <OPTION value=2>whiskey</option> <OPTION value=3>refrigerante</option> <OPTION value=4>água</option> </SELECT><BR><BR> <CENTER><INPUT type='submit' value=' Enviar Resposta '></CENTER> </FORM> </BODY> </HTML> Crie uma página jsp, denominada teste3.jsp e digite o código abaixo: @page contenttype="text/html" import="java.io.*" <html> <head><title>jsp Page</title></head> <body> int[] opc = new int[5]; String[] nomopc = {"Vinho", "Cerveja", "Whiskey", "Refrigerante", "Água"; String[] nomcor = {"marrom", "azul", "purpura", "ouro", "verde"; int total = 1; // Total nao pode ser por default 0 String nomarq = "resultado.txt"; // lê o arquivo File arq = new File(nomArq); if (arq.exists()) { // arq já foi gravado BufferedReader br = new BufferedReader(new FileReader(nomArq)); String lin; int i = 0; while ((lin = br.readline())!= null) { opc[i] = Integer.parseInt(lin); total += opc[i]; i++; br.close(); else { // arq vazio
for (int i = 0; i < opc.length; i++) opc[i] = 0; int indice = Integer.parseInt(request.getParameter("eBebida")); opc[indice] += 1; // monta o gráfico for (int i = 0; i < opc.length; i++) { out.println("<img src='image/." + nomcor[i] + ".gif' width=" + ((100 * opc[i])/total) + " height=10>" + "<img src='' width=" + (100 - ((100 * opc[i])/total)) + " height=10>"); out.println(nomopc[i] + " - " + opc[i] + " Votos.<br>"); // regrava o arquivo PrintWriter saida = new PrintWriter(new FileWriter(nomArq)); for (int i = 0; i < opc.length; i++) saida.println(opc[i]); saida.close(); </body> </html> Precisamos também criar 5 arquivos gif que conterão as cores para o gráfico da enquete e salva-los na pasta /ROOT/Prog1/image