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

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

Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos

Apresentações semelhantes


Apresentação em tema: "Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos"— Transcrição da apresentação:

1 Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos (UFBA)(arleys.castro@gmail.com)arleys.castro@gmail.com Padrão Factory Tem como objetivo, a criação de Objetos

2 Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos (UFBA)(arleys.castro@gmail.com)arleys.castro@gmail.com Struts: Acessando um Banco de Dados Para acessar um banco de dados usando a Strut´s, temos que lembra de nosso padrão MVC2.

3 Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos (UFBA)(arleys.castro@gmail.com)arleys.castro@gmail.com A arquitetura MVC - Model-View-Controller (Modelo-Visualização-Controle) É um padrão que separa de maneira independente o Modelo, Objetos de negócio (Model) Camada de apresentação, que representa a interface com o usuário ou outro sistema (View); Controle de fluxo da aplicação (Controller). Struts: Acessando um Banco de Dados

4 Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos (UFBA)(arleys.castro@gmail.com)arleys.castro@gmail.com O Controller já vem implementado na Struts, embora... Caso seja possível estendê-lo a fim de adicionar funcionalidade. O fluxo da aplicação é programado em um arquivo XML através das ações que serão executadas. As ações são classes base implementadas pela framework seguindo o padrão MVC. Assim devemos estendê-las a fim de adicionar a funcionalidade desejada. Struts: Acessando um Banco de Dados

5 Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos (UFBA)(arleys.castro@gmail.com)arleys.castro@gmail.com Arleys Pereira Nunes de Castro - Especialista : Sistema distribuídos (UFBA)(arleys.castro@gmail.com)arleys.castro@gmail.com A geração da interface é feita através de custom tags, também já implementadas pela Struts, evitando assim o uso de Scriptlets. (códigos java entre e ), deixando o código JSP mais limpo e fácil de manter. Struts: Acessando um Banco de Dados

6 Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos (UFBA)(arleys.castro@gmail.com)arleys.castro@gmail.com Desta forma, lembraremos do nosso desenho ilustrativo da aula passada. Struts: Acessando um Banco de Dados

7 Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos (UFBA)(arleys.castro@gmail.com)arleys.castro@gmail.com Definindo as configurações do Connection Pool. A maioria das aplicações para web que usam banco de dados podem ser beneficiadas por um Connection Pool coleção de conexões que ficam permanentemente abertas com o SGBD. Estabelecer uma conexão com o banco de dados a cada solicitação que chega no web server para consultar/manipular dados é um processo muito dispendioso conexão e verificação de permissões do usuário do banco. Struts: Acessando um Banco de Dados

8 Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos (UFBA)(arleys.castro@gmail.com)arleys.castro@gmail.com Uma aplicação não usa banco de dados o tempo todo, somente em alguns momentos para obter os dados, depois esta conexão não é mais necessária. Struts: Acessando um Banco de Dados

9 Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos (UFBA)(arleys.castro@gmail.com)arleys.castro@gmail.com Um Connection Pool pode ajudar bastante: Elimina um overread desnecessário de se re-conectar a cada solicitação que chega: Pois ele fará o gerenciamento da coleção de conexões prontas para serem usadas, e "marcará" as conexões em uso. Se por acaso você pegar uma conexão e ficar um determinado tempo sem fazer nada (timeout), o Connection Pool resgata esta conexão para uso, e invalida o objeto de conexão que você pegou anteriormente. Tamanha é a importância deste tópico, que acabou entrando na especificação JDBC ( javax.sql.DataSource ). Praticamente todos os Containers possuem um mecanismo que fornecem um Connection Pool. Struts: Acessando um Banco de Dados

10 Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos (UFBA)(arleys.castro@gmail.com)arleys.castro@gmail.com A Struts Framework implementa um Connection Pool usando DataSource. Na versão 1.0, a Conexão era obtida do ActionServlet. Por fim no release 1.1 de produção, as classes que tratam do DataSource foram parar no arquivo struts- legacy.jar, indicando claramente a intenção de descontinuar esta funcionalidade em favor de uma solução padrão (JCA), ou seja, implementada pelo container; apesar de ainda continuar funcionando. Struts: Acessando um Banco de Dados

11 Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos (UFBA)(arleys.castro@gmail.com)arleys.castro@gmail.com No arquivo server.xml entre os tag´s será definido o trecho abaixo para especificar Connection Pool : Struts: Acessando um Banco de Dados <set-property property="driverClassName" value="sun.jdbc.odbc.JdbcOdbcDriver" /> <set-property property="url" value="jdbc:odbc: Driver={Microsoft Access Driver (*.mdb)} ;DBQ=C:/BDAula.mdb" />

