Linguagem Java para Web - JSP Professora Lucélia Estudo Dirigido - Parte 1 Na primeira parte deste tutorial, vamos receber os dados de um formulário e verificar se os dados foram ou não preenchidos. Se os dados não forem preenchidos, o usuário será redirecionado para o formulário, solicitando que o mesmo preencha todos os campos. 1. Primeiro vamos criar um formulário para que o usuário informe seu login e senha: 3 <title>...tela de Login...</title> 4 </head> 5 <body> 6 <div id="geral"> index.jsp 7 <div id="lista">identifique-se</div> <div id="login"> 9 <form action="controle.jsp"> 10 <br /><br /><br /> 11...Login... 1 <input type="text" size="0" name="login" /><br /><br /> 13...Senha... 14 <input type="password" size="0" name="senha" /><br /><br /> 15 <input type="submit" value="entrar" /> 16 <input type="reset" value="limpar" /> 17 </form> 1 </div> 19 </div> 0 </body> 1 </html>. Agora vamos criar uma folha de estilo (CSS) para tornar mais agradável o visual para o usuário. 3. Crie um diretório chamado comum e salve o arquivo abaixo dentro dele. 1 #geral{ position:absolute; 3 left:50%; 4 margin-left:-00px; 5 top:40%; 6 margin-top:-110; 7 } 9 #lista{ 10 background-color:#0000ff; 11 color:white; 1 width:400px; 13 height:0px; 14 position:absolute; 15 top:0px; 16 left:0px; 17 text-align:center; 1 } 19 0 #login{ 1 background-color:#cccccc; color:green; 3 width:400px; 4 height:00px; 5 position:absolute; 6 top:0px; 7 left:0px; text-align:center; 9 } estilo.css 4. Acrescente a linha abaixo dentro do <head> do arquivo index.jsp: <link rel="stylesheet" type="text/css" href="comum/estilo.css" />
5. O seu formulário deverá estar assim: 6. Vamos criar o arquivo controle.jsp, mencionado no index. Ele deverá receber o login e a senha enviados pelo formulário, verificar se ambos os campos estão preenchidos, se não tiver, emitir mensagem de erro. 3 <meta http-equiv="content-type" content="text/html; charset=utf-"> 4 <title>controle JSP</title> 5 </head> 6 <body> 7 <% String login = request.getparameter("login"); 9 String senha = request.getparameter("senha"); 10 11 if (!(login.equals("") (senha.equals("")))) { 1 out.println("<h1>dados enviados:</h1>"); 13 out.println("<p> Login: " + login + "</p>"); 14 out.println("<p> Senha: " + senha + "</p>"); 15 } else { 16 out.println("<h1 style=\"color:red;\"> Todos os dados devem ser preenchidos! </h1>"); 17 } 1 %> 19 </body> 0 </html> Nota: O código acima está misturando código JSP com HTML. Isso não é uma boa prática. A melhor opção seria criar mais uma camada de interface com o usuário. 7. Podemos mostrar a mensagem de erro no próprio index.jsp após a verificação de dados em branco, por exemplo. Altere o código do controle.jsp, mudando a linha 16 e acrescentando o as linhas 17 e 1, conforme mostrado abaixo: 3 <meta http-equiv="content-type" content="text/html; charset=utf-"> 4 <title>controle JSP</title> 5 </head> 6 <body> 7 <% String login = request.getparameter("login");
9 String senha = request.getparameter("senha"); 10 11 if (!(login.equals("") (senha.equals("")))) { 1 out.println("<h1>dados enviados:</h1>"); 13 out.println("<p> Login: " + login + "</p>"); 14 out.println("<p> Senha: " + senha + "</p>"); 15 } else { 16 String msg = "<h1 style=\"color:red;text-align:center;\"> Todos os dados devem ser preenchidos! </h1>"; 17 session.setattribute("msg", msg); 1 response.sendredirect("index.jsp"); 19 } 0 %> 1 </body> </html>. Devemos alterar também o documento index.jsp. Acrescente as linhas de 1 a 9 nesse documento. Observe que não havia nenhum código JSP na página anteriormente, quando fizemos a alteração não foi necessário alterarmos o nome do arquivo. 3 <title>...tela de Login...</title> 4 <link rel="stylesheet" type="text/css" href="comum/layout.css" /> 5 </head> 6 <body> index.jsp 7 <div id="geral"> <div id="lista">identifique-se</div> 9 <div id="login"> 10 <form action="controle.jsp"> 11 <br /><br /><br /> 1...Login... 13 <input type="text" size="0" name="login" /><br /><br /> 14...Senha... 15 <input type="password" size="0" name="senha" /><br /><br /> 16 <input type="submit" value="entrar" /> 17 <input type="reset" value="limpar" /> 1 </form> 19 </div> 0 </div> 1 <% String mensagem = (String) session.getattribute("msg"); 3 if (mensagem == null){ 4 mensagem = ""; 5 }else{ 6 mensagem = mensagem; 7 } out.println(mensagem); 9 %> 30 </body> 31 </html> Estudo Dirigido - Parte Na segunda parte deste tutorial, vamos receber os dados do formulário já visto e vamos encerrar a sessão caso o usuário não tenha se identificado corretamente, caso contrário, o usuário será encaminhado para sua página específica 9. Acrescentando a camada Model à aplicação Nesta camada estará presentes a classe JavaBean ou simplesmente o bean. Um componente JavaBeans, ou simplesmente um bean, é uma classe Java que, quando chamada por um JSP, por exemplo, segue certas regras a serem observadas nos próximos exemplos. Vamos criar um novo pacote chamado modelo e, dentro dele, vamos criar um bean para que possamos ampliar as funcionalidades do nosso sistema web.
1 package modelo; public class Pessoa { 3 private String nome; 4 private String login; 5 private String senha; 6 7 public Pessoa(){ } 9 10 public String getnome() { 11 return nome; 1 } 13 14 public void setnome(string nome) { 15 this.nome = nome; 16 } 17 1 public String getlogin() { 19 return login; 0 } 1 public void setlogin(string login) { 3 this.login = login; 4 } 5 6 public String getsenha() { 7 return senha; } 9 30 public void setsenha(string senha) { 31 this.senha = senha; 3 } 33 34 } Pessoa.java 10. Usando o bean criado: Para usar um bean em uma página JSP, é necessário usar a diretiva <%@ page import = pacote.nomedaclasse %> ou a tag jsp. Para usar uma tag jsp devem ser fornecidos três atributos: um identificador que provê um nome local para o bean, o nome da classe do bean que é usado para instanciá-lo e um escopo que especifica o tempo de vida do bean, como mostra o exemplo a seguir. Este exemplo irá verificar se o login e a senha informados são iguais ao usuário e senha requeridos. Se não for, irá encerrar a sessão. 1 <jsp:usebean class="modelo.pessoa" id="usuario" scope="session" /> 3 <html> 4 <head> 5 <meta http-equiv="content-type" content="text/html; charset=utf-"> 6 <title>controle JSP</title> 7 </head> <body> 9 <% 10 String login = request.getparameter("login"); controle.jsp 11 String senha = request.getparameter("senha"); 1 13 if (!login.equals("lucelia")!senha.equals("13456")) { 14 session.invalidate(); 15 response.sendredirect("menu1.jsp"); 16 } else { 17 usuario.setlogin(login); 1 usuario.setsenha(senha); 19 usuario.setnome("lucélia!!!"); 0 session.setattribute("usuario", usuario); 1 response.sendredirect("menu1.jsp"); } 3 %> 4 </body> 5 </html>
11. Se o usuário digitar o login e a senha corretamente, o sistema irá mostrar o extrato da pessoa identificada, caso contrário irá mostrar apenas a mensagem usuário não autorizado, conforme o código abaixo: 1 <jsp:usebean id="usuario" class="modelo.pessoa" scope="session" /> 3 <% 4 5 if (usuario.getnome() == null) { 6 out.print("<h1>usuario nao Autorizado!!!</h1>"); menu1.jsp 7 } else { 9 %> 10 <html> 11 <head> 1 <link rel="stylesheet" type="text/css" href="comum/layout.css" /> 13 <title>pagina de Menus</title> 14 </head> 15 <body> 16 <div id="geral"> 17 <div id="lista">extrato do(a) ${usuario.nome}</div> //Expression language 1 <div id="login" style="text-align:left;"> 19 <br /><br /><br /> 0 CPF...111111 <br /> 1 Endereço...SQS 910 Sul <br /> Cartao...333500<br /> 3 <hr /><br /> 4 Farmacia Sta Maria..150,00<br /> 5 Americanas.com...100,00<br /> 6 Posto Gasol...7,00<br /> 7 Posto Texaco II...6,00<br /> Extra...10,00<br /> 9 <hr /> 30 Total...R$570,00 31 </div> 3 </div> 33 </body> 34 </html> 35 <% } 36 %> 1. Podemos ainda criar outra opção: Se o usuário informar a senha de um determinado usuário, mostra o seu extrato, se informar usuário e senha de outro usuário, mostra o extrato desse outro usuário. Se não for de nenhum dos dois, mostra a mensagem usuário não autorizado. Nota 1: O arquivo controle.jsp deverá ser alterado 1 <jsp:usebean class="modelo.pessoa" id="usuario" scope="session" /> 3 <html> 4 <head> 5 <meta http-equiv="content-type" content="text/html; charset=utf-"> 6 <title>controle JSP</title> 7 </head> 9 <body> <% controle.jsp 10 String login = request.getparameter("login"); 11 String senha = request.getparameter("senha"); 1 13 if (login.equals("lucelia") && senha.equals("13456")) { 14 usuario.setlogin(login); 15 usuario.setsenha(senha); 16 usuario.setnome("lucélia!!!"); 17 session.setattribute("usuario", usuario); 1 response.sendredirect("menu1.jsp"); 19 } else if (login.equals("maria") && senha.equals("65431")) { 0 usuario.setlogin(login); 1 usuario.setsenha(senha); usuario.setnome("maria!!!"); 3 session.setattribute("usuario", usuario); 4 response.sendredirect("menu.jsp");
5 }else{ 6 session.invalidate(); 7 response.sendredirect("menu.jsp"); } 9 %> 30 </body> 31 </html> Nota : Deverá ser criado um novo arquivo chamado menu: 1 <jsp:usebean id="usuario" class="modelo.pessoa" scope="session" /> 3 <% 4 5 if (usuario.getnome() == null) { 6 out.print("usuario nao Autorizado!!!"); menu.jsp 7 } else { 9 %> 10 <html> 11 <head> 1 <link rel="stylesheet" type="text/css" href="comum/layout.css" /> 13 <title>pagina de Menus</title> 14 </head> 15 <body> 16 <div id="geral"> 17 <div id="lista">extrato do(a) ${usuario.nome}</div> 1 <div id="login" style="text-align:left;"> 19 <br /><br /><br /> 0 CPF... <br /> 1 Endereço...SQN 907 Norte <br /> Cartao...1111111111<br /> 3 <hr /><br /> 4 Carrefour...00,00<br /> 5 Submarino.com...150,00<br /> 6 Restaurante China...50,00<br /> 7 Posto Texaco...60,00<br /> Giraffas...5,00<br /> 9 <hr /> 30 Total...R$45,00 31 </div> 3 </div> 33 </body> 34 </html> 35 36 <% } 37 %> Exercícios Crie uma aplicação web que solicite ao usuário que informe o seu nome. Construa um bean com os campos: nome, telefone e endereço. Construa um arquivo de controle que compare o nome informado pelo usuário com dois nomes distintos. Se o usuário informar o nome de um dos dois dados comparados, exibir o seu endereço e telefone. Caso contrário, bloquear o usuário para visualizar qualquer informação.