A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Struts Aplicação de exemplo Aplicação de exemplo Vamos criar uma aplicação para ver os principais componentes do Struts Não faremos.

Apresentações semelhantes


Apresentação em tema: "Struts Aplicação de exemplo Aplicação de exemplo Vamos criar uma aplicação para ver os principais componentes do Struts Não faremos."— Transcrição da apresentação:

1 Struts Aplicação de exemplo

2 Aplicação de exemplo Vamos criar uma aplicação para ver os principais componentes do Struts Não faremos acesso ao banco de dados, mas veremos as entradas onde ele pode ser usado Veremos algumas das melhores técnicas para gerenciar o emaranhado de classes, arquivos de configuração e libs de todo projeto java

3 Primeiros passos Crie a estrutura de diretórios para o projeto Escreva o web.xml Escreva o struts-config.xml Escreva as classes ActionForm Escreva as classes Action Crie o arquivo de mensagens Escreva as páginas JSP Instale e teste sua aplicação

4 AloMundo Vamos criar um projeto chamado AloMundo Crie uma pasta chamada lib e copie nela todas as nossas bibliotecas registre-as: botão direito -> Build Path -> Add to Build Path No fim de tudo, teremos algo parecido com a imagem ao lado

5 AloMundo Contém as classes de formulário, actions e as libs do Struts Nesse projeto teremos o processamento das requisições, forwards e arquivos de mensagens* Representa o Model e o Controller do MVC Não é interessante ter regras de negócio aqui, mas esse é um assunto para outro curso

6 Propriedades Botão direito no projeto -> Properties Guia Libraries Botão Add Variable

7 Nova variável Clique no botão Extend...

8 Lib do Tomcat Vamos adicionar algumas libs do Tomcat As classes do Struts precisam dessas bibliotecas Precisamos adicionar o commons-el, jsp-api e servlet-api

9 Agora, a parte web Vamos criar mais um projeto, dessa vez será o AloMundoWeb Aqui teremos as páginas web, folhas de estilo, arquivos de configuração e taglibs Representa a parte View do MVC Copie as taglibs para o diretório informado na imagem ao lado A imagem ao lado é do projeto no seu final

10 web.xml Arquivo de configuração da aplicação web Esse arquivo segue a especificação da Sun Não é um arquivo de configuração do Struts propriamente dito Declara o servlet de controle do Struts, bem com suas taglibs

11 web.xml Alo Mundo - Struts action org.apache.struts.action.ActionServlet config /WEB-INF/struts-config.xml 1

12 web.xml action *.do /tags/struts-bean /WEB-INF/lib/struts-bean.tld /tags/struts-html /WEB-INF/lib/struts-html.tld /tags/struts-logic /WEB-INF/lib/struts-logic.tld

13 struts-config.xml Principal arquivo de configuração do Struts Essa é sua primeira versão, onde iremos apenas mostrar a página de boas-vindas da aplicação

14 struts-config.xml

15 struts-config.xml A parte importante aqui é essa: – O path é o caminho referenciado pelo browser, com o sufixo.do O Struts irá abrir a página BemVindo.jsp

16 index.jsp

17 Cont. Artifício de programação HTML para redirecionar a aplicação para a página inicial

18 BemVindo.jsp.: Bem-Vindo :. Esta é sua primeira aplicação Struts! Tela de login

19 Tags struts-html: importa as taglibs com controles html Exemplos: –html:link – tag para montar um link –html:image – tag para mostrar uma imagem

20 Para acessar a aplicação A url acima irá acessar a página index.jsp que irá redirecionar a aplicação para BemVindo.do A partir desse momento o controller do Struts estará controlando a aplicação

21 Atenção A imagem está no link A folha de estilo também: Todos os demais arquivos seguem o mesmo princípio

22 Próxima fase Agora, vamos aumentar a complexidade da nossa aplicação, adicionando mais alguns mapeamentos e arquivos

23 MessageResources.properties # login.nome=Nome: login.senha=Senha: # errors.header= Erros no formulário errors.login.nome= Nome é obrigatório errors.login.senha= Senha incorreta errors.footer=

24 Mensagens Podemos associar uma chave com uma palavra/frase errors.header e errors.footer fazem parte de um padrão, representam o cabeçalho e rodapé da área de erros

