Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF [email protected] Última...
Transcript of Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF [email protected] Última...
![Page 1: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/1.jpg)
Struts
Jakarta Struts
Marco Antonio,
Arquiteto de Software – TJDF
Última revisão: Maio/2007
![Page 2: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/2.jpg)
Struts
Framework para facilitar a implementação da arquitetura MVC em aplicações JSP.
Tem se tornado um padrão mundial.
Bastante completo.
Demanda muito tempo para o aprendizado.
![Page 3: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/3.jpg)
Serviços oferecidos pelo Struts
Um poderoso Servlet de controle que faz a delegação das regras de negócio para uma classe específica. É configurado via XML.
Validadores para diversas situações.
Gerenciamento de exceção.
Utilitários para upload.
Utilitários para manipulação de javaBeans.
* vários desses utilitários foram transferidos para projetos separados para reutilização em outros sistemas, mesmo sem o Struts.
![Page 4: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/4.jpg)
Download
Faça o download do Struts no site jakarta.apache.org/struts/index.html.
Descompacte o conteúdo do Struts na sua pasta pessoal.
![Page 5: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/5.jpg)
Principais arquivos
O framework está no arquivo struts.jar, mas, assim como tudo no Java, ele necessita de diversas outras bibliotecas.
Esse mecanismo é bastante prático, pois facilita a instalação, portabilidade, atualização, correção, etc.
Copie as bibliotecas (.jar) para o SistemaBancario/lib e registre-as (Add to Build Path).
Copie as tag libs (.tld) para o SistemaBancarioWeb/WEB-INF.
![Page 6: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/6.jpg)
web.xml<?xml version="1.0" ?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
![Page 7: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/7.jpg)
web.xml <taglib>
<taglib-uri>/tags/struts-bean</taglib-uri>
<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/tags/struts-logic</taglib-uri>
<taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/tags/struts-html</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>
</web-app>
![Page 8: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/8.jpg)
web.xml
Arquivo padrão para configurar qualquer aplicação web.
Deve ficar dentro do diretório WEB-INF da aplicação.
Esse diretório, a partir de agora, é obrigatório. Dentro dele estarão todas as bibliotecas necessárias ao nosso trabalho.
![Page 9: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/9.jpg)
Principais tags do web.xml
Servlet: indica o nome do Servlet do Struts, a classe desse Servlet e o arquivo de configuração do Struts, quem vamos ver na sequência.
Load-on-startup: opcional. Faz o ActionServlet ser carregado quando o servidor web é iniciado.
Servlet-mapping: indica que o Servlet responde apenas ao padrão *.do.
Atenção: se você acessar uma página .html comum do servidor, o ActionServlet não é acessado.
![Page 10: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/10.jpg)
web.xml
Taglib: biblioteca de tags proprietárias do Struts para fazer tarefas comuns.
Exemplos: Ler os valores dos atributos de uma classe (JavaBean), ler o arquivo de mensagens (application.properties), fazer loops, comparações, verificar condições (existe, não existe), mostrar componentes HTML.
Existem vários concorrentes, mas todos seguem o mesmo princípio, mudando apenas a sintaxe. Algumas vezes, nem isso.
![Page 11: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/11.jpg)
Atualizando o contexto
Quando você cria um projeto no Tomcat através do plugin, é criada uma entrada similar a essa no arquivo c:\Tomcat\conf\server.xml:
<Context path="/sistemabancarioweb" reloadable="true" docBase="E:\sistemas\SistemaBancarioWeb" workDir="E:\sistemas\SistemaBancarioWeb\work" >
<Logger className="org.apache.catalina.logger.SystemOutLogger" verbosity="4" timestamp="true"/>
</Context>
Esse arquivo tem a configuração de todas as aplicações (contextos) que existem nessa instalação do Tomcat.Como estamos alterando bastante as configurações do ambiente, se ocorrer algum erro ou comportamento estranho da aplicação é necessário atualizar o contexto. Siga esses passos:
Botão direito no projeto (SitemaBancarioWeb) – Tomcat Project – Update Context Definition.
![Page 12: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/12.jpg)
tools.jar
Em algumas instalações do Java temos problemas com o registro da máquina. Para evitar essa situação, vamos registrar o arquivo tools.jar, que é a biblioteca de utilitários da linguagem.Vá no menu Window – Preferences – Tomcat e veja a configuração final no próximo slide.
![Page 13: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/13.jpg)
JVM Settings
![Page 14: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/14.jpg)
Principais taglibs
Bean: gerencia os beans (classes de entidade), acessa propriedades, mensagens, cookies, etc.Logic: faz comparações, avalia condições, faz loops, Html: representa os componentes html, tornando a sua utilização mais simples.
![Page 15: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/15.jpg)
struts-config.xml<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
"http://struts.apache.org/dtds/struts-config_1_2.dtd">
<struts-config>
<action-mappings>
<action path="/BemVindo" type="com.sistemabancario.apresentacao.action.BemVindoAction">
<forward name="Sucesso" path="/jsp/BemVindo.jsp" />
</action>
</action-mappings>
<message-resources parameter="resources.application" />
</struts-config>
![Page 16: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/16.jpg)
Entenda o struts-config.xmlPath: indica a URL que deve ser chamada para executar essa ação (BemVindo).
Type: Classe que representa a ação desejada.
Forward: indica os caminho que podem ser seguidos para essa ação. Em geral, indica sucesso o fracasso para abrir alguma página.
Path (forward): página JSP que vai ser mostrada.
Message-resources: arquivo que contém as mensagens/rótulos da sua aplicação (internacionalização). Resources indica o diretório, application o arquivo. A extensão .properties fica implícita!
![Page 17: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/17.jpg)
application.properties#
cadastro.nome=Nome
cadastro.endereco=Endereço
cadastro.telefone=Telefone
cadastro.id=Código
#
mensagem.editar=Editar
mensagem.excluir=Excluir
#
cadastroDeAgencia.tituloDaPaginaDeConsulta=Consulta Agências
cadastroDeAgencia.tituloDaPaginaDeCadastro=Cadastro de Agências
#
cadastroDeGerente.tituloDaPaginaDeConsulta=Consulta Gerentes
cadastroDeGerente.tituloDaPaginaDeCadastro=Cadastro de Gerente
cadastroDeGerente.listaDeGerentes=Lista de Gerentes
#
sistema.tituloDoSistema=Sistema Bancário
sistema.mensagemDeBoasVindas=Bem-Vindo ao Sistema Bancário
![Page 18: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/18.jpg)
application.properties
Arquivo de configuração de mensagens da aplicação.
Crie esse arquivo no SistemaBancario/src/resources.
Você pode colocar as mensagem em várias línguas e utilizá-las na sua aplicação.
![Page 19: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/19.jpg)
BemVindoAction.javapackage com.sistemabancario.apresentacao.action;
import javax.servlet.http.*;
import org.apache.struts.action.*;
public class BemVindoAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
return mapping.findForward("Sucesso");
}
}
![Page 20: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/20.jpg)
Atenção
Todas as páginas JSP devem estar dentro de um diretório chamado jsp (crie esse diretório), para uma melhor organização de sua aplicação.
![Page 21: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/21.jpg)
BemVindo.jsp1. <%@ taglib uri="/tags/struts-bean" prefix="bean"%>
2. <link rel="stylesheet" href="css/Estilo.css" type="text/css">
<table>
<tr>
<td>
3. <jsp:include page="Cabecalho.jsp"/>
<html>
<head>
4. <title><bean:message key="sistema.tituloDoSistema"/></title>
</head>
<body>
5. <h1><bean:message key="sistema.mensagemDeBoasVindas"/></title></h1>
</html>
![Page 22: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/22.jpg)
BemVindo.jsp
1. declara que a página utiliza a taglib bean, nesse caso para ler o arquivo de mensagens.
2. folha de estilos da aplicação.
3. recurso do JSP para incluir nesse ponto, outra página .jsp. Utiliza sempre o padrão taglib:função, nesse caso jsp:include.
4. lê o arquivo de configuração e recupera a mensagem do título do sistema. Também utiliza o padrão taglib:função. A tag utilizada é bean, a função message lê a mensagem associada a uma chave.
5. lê a mensagem de boas-vindas configurada.
![Page 23: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/23.jpg)
Cabecalho.jspOpções:
<a href="ListarGerentes.do">Gerentes</a>
| Agências
| Cliente
| Contas-Corrente
| <a href="BemVindo.do">Página Inicial</a>
![Page 24: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/24.jpg)
Acessando a primeira aplicação Struts
Para acessar nossa tela de boas-vindas, utilizamos a URL seguinte:
http://localhost:8080/sistemabancarioweb/BemVindo.do
A extensão .do faz parte da especificação do Struts. Esse padrão foi configurado no web.xml (url-pattern). Quando você utilizar esse padrão na URL do browser, irá chamar a aplicação Struts através do ActionServlet.
Toda vez que uma solicitação com final .do é acessada pelo browser, o Servlet do Struts entra em ação.
![Page 25: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/25.jpg)
Dinâmica da aplicação
Você acessou a action BemVindo (struts-config.xml) através da URL BemVindo.do.
O Struts direcionou a chamada para a classe BemVindoAction. Como o objetivo é apenas mostrar a página de boas-vindas, não existe nenhum processamento extra nessa classe.
Quando estivermos consultando dados, esse processamento ficará numa classe similar.
O método chamado pelo Struts é o execute(). Veja no exemplo a lista de parâmetros.
Toda ação deve ficar em uma subclasse de Action. Por exemplo ExibirClienteAction, InserirClienteAction.
![Page 26: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/26.jpg)
Core classes
![Page 27: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/27.jpg)
Mais uma ação
Vamos acrescentar mais uma tag action na nossa aplicação.Dessa vez, vamos listar todos os gerentes.
![Page 28: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/28.jpg)
struts-config.xml<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
"http://struts.apache.org/dtds/struts-config_1_2.dtd">
<struts-config>
<action-mappings>
<action path="/BemVindo" type="com.sistemabancario.apresentacao.action.BemVindoAction">
<forward name="Sucesso" path="/jsp/BemVindo.jsp" />
</action>
<action path="/ListarGerentes" type="com.sistemabancario.apresentacao.action.ListarGerentesAction">
<forward name="Sucesso" path="/jsp/ListaDosGerentes.jsp" />
</action>
</action-mappings>
<message-resources parameter="resources.application" />
</struts-config>
![Page 29: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/29.jpg)
struts-config.xml
Adicionamos a ação ListarGerentes. Para acessar essa ação acesse a URL:http://localhost:8080/sistemabancarioweb/ListarGerentes.do
Depois de acessar essa URL, o Struts irá direcionar a ação para o execute da classe ListarGerentesAction. A maior parte de sua aplicação (na verdade, de qualquer aplicação) seguirá passos similares.
![Page 30: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/30.jpg)
ListarGerentesAction.javapackage com.sistemabancario.apresentacao.action;
import java.util.*;
import javax.servlet.http.*;
import org.apache.struts.action.*;
import com.sistemabancario.persistencia.*;
public class ListarGerentesAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
DAOGerente daoGerente = new DAOGerente();
Collection lista = daoGerente.consultarTodos();
request.setAttribute("gerentes", lista);
return mapping.findForward("Sucesso");
}
}
![Page 31: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/31.jpg)
DAOGerente – mockpackage com.sistemabancario.persistencia;
import java.util.*;import com.sistemabancario.formularios.*;
public class DAOGerente {
public FormularioGerente consultarPeloId(long id) { FormularioGerente g = new FormularioGerente(); g.setEndereco("Algum endereço"); g.setId(id); g.setNome("Algum nome"); g.setTelefone("3214-4323"); return g; }
public void inserir(FormularioGerente gerente) { System.out.println("Estou inserindo um novo gerente..."); System.out.println(gerente.getId()); System.out.println(gerente.getNome()); System.out.println(gerente.getEndereco()); System.out.println(gerente.getTelefone()); }
public void atualizar(FormularioGerente gerente) { System.out.println("Estou atualizando um gerente..."); System.out.println(gerente.getId()); System.out.println(gerente.getNome()); System.out.println(gerente.getEndereco()); System.out.println(gerente.getTelefone()); }
![Page 32: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/32.jpg)
DAOGerente – mock public Collection consultaTodos() { Collection lista = new ArrayList(); FormularioGerente g = new FormularioGerente(); g.setEndereco("Taguatinga"); g.setNome("Jose"); g.setTelefone("3352-1212"); g.setId(1); lista.add(g); g = new FormularioGerente(); g.setEndereco("Asa Sul"); g.setNome("Maria"); g.setTelefone("3423-4512"); g.setId(2); lista.add(g); g = new FormularioGerente(); g.setEndereco("Asa Norte"); g.setNome("Joao"); g.setTelefone("3242-4321"); g.setId(3); lista.add(g); g = new FormularioGerente(); g.setEndereco("Lago Norte"); g.setNome("Paulo"); g.setTelefone("3248-7654"); g.setId(4); lista.add(g); return lista; }}
![Page 33: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/33.jpg)
ListarGerentesAction
Quando você acessou a URL ListarGerentes.do, o Struts chamou o método execute (atenção para a lista de parâmetros!!!).O objetivo é recuperar uma collection (o Struts trabalha com os tipos mais comuns do Java), que é a lista dos gerentes. Para isso utilizamos o DAOGerente.Logo em seguida, guardamos essa lista na sessão do browser. Vamos recuperá-la posteriormente na página JSP.
![Page 34: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/34.jpg)
ListaDosGerentes.jsp<%@ taglib uri="/tags/struts-html" prefix="html"%>
<%@ taglib uri="/tags/struts-bean" prefix="bean"%>
<%@ taglib uri="/tags/struts-logic" prefix="logic"%>
<link rel="stylesheet" href="css/Estilo.css" type="text/css">
<html>
<head>
<title><bean:message key="cadastroDeGerente.tituloDaPaginaDeConsulta"/>
</title>
</head>
<body>
<table>
<tr>
<td>
<jsp:include page="Cabecalho.jsp"/>
</td>
</tr>
</table>
![Page 35: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/35.jpg)
ListaDosGerentes.jsp
Declaração das taglibs que vamos usar nessa página.Html para os componentes html.Bean para acessar os javabeansLogic para o loop. Lembre-se: vamos mostar vários registros.
![Page 36: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/36.jpg)
ListaDosGerentes.jsp<h1><bean:message key="cadastroDeGerente.tituloDaPaginaDeConsulta"/></h1>
1. <!-- logic:present name="gerentes" (isso é opcional)-->
<table border="1">
<tr>
<th>
2. <bean:message key="cadastro.nome"/>
</th>
<th>
<bean:message key="cadastro.endereco" />
</th>
<th>
<bean:message key="cadastro.telefone" />
</th>
<th>
<bean:message key="mensagem.editar" />
</th>
<th>
<bean:message key="mensagem.excluir" />
</th>
</tr>
![Page 37: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/37.jpg)
ListaDosGerentes.jsp
1. utiliza a taglib logic para verificar se o atributo “gerentes” existe mesmo na sessão. Caso exista, ele executa o conteúdo, podendo mostrar uma mensagem caso não encontre o atributo na sessão.
2. lê as mensagens associadas às chaves.
![Page 38: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/38.jpg)
ListaDosGerentes.jsp1. <logic:iterate id="gerente" name="gerentes">
<tr>
<td>
2. <bean:write name="gerente" property="nome"/>
</td>
<td>
3. <bean:write name="gerente" property="endereco"/>
</td>
<td>
4. <bean:write name="gerente" property="telefone"/>
</td>
<td align=center>
5. <html:link page="/ExibirGerente.do" paramId="id" paramName="gerente" paramProperty="id">
6. <html:image src="imagens/edit.gif" alt="Editar Registro" />
</html:link>
</td>
![Page 39: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/39.jpg)
ListaDosGerentes.jsp
1. logic:iterate é uma tag que faz iteração, ou seja, repetição. Name indica o bean que limita essas repetições (gerentes, que é a lista de todos os gerentes, veja a classe ListarGerenteAction). O id representará cada um dos elementos da lista. Cada elemento será referenciado por gerente.
2. bean:write escreve na tela o valor da propriedade nome no primeiro gerente da lista. Name indica o bean gerente dessa iteração. Property indica a propriedade do bean. A propriedade deve existir no bean em questão. Todas as conversões são automáticas, por conta do Struts.
![Page 40: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/40.jpg)
ListaDosGerentes.jsp
3. escreve o valor da propriedade endereco.
4. escreve o valor da propriedade telefone.
5. html:link é uma ligação com a action ExibirGerente. Quando você clicar aqui, vamos criar um parâmetro id com o valor do id do gerente em da iteração atual. Vamos passar esse valor para uma página e mostrar os dados desse gerente, com a finalidade de edição. Veja a imagem.
6. html:image mostra uma imagem, para fins estéticos, apenas isso.
![Page 41: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/41.jpg)
Tela da consulta
![Page 42: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/42.jpg)
Dinâmica da consulta
Quando acessarmos a action ExibirGerente, passaremos o id que vamos consultar.Quando o id tiver algum valor válido, vamos carregar a tela com os dados do gerente.Se você não passar nenhum id, o sistema irá inserir o gerente. Na outra situação, vamos atualizar um já existente.
![Page 43: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/43.jpg)
ListaDosGerentes.jsp<td align=center>
1. <html:link page="/ExcluirGerente.do" paramId="id" paramName="gerente" paramProperty="id">
2. <html:image src="imagens/delete_2x.gif" alt="Excluir Registro" />
</html:link>
</td>
</tr>
3. </logic:iterate>
<tr>
<td colspan="5">
4. <html:link page="/ExibirGerente.do">
5. <html:img src="imagens/add.gif" alt="Adicionar Registro" border="0" align="right" />
</html:link>
</table>
6. <!-- /logic:present (isso é opcional) -->
</body>
</html>
![Page 44: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/44.jpg)
ListaDosGerentes.jsp
1. a exclusão funciona da mesma forma que a edição. Vamos passar um id, e a página seguinte irá excluir o gerente associado.
2. uma imagem, também para fins estéticos.
3. fim da iteração. Tudo que está entre o início e o fim da tag logic:iterate será repetido enquando existirem mais gerentes na lista.
4. abre a página de cadastro, exibindo uma página em branco, pois não foi informado nenhum id.
5. mais uma vez nossa imagem.
6. fim da tag logic:present, que verifica se realmene existe o atributos gerentes na sessão. Tem como finalidade garantir que você passou a lista dos gerentes.
![Page 45: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/45.jpg)
struts-config.xml<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
"http://struts.apache.org/dtds/struts-config_1_2.dtd">
<struts-config>
<form-beans>
<form-bean name="formularioGerente" type="com.sistemabancario.apresentacao.formulario.FormularioGerente">
</form-bean>
</form-beans>
<action-mappings>
<action path="/BemVindo" type="com.sistemabancario.apresentacao.action.BemVindoAction">
<forward name="Sucesso" path="/jsp/BemVindo.jsp" />
</action>
<action path="/ListarGerentes"
type="com.sistemabancario.apresentacao.action.ListarGerentesAction">
<forward name="Sucesso" path="/jsp/ListaDosGerentes.jsp" />
</action>
<action path="/ExibirGerente" type="com.sistemabancario.apresentacao.action.ExibirGerenteAction">
<forward name="ExibirGerente" path="/jsp/CadastroDeGerente.jsp" />
</action>
![Page 46: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/46.jpg)
struts-config.xml <action path="/CadastrarGerente" type="com.sistemabancario.apresentacao.action.CadastrarGerenteAction"
name="formularioGerente">
<forward name="ListarGerentes" path="/ListarGerentes.do" />
</action>
</action-mappings>
<message-resources parameter="resources.application" />
</struts-config>
![Page 47: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/47.jpg)
Novidades no struts-config.xml
Até agora vimos apenas ações de consulta (BemVindo e ListarGerentes).A outra situação é o cadastro. Toda vez que precisamos de uma página para cadastro, vamos criar um formulário (form-bean) e sua respectiva classe (ActionForm).
![Page 48: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/48.jpg)
FormularioGerente.javapackage com.sistemabancario.apresentacao.formulario;
import org.apache.struts.action.*;
public class FormularioGerente extends ActionForm {
private long id;
private String nome;
private String endereco;
private String telefone;
public String getEndereco() {
return endereco;
}
public void setEndereco(String endereco) {
this.endereco = endereco;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getNome() {
return nome;
}
![Page 49: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/49.jpg)
FormularioGerente.java public void setNome(String nome) {
this.nome = nome;
}
public String getTelefone() {
return telefone;
}
public void setTelefone(String telefone) {
this.telefone = telefone;
}
}
![Page 50: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/50.jpg)
FormularioGerente.java
Essa classe deve ter atributos correspondentes a todos os campos da tela.A primeira impressão que temos é que duplicamos código, pois temos uma classe de entidade bastante parecida. Precisamos lembrar que esse é um exemplo básico e existem estratégias específicas para eliminar esse tipo de problema.
![Page 51: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/51.jpg)
ExibirGerenteAction.javapackage com.sistemabancario.apresentacao.action;
import javax.servlet.http.*;
import org.apache.struts.action.*;
import com.sistemabancario.entidades.*;
import com.sistemabancario.persistencia.*;
public class ExibirGerenteAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
Gerente gerente = new Gerente();
String id = request.getParameter("id");
if (id != null) {
DAOGerente daoGerente = new DAOGerente();
Long idGerente = new Long(id);
gerente = daoGerente.consultarPeloId(idGerente);
}
request.setAttribute("gerente", gerente);
return mapping.findForward("ExibirGerente");
}
}
![Page 52: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/52.jpg)
ExibirGerenteAction.java
Nessa classe recuperamos o valor do parâmetro id, caso ele exista.
Quando esse valor é diferente de nulo (o parâmetro foi informado) vamos no DAOGerente e recuperamos o objeto correspondente.
Logo em seguida, colocamos o gerente na sessão, para ser recuperado na página seguinte.
Se o parâmetro id não for informado, o gerente da sessão não terá valores para seus atributos, por isso os campos da tela seguinte estarão em branco.
![Page 53: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/53.jpg)
CadastroDeGerente.jsp<%@ taglib uri="/tags/struts-html" prefix="html"%>
<%@ taglib uri="/tags/struts-bean" prefix="bean"%>
<link rel="stylesheet" href="css/Estilo.css" type="text/css">
<html>
<head>
<title><bean:message key="cadastroDeGerente.tituloDaPaginaDeCadastro"/></title>
</head>
<body>
<h1><bean:message key="cadastroDeGerente.tituloDaPaginaDeCadastro"/></title></h1>
<table border=1>
1. <html:form action="CadastrarGerente">
2. <html:hidden property="id" name="gerente"/>
<tr>
<td>
<bean:message key="cadastro.nome" />
</td>
<td>
3. <html:text property="nome" name="gerente" maxlength="30" size="30" />
</td>
</tr>
![Page 54: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/54.jpg)
CadastroDeGerente.jsp<td>
<bean:message key="cadastro.endereco" />
</td>
<td>
4. <html:text property="endereco" name="gerente" size="30" />
</td>
<tr>
<td>
<bean:message key="cadastro.telefone" />
</td>
<td>
5. <html:text property="telefone" name="gerente" size="20" />
</td>
</tr>
<tr>
<td>
![Page 55: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/55.jpg)
CadastroDeGerente.jsp6. <html:button onclick="submit()" property="btnGravar" value="Gravar" />
</td>
<td>
7. <html:button onclick="action='ListarGerentes.do';submit()" property="btnVoltar" value="Voltar" />
</td>
</tr>
</html:form>
</table>
</body>
</html>
![Page 56: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/56.jpg)
CadastroDeGerente.jsp
1. form:action é a tag que indica qual a ação do botão de submit, nesse caso Gravar.
2. no html:hidden iremos armazenar o atributo id do gerente. Name indica o bean que deve ter sido carregado na classe ExibirGerenteAction. No caso da inclusão, esse valor será “0” (zero).
3, 4, 5. html:text é uma caixa de texto que contém o valor do atributo nome, endereco, telefone, do bean gerente.
6. botão de submit, ou seja, submeter todas essas informações para a action CadastrarGerente. Property indica o nome do botão.
7. botão de voltar com javascript para redirecionar nossa página para a action ListarGerentes, sem gravar nenhuma informação dessa tela.
![Page 57: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/57.jpg)
Tela de cadastro
Veja o atributo id na URL do browser, com o valor 7.
Se você suprimir essa informação, a tela será carregada com os campos em branco.
![Page 58: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/58.jpg)
CadastrarGerenteAction.javapackage com.sistemabancario.apresentacao.action;
import javax.servlet.http.*;
import org.apache.commons.beanutils.*;
import org.apache.struts.action.*;
import com.sistemabancario.apresentacao.formulario.*;
import com.sistemabancario.entidades.*;
import com.sistemabancario.persistencia.*;
public class CadastrarGerenteAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
String id = request.getParameter("id");
1. FormularioGerente formularioGerente = (FormularioGerente) form;
DAOGerente daoGerente = new DAOGerente();
Gerente gerente = new Gerente();
BeanUtils.copyProperties(gerente, formularioGerente);
2. if(id == null || id.equals("") || id.equals(“0”)) {
daoGerente.inserir(gerente);
} else {
daoGerente.atualizar(gerente);
}
return mapping.findForward(“Sucesso”);
}
}
![Page 59: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/59.jpg)
CadastrarGerenteAction.java
1. Esse é um mecanismo automático do Struts. Estamos recuperando o formulário da página anterior, que era o cadastro de gerentes. Os atributos desse formulário têm os mesmos valores digitados pelo usuário na tela de cadastro.
2. Verifica se o id foi informado. As condições estão aí apenas para ilustrar quais as possibilidades de valor que teremos, dependendo da lógica que você utilize na sua aplicação.
3. BeanUtils é uma classe utilitária do Jakarta que copia os valores dos atributos iguais entre os objetos informados. Nesse caso, vamos copiar todos os atributos iguais para do objeto formularioGerente para o gerente
4. Nosso DAOGerente grava apenas objetos do tipo Gerente, mas o Struts trabalha apenas com o FormularioGerente, por isso a cópia é obrigatória
Obs: os itens 3 e 4 não se aplicam a essa versão
![Page 60: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/60.jpg)
struts-config.xml <action path="/ExcluirGerente"
type="com.sistemabancario.apresentacao.action.ExcluirGerenteAction">
<forward name="ListarGerentes" path="/ListarGerentes.do" />
</action>
![Page 61: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/61.jpg)
struts-config.xml
Última action da configuração do Struts.Acrescente essas tags ao arquivo de configuração já existente.
![Page 62: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/62.jpg)
ExcluirGerenteAction.javapackage com.sistemabancario.apresentacao.action;
import javax.servlet.http.*;
import org.apache.struts.action.*;
import com.sistemabancario.persistencia.*;
public class ExcluirGerenteAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
String id = request.getParameter("id");
DAOGerente daoGerente = new DAOGerente();
Long idGerente = new Long(id);
daoGerente.excluir(idGerente);
return mapping.findForward("ListarGerentes");
}
}
![Page 63: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/63.jpg)
ExcluirGerenteAction.java
O id, informado na tela de consulta, é utilizado como parâmetro para a exclusão no DAOGerenteEm seguida, voltamos à página de consulta, vendo uma lista atualizada com os gerentes restantes
![Page 64: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/64.jpg)
Dúvidas?
![Page 65: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/65.jpg)
struts-config.xml<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
"http://struts.apache.org/dtds/struts-config_1_2.dtd">
<struts-config>
<form-beans>
<form-bean name="formularioGerente"
type="com.sistemabancario.apresentacao.formulario.FormularioGerente">
</form-bean>
<form-bean name="formularioAgencia"
type="com.sistemabancario.apresentacao.formulario.FormularioAgencia">
</form-bean>
</form-beans>
<action-mappings>
<action path="/BemVindo"
type="com.sistemabancario.apresentacao.action.BemVindoAction">
<forward name="Sucesso" path="/jsp/BemVindo.jsp" />
</action>
<action path="/ListarGerentes"
type="com.sistemabancario.apresentacao.action.ListarGerentesAction">
<forward name="Sucesso" path="/jsp/ListaDosGerentes.jsp" />
</action>
![Page 66: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/66.jpg)
struts-config.xml <action path="/ExibirGerente"
type="com.sistemabancario.apresentacao.action.ExibirGerenteAction">
<forward name="ExibirGerente" path="/jsp/CadastroDeGerente.jsp" />
</action>
<action path="/CadastrarGerente"
type="com.sistemabancario.apresentacao.action.CadastrarGerenteAction"
name="formularioGerente">
<forward name="ListarGerentes" path="/ListarGerentes.do" />
</action>
<action path="/ExcluirGerente"
type="com.sistemabancario.apresentacao.action.ExcluirGerenteAction">
<forward name="ListarGerentes" path="/ListarGerentes.do" />
</action>
<action path="/ExibirAgencia"
type="com.sistemabancario.apresentacao.action.ExibirAgenciaAction">
<forward name="SucessoNaExibicao" path="/jsp/CadastroDeAgencia.jsp" />
</action>
![Page 67: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/67.jpg)
struts-config.xml <action path="/CadastrarAgencia"
type="com.sistemabancario.apresentacao.action.CadastrarAgenciaAction"
name="formularioAgencia">
<forward name="ListarAgencias" path="/ListarAgencias.do" />
</action>
<action path="/ListarAgencias"
type="com.sistemabancario.apresentacao.action.ListarAgenciasAction">
<forward name="Sucesso" path="/jsp/ListaDasAgencias.jsp" />
</action>
</action-mappings>
<message-resources parameter="resources.application" />
</struts-config>
![Page 68: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/68.jpg)
ListaDasAgencias.jsp<%@ taglib uri="/tags/struts-html" prefix="html"%>
<%@ taglib uri="/tags/struts-bean" prefix="bean"%>
<%@ taglib uri="/tags/struts-logic" prefix="logic"%>
<link rel="stylesheet" href="css/Estilo.css" type="text/css">
<html>
<head>
<title><bean:message key="cadastroDeAgencia.tituloDaPaginaDeConsulta"/>
</title>
</head>
<body>
<table>
<tr>
<td>
<jsp:include page="Cabecalho.jsp"/>
</td>
</tr>
</table>
<h1><bean:message key="cadastroDeAgencia.tituloDaPaginaDeConsulta"/></h1>
<logic:present name="agencias">
<table border="1">
<tr>
![Page 69: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/69.jpg)
ListaDasAgencias.jsp<th>
<bean:message key="cadastro.nome"/>
</th>
<th>
<bean:message key="cadastro.endereco" />
</th>
<th>
<bean:message key="cadastro.telefone" />
</th>
<th>
<bean:message key="cadastro.nome" /> do Gerente
</th>
<th>
<bean:message key="mensagem.editar" />
</th>
<th>
<bean:message key="mensagem.excluir" />
</th>
</tr>
<logic:iterate id="agencia" name="agencias">
<tr>
![Page 70: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/70.jpg)
ListaDasAgencias.jsp<td>
<bean:write name="agencia" property="nome"/>
</td>
<td>
<bean:write name="agencia" property="endereco"/>
</td>
<td>
<bean:write name="agencia" property="telefone"/>
</td>
<td>
<bean:write name="agencia" property="gerente.nome" />
</td>
<td align=center>
<html:link page="/ExibirAgencia.do" paramId="id" paramName="agencia" paramProperty="id">
<html:image src="imagens/edit.gif" alt="Editar Registro" />
</html:link>
</td>
<td align=center>
<html:link page="/ExcluirAgencia.do" paramId="id" paramName="agencia" paramProperty="id">
<html:image src="imagens/delete_2x.gif" alt="Excluir Registro" />
</html:link>
</td>
</tr>
</logic:iterate>
![Page 71: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/71.jpg)
ListaDasAgencias.jsp<tr>
<td colspan="6">
<html:link page="/ExibirAgencia.do">
<html:img src="imagens/add.gif" alt="Adicionar Registro" border="0" align="right" />
</html:link>
</table>
</logic:present>
</body>
</html>
![Page 72: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/72.jpg)
CadastroDeAgencia.jsp<%@ taglib uri="/tags/struts-html" prefix="html"%>
<%@ taglib uri="/tags/struts-bean" prefix="bean"%>
<link rel="stylesheet" href="css/Estilo.css" type="text/css">
<html>
<head>
<title><bean:message key="cadastroDeAgencia.tituloDaPaginaDeCadastro"/></title>
</head>
<body>
<h1><bean:message key="cadastroDeAgencia.tituloDaPaginaDeCadastro"/></title></h1>
<table border=1>
<html:form action="CadastrarAgencia">
<html:hidden property="id" name="agencia"/>
<tr>
<td>
<bean:message key="cadastro.nome" />
</td>
<td>
<html:text property="nome" name="agencia" maxlength="30" size="30" />
</td>
</tr>
<td>
<bean:message key="cadastro.endereco" />
</td>
![Page 73: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/73.jpg)
CadastroDeAgencia.jsp<td>
<html:text property="endereco" name="agencia" size="30" />
</td>
<tr>
<td>
<bean:message key="cadastro.telefone" />
</td>
<td>
<html:text property="telefone" name="agencia" size="20" />
</td>
</tr>
<tr>
<td>
<bean:message key="cadastroDeGerente.listaDeGerentes" />
</td>
<td>
<html:select property="gerente.id" name="agencia">
<html:optionsCollection name="gerentes" label="nome" value="id" />
</html:select>
</td>
</tr>
<tr>
<td>
![Page 74: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/74.jpg)
CadastroDeAgencia.jsp<html:button onclick="submit()" property="btnGravar" value="Gravar" />
</td>
<td>
<html:button onclick="action='ListarAgencias.do';submit()" property="btnVoltar" value="Voltar" />
</td>
</tr>
</html:form>
</table>
</body>
</html>
![Page 75: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/75.jpg)
FormularioAgencia.javapackage com.sistemabancario.apresentacao.formulario;
import org.apache.struts.action.*;
public class FormularioAgencia extends ActionForm {
private String id;
private String nome;
private String endereco;
private String telefone;
public String getEndereco() {
return endereco;
}
public void setEndereco(String endereco) {
this.endereco = endereco;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
![Page 76: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/76.jpg)
FormularioAgencia.java public String getTelefone() {
return telefone;
}
public void setTelefone(String telefone) {
this.telefone = telefone;
}
}
![Page 77: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/77.jpg)
CadastrarAgenciaAction.javapackage com.sistemabancario.apresentacao.action;
import javax.servlet.http.*;
import org.apache.commons.beanutils.*;
import org.apache.struts.action.*;
import com.sistemabancario.apresentacao.formulario.*;
import com.sistemabancario.entidades.*;
import com.sistemabancario.persistencia.*;
public class CadastrarAgenciaAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
String id = request.getParameter("id");
String idG = request.getParameter("gerente.id");
FormularioAgencia formularioAgencia = (FormularioAgencia) form;
DAOAgencia daoAgencia = new DAOAgencia();
Agencia agencia = new Agencia();
Long idGerente = new Long(idG);
Gerente gerente = new DAOGerente().consultarPeloId(idGerente);
![Page 78: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/78.jpg)
CadastrarAgenciaAction.java if (id == null || id.equals("") || id.equals("0")) {
BeanUtils.copyProperties(agencia, formularioAgencia);
agencia.setGerente(gerente);
daoAgencia.inserir(agencia);
} else {
Long idAgencia = new Long(id);
agencia = daoAgencia.consultarPeloId(idAgencia);
BeanUtils.copyProperties(agencia, formularioAgencia);
agencia.setGerente(gerente);
daoAgencia.atualizar(agencia);
}
return mapping.findForward("ListarAgencias");
}
}
![Page 79: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/79.jpg)
ExibirAgenciaAction.javapackage com.sistemabancario.apresentacao.action;
import java.util.*;
import javax.servlet.http.*;
import org.apache.struts.action.*;
import com.sistemabancario.entidades.*;
import com.sistemabancario.persistencia.*;
public class ExibirAgenciaAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
Agencia agencia = new Agencia();
String id = request.getParameter("id");
if (id != null) {
DAOAgencia daoAgencia = new DAOAgencia();
Long idAgencia = new Long(id);
agencia = daoAgencia.consultarPeloId(idAgencia);
} else {
agencia.setGerente(new Gerente());
}
![Page 80: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/80.jpg)
ExibirAgenciaAction.java DAOGerente daoGerente = new DAOGerente();
Collection lista = daoGerente.consultarTodos();
request.setAttribute("agencia", agencia);
request.setAttribute("gerentes", lista);
return mapping.findForward("SucessoNaExibicao");
}
}
![Page 81: Struts Jakarta Struts Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.net Última revisão: Maio/2007.](https://reader035.fdocuments.net/reader035/viewer/2022081518/552fc0fb497959413d8b97d7/html5/thumbnails/81.jpg)
ListarAgenciasAction.javapackage com.sistemabancario.apresentacao.action;
import java.util.*;
import javax.servlet.http.*;
import org.apache.struts.action.*;
import com.sistemabancario.persistencia.*;
public class ListarAgenciasAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
DAOAgencia daoAgencia = new DAOAgencia();
Collection lista = daoAgencia.consultarTodos();
request.setAttribute("agencias", lista);
return mapping.findForward("Sucesso");
}
}