12 Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos (UFBA)(arleys.castro@gmail.com)arleys.castro@gmail.com No código Java, quando precisar de uma conexão de banco de dados. Você irá solicitar uma conexão ao Connection Pool, o qual irá marcar uma conexão no Pool, como sendo usada, e lhe dará algum tempo para fazer alguma coisa. Tão logo que você use a conexão para consultar ou manipular dados no banco de dados, será necessário devolver a conexão para o pool Se não fizer isto o Connection Pool fecha a conexão para você e a resgata para o pool. Para fazer isto, basta executar o método close(), que na verdade não a fecha, mas devolve para o Pool (dependendo da implementação do Connection Pool, poderá ter variações da maneira de devolver ao pool, algo do tipo invocar um metodo do tipo releaseConnection, do objeto Connection Pool). Struts: Acessando um Banco de Dados

13 Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos (UFBA)(arleys.castro@gmail.com)arleys.castro@gmail.com Definindo a Camada de Negócio (usando DAO Beans DTO) Para isso usaremos os conhecimentos das aulas anteriores, para dividir as camadas que o modelo MVC exige, para isso. Usaremos as classes DAO Beans DTO que criamos na nossa aula prática de DAO, efetuando a mudança necessária. Apenas a classe Beans será chamada agora de ActionBeans – que terá a mesma estrutura e as mesmas propriedades. Agora usaremos o conceito do DataSource para efetuar uma conexão. Struts: Acessando um Banco de Dados

14 Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos (UFBA)(arleys.castro@gmail.com)arleys.castro@gmail.com Struts: Acessando um Banco de Dados 1 private ArrayList getTodosNomes(){ 2 Connection conn = null; 3 Statement stmt = null; 4 PreparedStatement prpStmt = null; 5 ResultSet rs = null; 7 try{ 8 dataSource = (DataSource) servlet.getServletContext().getAttribute("bancoDataSource"); 9 conn = dataSource.getConnection(); 10 String sqlQuery = "SELECT * FROM tbPessoa WHERE NOME Like '%" + getName() + "%'"; 11 prpStmt = conn.prepareStatement(sqlQuery); 12 rs = prpStmt.executeQuery(); 13 while (rs.next()) { 14 MinhaLista.add(new tbPessoaDTO(rs.getInt("CODIGO"), rs.getString("NOME"), rs.getString("BAIRRO")) ); 15} 16........... 26 return MinhaLista; 27 }

15 Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos (UFBA)(arleys.castro@gmail.com)arleys.castro@gmail.com Definindo o Controller O Controller é responsável por receber as requisições do browser e invocar os objetos de negócio do Model para executar algum processo retornando um resultado que servirá de base para que o Controller possa direcionar para o JSP que deverá gerar a interface com o usuário. O ActionServlet lê as configurações do arquivo struts-config.xml. Ao receber as solicitações do usuário, chama o ActionBean correspondente à requisição, e de acordo com o resultado do ActionBean, executa um JSP. Struts: Acessando um Banco de Dados

16 Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos (UFBA)(arleys.castro@gmail.com)arleys.castro@gmail.com Definindo a camada de apresentação A Camada de apresentação representa o view (visualização) no padrão MVC. É em sua grande maioria baseada em JSPs e alguns servlets envolvidos na geração da interface com o usuário ou com outros sistemas. A Struts framework fornece suporte para construir aplicações multi-idiomas, interação com formulários e outras utilidades através de tags personalizadas (Custom Tags). Struts: Acessando um Banco de Dados

17 Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos (UFBA)(arleys.castro@gmail.com)arleys.castro@gmail.com Struts: Acessando um Banco de Dados Agora a camada de apresentação deverá trazer os registros (em uma collection) para exibi-los em um grid. Para efetuar isso não mais usaremos o tag de <c:forEach var="lista“....

18 Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos (UFBA)(arleys.castro@gmail.com)arleys.castro@gmail.com Struts: Acessando um Banco de Dados Na camada view, nosso JSP será mais fácil manipular os dados. Agora apenas mencionando qual getXXX irá carregar a célula do grid. Para isso foi usado uma tag do strut´s Nome Endereço

19 Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos (UFBA)(arleys.castro@gmail.com)arleys.castro@gmail.com Struts: Acessando um Banco de Dados A princípio, a utilização do Struts acessando parece bem simples, que de fato é, porem exige um cuidado especial nos arquivos de configuração XML´s Vamos agora fazer um trabalho prático no laboratório para aplicar os conhecimentos adquiridos. Outras fontes de pesquisa Struttin' With Struts - Lessons Stepping through Jakarta Struts About Struts i18n with Struts Introduction to Jakarta Struts Framework Learn Struts' Form-Related Tags TheServerSide.com J2EE Community Project Refinery, Inc Create Better Web Apps with Struts Struts in Action


Carregar ppt "Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos"

Apresentações semelhantes


Anúncios Google