25 UsuarioForm package com.alomundo; import org.apache.struts.action.*; public class UsuarioForm extends ActionForm { private String nome; private String senha; public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public String getSenha() { return senha; } public void setSenha(String senha) { this.senha = senha; }

26 UsuarioForm O formulário de login propriamente dito Deve ter um atributo para campo da tela Os valores serão preenchidos automaticamente pelo Controller Cada tela terá seu próprio formulário

27 struts-config.xml

28 Variáveis de sessão –Todos os formulários da sua aplicação devem estar registrados –Dessa maneira o framework pode mapear o conteúdo dos campos de sua página para os atributos de sua classe

29 Nova versão do EfetuarLogin Esse bloco de código representa uma ação típica de uma aplicação Struts O Struts cria uma variável de sessão do tipo UsuarioForm chamada usuario e mapeia nela os campos da página Os nomes dos campos da página e do bean devem ser iguais

30 TelaDeLogin.jsp.: Login :.

31 TelaDeLogin.jsp

32 TelaDeLogin.jsp struts-bean: taglibs para manipulação de beans html:errors – mostra as mensagens de erro que se aplicam para essa página html:text/password – faz a ligação entre uma caixa de texto e uma propriedade do bean (no caso, usuario) bean:message – recupera uma mensagem do arquivo de mensagens

33 PaginaPrincipal.jsp.: Alô Mundo - Struts :. Bem-Vindo ao sistema, Página Inicial

34 Acesso a beans Lembra que temos a variável de sessão usuario preenchida com os valores informados na página? Esse é o momento de acessá-la No trecho seguinte estamos escrevendo na tela a propriedade nome do bean usuario

35 LoginAction package com.alomundo; import javax.servlet.http.*; import org.apache.struts.action.*; public class LoginAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { UsuarioForm f = (UsuarioForm) form; System. out.println("Dados fornecidos pelo usuário:"); System. out.println("Nome:" + f.getNome()); System. out.println("Senha: " + f.getSenha()); return mapping.findForward("Sucesso"); }

36 LoginAction O Controller executa o método execute A variável f (UsuarioForm) já foi preenchida com os valores da tela A classe irá direcionar a aplicação para o mapeamento Sucesso (veja no struts- config) Poderíamos direcionar para outro lugar se o usuário não fosse validado

37 Versão final Nossa aplicação conhecerá agora alguns novos recursos Atenção para os conceitos Não é o momento de entender todos os detalhes do Struts

38 DAOUsuario package com.alomundo; public class DAOUsuario { public boolean validaUsuario(String nome, String senha) { if (senha.equals("senha")) { return true ; } return false ; }

39 DAOUsuario Classe responsável pelo acesso a dados Nessa nossa implementação não faz quase nada, apenas valida o usuário com uma senha já definida Uma versão completa será discutida posteriormente

40 LoginAction public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { UsuarioForm f = (UsuarioForm) form; DAOUsuario dao = new DAOUsuario(); if (dao.validaUsuario(f.getNome(), f.getSenha())) { return mapping.findForward("Sucesso"); } else { ActionErrors e = new ActionErrors(); e.add("senha", new ActionMessage("errors.login.senha")); saveErrors(request, e); return new ActionForward(mapping.getInput()); }

41 LoginAction Atualize o método execute Se não conseguir validar o usuário, preenche a variável errors com uma mensagem padrão do arquivo MessageResources Para voltar à mesma página mostrando a mensagem de erro utilizamos o bloco de código return new ActionForward(mapping.getInput());

42 UsuarioForm public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { ActionErrors errors = new ActionErrors(); if (nome.equals("")) { errors.add("nome", new ActionMessage("errors.login.nome")); } return errors; }

43 UsuarioForm Adicione esse método Implementação padrão para validação Se o usuário não informar o nome adicionamos uma mensagem de erro do arquivo ResourceMessages

44 struts-config.xml

45 struts-config.xml Atualize a ação EfetuarLogin validate=true diz que esse formulário (UsuarioForm) deve passar pelo método validate() para essa ação O input indica a página que será aberta no caso do formulário não ser validado

46 Versão final Vamos acrescentar a rotina de logout e uma mensagem para verificar se o usuário já está autorizado

47 LoginAction } else { ActionErrors e = new ActionErrors(); e.add("senha", new ActionMessage("errors.login.senha")); saveErrors(request, e); request.getSession().removeAttribute("usuario"); return new ActionForward(mapping.getInput()); }

48 LoginAction Em caso de erro, precisamos remover a variável usuario da sessão

49 LogoutAction package com.alomundo; import javax.servlet.http.*; import org.apache.struts.action.*; public class LogoutAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { request.getSession().removeAttribute("usuario"); return mapping.findForward("Sucesso"); }

50 LogoutAction Quando o usuário clicar no link Sair do sistema também removemos o bean da sessão

51 UsuarioForm if (nome.equals("")) { errors.add("nome", new ActionMessage("errors.login.nome")); request.getSession().removeAttribute("usuario"); }

52 UsuarioForm Mais uma vez, se houver algum erro na validação, removemos a variável da sessão

53 struts-config.xml

54 struts-config.xml Quando o usuário estiver saindo do sistema não é necessário validar o formulário O default é true, por isso precisamos mudá- lo para false

55 TelaDeLogin.jsp.: Login :.

56 TelaDeLogin.jsp Você já está autorizado, Sair do Sistema Entrar no Sistema

57 TelaDeLogin.jsp

58 TelaDeLogin.jsp

59 Tags lógicas logic:present – verifica se o bean usuario está carregado na sessão O bloco dentro dessa tag só aparecerá se o bean for diferente de null Ou seja, se o usuário já tiver acessado o sistema, mostramos apenas uma mensagem para ele e dando a opção de ir para a página inicial ou sair

60 Tags lógicas logic:notPresent – esse bloco será mostrado se o bean não estiver carregado Nesse caso, mostramos a tela de login

61 Exercício Vamos criar um cadastro de pessoas Os atributos do ActionForm são nome, endereço, telefone e cpf, todos do tipo String Na página principal, vamos acrescentar um link para esse cadastro

62 PessoaForm package com.alomundo; import org.apache.struts.action.*; public class PessoaForm extends ActionForm { private String nome; private String endereco; private String telefone; private String cpf; public String getCpf() { return cpf; } public void setCpf(String cpf) { this.cpf = cpf; }

63 PessoaForm public String getEndereco() { return endereco; } public void setEndereco(String endereco) { this.endereco = endereco; } public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public String getTelefone() { return telefone; } public void setTelefone(String telefone) { this.telefone = telefone; }

64 Formulário Nenhuma novidade nesse formulário, não é?

65 MessageResources # pessoa.nome=Nome: pessoa.endereco=Endereço: pessoa.telefone=Telefone: pessoa.cpf=CPF:

66 Mais mensagens Vamos acrescentar mais essas mensagens ao nosso arquivo ResourceMessages

67 CadastroDePessoa.jsp.: Login :.

68 CadastroDePessoa.jsp

69 CadastroDePessoa.jsp

70 Nova página de cadastro Nossas páginas são formadas por mensagens e componentes HTML Não se esqueça: esses componentes são ligados (bind) aos atributos do formulário em questão

71 PaginaPrincipal.jsp Página Inicial Cadastro de Pessoa

72 Menu da página principal Vamos acrescentar a chamada ao nosso novo cadastro Quando o usuário clicar no link CadastroDePessoa o Struts irá direcionar a aplicação para a página CadastroDePessoa.jsp

73 struts-config.xml

74 Lista de formulários Todos os formulários criados devem ser registrados nessa tag

75 struts-config.xml

76 Ações do novo cadastro Os dados da variável usuario ficam gravados na sessão e podem ser usados a qualquer instante Os dados desse formulário não precisam viver mais que o próprio request, não precisa ficar guardado para depois

77 PessoaAction package com.alomundo; import javax.servlet.http.*; import org.apache.struts.action.*; public class PessoaAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { PessoaForm f = (PessoaForm) form; System.out.println("Dados recuperados da tela"); System.out.println("Nome: " + f.getNome()); System.out.println("Endereço: " + f.getEndereco()); System.out.println("Telefone: " + f.getTelefone()); System.out.println("CPF:" + f.getCpf()); return mapping.findForward("Sucesso"); }

78 PessoaAction Quando o usuário clicar no botão Gravar o Struts chama o método execute

79 Agora é sua vez Seguindo os exemplos que vimos, crie um cadastro de notícias Sua notícia terá titulo, texto e data, todos do tipo String


Carregar ppt "Struts Aplicação de exemplo Aplicação de exemplo Vamos criar uma aplicação para ver os principais componentes do Struts Não faremos."

Apresentações semelhantes


Anúncios Google