Tutorial de NetBeans IDE Acessando banco de dados com Struts Data Source



Documentos relacionados
TUTORIAL DE INTRODUÇÃO AO CEWOLF

JDBC. Siga as instruções para instalar o banco de dados H2 e criar a tabela Alunos.

Listando, gravando, alterando e excluindo registro do banco de dados com JSP

Minicurso de MVC web com Struts. Felipe F Nascimento felipenasc@inf.puc-rio.br

Configurando uma aplicação Struts

Prática em Laboratório N.02 Criando um serviço Web via NetBeans

J550. Apache Struts. Helder da Rocha

JDBC. Prof. Márcio Bueno

Autenticação e Autorização

Java II. Sérgio Luiz Ruivace Cerqueira

Programação WEB (JSP + Banco Dados) Eng. Computação Prof. Rodrigo Rocha

Aplicativos Web com Orientação a Objetos

Persistência de Classes em Tabelas de Banco de Dados

Java na WEB Banco de Dados

Programação Orientada a Objetos II

JDBC (Java Database Connectivity) Padrão de Projeto DAO (Data Access Object) Roteiro para instalação do banco de dados e do driver JDBC

Drive MySql de conexão para Eclipse

Faculdades Integradas Santa Cruz. Tutorial de Java MVC WEB Criando uma tela de Login com Banco de Dados

Documentação Usando o Javadoc

Persistência de Objetos no SGBD PostgreSQL, Utilizando as APIs: JDBC, JDK, Swing e Design Patteners DAO.

JDBC Java Database Connectivity

Leonardo Gresta Paulino Murta

Manipulação de Banco de Dados com Java 1. Objetivos

Prof. Roberto Desenvolvimento Web Avançado

J550. Model View Controller

Arquitetura de Aplicações JSP/Web. Padrão Arquitetural MVC

Especialização em web com interfaces ricas

Como criar um EJB. Criando um projeto EJB com um cliente WEB no Eclipse

JAVA COM BANCO DE DADOS PROFESSORA DANIELA PIRES

Curso de Introdução ao

Introdução a relatórios Crosstab com ireport/jasperreports

Funcionamento da Aplicação. Simulações do funcionamento. Simulação SAC

Web Services. EclipseSDK/DB2 Construindo/Consumindo Serviços

Associação Carioca de Ensino Superior Centro Universitário Carioca

Criar uma aplicação JPA2 com EclipseLink e H2

Tutorial RMI (Remote Method Invocation) por Alabê Duarte

Desenvolvimento de aplicações Web. Java Server Pages

Módulo 5 - JDBC java.sql - Conexão com Banco de Dados

Tutorial: Criando aplicações J2EE com Eclipse e jboss-ide

Tutorial para criação de componentes JSF Facelets Por Érico GR 07/08/2007

JDBC DRIVER. Objetivo: Possibilitar aplicações não Zim de se conectar a um banco de dados Zim utilizando as normas JDBC.

PROJETO FRAMEWORK - CELEPAR PAGINAÇÃO DE DADOS EM APLICAÇÕES JAVA PARA INTERNET

Programação II Programação para a Web. Christopher Burrows

Manipulação de Banco de Dados com Java. Ms. Bruno Crestani Calegaro Maio/ 2015

JDBC. Java DataBase Connectivity

Evolução guiada por APIs. com REST para modernizar seu legado

Padrões de Projeto e Persistência com DAO

Programação Orientada a Objetos JDBC Java Database Connectivity

Desenvolvimento Web TCC Turma A-1

Tutorial Jogo da Velha WEB

Linguagens de Programação

Acessando um Banco de Dados

Java na Web. Aplicações Web

J2EE. Exemplo completo Utilização Servlet. Instrutor HEngholmJr

Curso de Java. Geração de Páginas WEB através de JSP. Todos os direitos reservados Klais

Acesso a Bancos de Dados em Java (JDBC)

Criando uma agenda simples com NetBeans 6.5

Desenvolvendo Aplicações Web com NetBeans

Tutorial Módulo 06 - Segurança

Tutorial de Computação Introdução a Programação Gráfica em Java para MEC1100 v

Acesso a banco de dados

Java JDBC - I. Ex. 2: para o SQLServer da Microsoft, o driver JDBC pode ser obtido em

Relatório do GPES. Conhecendo o Framework Struts

Unidade 9: Middleware JDBC para Criação de Beans

INTRODUÇÃO 12. DOCUMENTAÇÃO INTRODUÇÃO INTRODUÇÃO

Banco de Dados. Banco de Dados. Alcides Pamplona Alcides Pamplona Linguagem de Programação CESBD 2010

Exercícios de fixação: Listas

Gerador de código JSP baseado em projeto de banco de dados MySQL

Introdução ao IDE Netbeans (Programação Java)

Mini-Tutorial. Como criar relatórios Java para Web com JasperReports e ireport por Roberto J. Furutani 20/07/2005

Material de apoio a aulas de Desenvolvimento Web. Tutorial Java WEB JSP & HTML & CSS & CLASSE & OBJETOS. AAS -

Iniciar o Data Adapter Configuration Wizard. Toolbox Data Duplo clique em OleDbDataAdapter. Botão next na caixa de diálogo

Universidade Católica de Brasília Pró-Reitoria de Graduação Sistemas de Informação. na Prática. Por: Fernando Goulart

Scriptlets e Formulários

Java na WEB Componentes Bean

Curso de Java. Geração de Páginas WEB. TodososdireitosreservadosKlais

Criando documentação com javadoc

Banco de Dados. Sérgio Luiz Ruivace Cerqueira

Persistência Java para Web com MySQL

Programação Na Web. Servlets: Como usar as Servlets. Agenda. Template genérico para criar Servlets Servlet 2.4 API

Objetos Implícitos. Conceito. Instanciados pelo próprio contêiner. Disponíveis em quaisquer páginas JSP.

Universidade da Beira Interior. Sistemas Distribuídos /2015 Curso: Engª Informática. Folha 11. JAX-RS: Java API for RESTful Web Services

Aprenda como instalar o plugin EclipseUML no Eclipse e como utilizá-lo para fazer engenharia reversa de seu código-fonte.

Antes de iniciar execute o script do banco de dados no SQLYOG ou outra ferramenta de sua preferência

Criação de Servlets Name Directory Build WAR JSP/Servlet frameworks Launch URL Package Class name Generate header comments

Agenda. Instalação e configuração. Processamento de comandos SQL com JDBC. Driver JDBC Criação da classe de conexão

C# - Conexão com MySQL

1. Fazer aplicação exemplo

Struts. Características Avançadas

USANDO APPLETS NO NETBEANS (WEB APPLICATION)...E A APPLET CHAMA ALGUM PACOTE EXTERNO (por Luis Alberto M Palhares de Melo Julho/2011)

JAVAWEB AULA 2 Prof. Daniela Pires Sumário

WebWork 2. João Carlos Pinheiro.

Aula 1 Acesso a Banco de Dados

JAVA 14 ODBC / JDBC Aceder a Bases de Dados através da Internet. Vitor Vaz da Silva

DSS 08/09. Camada de Dados - JDBC. Aula 1. António Nestor Ribeiro /António Ramires Fernandes/ José Creissac Campos {anr,arf,jfc}@di.uminho.

J550 Tag Libraries e JSTL

JDBC - Java Data Base Connectivity

Transcrição:

Tutorial de NetBeans IDE Acessando banco de dados com Struts Data Source Configuraçãoes e Software Antes de começar a escrita do código, você tem que certificar-se que tem todo o software necessário e que seu projeto está ajustado corretamente. Instalando o software Antes que você comece, você necessita instalar o seguinte software em seu computador: NetBeans IDE 5.x (download). Versão padrão 1.4.2 (download) ou 5.0 Java (JDK ) (download) Neste tutorial, você usa uma base de dados do Derby de exemplo que vem com o Sun Java System Application Server 8.2 Para começar origens de dados dos suportes trabalhar corretamente, você necessita fazer exame de uma etapa adicional. Você necessita commonspooling.jar, commons-dbcp.jar, e common-collections.jar. 1. Ir à página do Apache Commons Download 2. Download commons-pooling.jar, commons-dbcp.jar, e commoncollections.jar 3. Adicionar os JAR s no diretório common/lib do Tomcat

1 - Trabalhando com Struts Data Source : Um Cenário simples Primeiramente, você define um Strutus Data Source. Em seguida, você cria um Struts Action para acessar o Data Source. Finalmente, você cria uma pagina JSP para rendenizar os resultados. Craindo o Data Source Adicionar o Data Source no arquivo struts-config.xml. Abaixo o código a adicionar no arquivo : <data-sources> <data-source type="org.apache.commons.dbcp.basicdatasource" key="emptable"> <set-property property="driverclassname" value="org.apache.derby.jdbc.clientdriver" /> <set-property property="url" value="jdbc:derby://localhost:1527/sample" /> <set-property property="username" value="app" /> <set-property property="password" value="app" /> <set-property property="validationquery" value="select * FROM CUSTOMER" /> </data-source> </data-sources> Nota: O atributo KEY é muito importante. Você irá utilizar na classe Struts Action conforme a linha abaixo: datasource = (DataSource) servlet.getservletcontext ().getattribute ( emptable ); Alcançando a origem dos dados dos suportes de uma classe da ação dos suportes 1. Na janela dos projetos, o clique com o botão direito em com.myapp.struts, escolhe novo > classe de Java, e nomei-o Row. A classe de Row.java representará os registro da tabela.. No editor da fonte, adicionar dois atributos, name e city, como mostrado abaixo: package com.myapp.struts; public class row { String name; String city;

/** Creates a new instance of row */ public row() { 2. Click com o botão direito em qualquer lugar no corpo da classe e escolha Refactor > Encapsulate Fields. Manter os valores e o clique em Next. No fundo do IDE, a janela de Refactoring propõe as mudanças:

Manter os valores de defeito e clique em Do Refactoring. 3. Preencher o contrutor como mostrado abaixo (o código destacado abaixo é a única parte que foi mudada): package com.myapp.struts; public class row { private String name; private String city; /** Creates a new instance of Row */ public row(string name, String city) { this.name = name; this.city = city; public String getname() { return name; public void setname(string name) { this.name = name; public String getcity() { return city; public void setcity(string city) { this.city = city;

4. Na janela dos projetos, o clique com o botão direito em com.myapp.struts, escolha New > File/Folder. Na categoria Web, selecione Struts Action. Nomear a classe DataSourceConnectionAction.java da Action Struts. 5. No editor da fonte, preencher a classe de DataSourceConnectionAction.java como mostrado abaixo. Onde relevante, os comentários in-line foram adicionados ao código abaixo, para explicar sua finalidade: package com.myapp.struts; import javax.servlet.http.*; import org.apache.struts.action.*; import java.sql.*; import java.util.arraylist; import javax.sql.*; public class DataSourceConnectionAction extends Action { private DataSource datasource; public ArrayList customerlist = new ArrayList(); private final static String SUCCESS = "success"; public ActionForward execute(actionmapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { jsp */ HttpSession session = request.getsession(); /** Aqui o metodo de conecção ao Data Source é chamado */ customerlist = getcustomers() ; /** Aqui adicionado o customerlist no scope, para utilizar no if(customerlist!= null){ session.setattribute("allmycustomers", customerlist); return (mapping.findforward(success)); private ArrayList getcustomers(){ Connection conn = null; Statement stmt = null; PreparedStatement prpstmt = null; ResultSet rs = null; StringBuffer resultstring ; try{ /** Aqui recuperamos o datasource atraves da chave 'emptable' mapeada em struts-config.xml: */ datasource = (DataSource)servlet.getServletContext().getAttribute("empTable"); conn = datasource.getconnection(); String sqlquery = "SELECT * FROM CUSTOMER"; prpstmt = conn.preparestatement(sqlquery); rs = prpstmt.executequery();

/** Aqui adicionameos o campo da posição 4 do resultset ao atributo name e o campo da posição 7 ao atributo city */ while (rs.next()) { customerlist.add(new row(rs.getstring(4), rs.getstring(7))); rs.close(); catch ( SQLException e ) { System.err.println("SQL Exception occured while accessing the table" ); e.printstacktrace(); return null; catch ( Exception e ) { e.printstacktrace(); return null; return customerlist; 6. Na janela dos projetos, expandir o Configuration Files e modificar a seção dos mappings no arquivo struts-config.xml para registrar a nova Action. Abaixo, as partes destacadas de código são as únicas partes de traçar da ação que foram modificadas: <action-mappings> <action input="/loginform.jsp" name="loginactionform" path="/login" scope="request" type="com.myapp.struts.datasourceconnectionaction"> <forward name="success" path="/mydatasourcesuccessful.jsp" redirect="true"/> <forward name="cancel" path="/logincancel.html"/> </action> <action forward="/loginout.jsp" path="/logout"/> <action path="/welcome" forward="/welcomestruts.jsp"/> </action-mappings>

Usando Tag do Struts para rendenizar as informações O Struts fornecem a tag library logic para paginas JSP. O Tag da logic permite que você inclua a lógica de exposição em uma página de JSP sem adicionar o código Java como scriptlets. Isto faz sua página de JSP mais legivel e permite um programador não- Java trabalhar na vista de sua aplicação. O Strutus fornecem também o bean tag library para recuperar e atribuir dados. 1. Na pagina Web Pages, criar uma nova JSP com o nome mydatasourcesuccessful.jsp, para exibir os dados recuperados. 2. Adicionar as seguintes taglib no alto da página: <%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %> <%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %> Agora, quando você pressiona o Ctrl-Espaço em uma arquivo JSP, todos as tag de logic tags e bean tags é indicados: 3. Adicionar o texto Successful data connection! entre as tags <title> e <h1>,como mostrado abaixo: <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>successful data connection!</title> </head>

<body> <h1>successful data connection!</h1> 4. Abaixo da tag <h1>, adicione <logic:notpresent> tag, como mostrado abaixo: <logic:notpresent name = "allmycustomers"> <h2>data source not in scope!</h2> </logic:notpresent> Pressionar o Ctrl-Espaço dentro do Tag para ler o Javadoc relacionado: 5. Diretamente abaixo da tag <logic:notpresent>, adicione a tag do Struts <logic:present>, with a tag do Struts <logic:empty>, como mostrado abaixo: <logic:present name = "allmycustomers"> <logic:empty name = "allmycustomers"> <h2>data source in scope but no data found!</h2> </logic:empty> </logic:present> Pressionar o Ctrl-Espaço dentro do Tag para ler o Javadoc relacionado:

6. Diretamente abaixo das Tag precedentes, adicionar a tag do struts <logic:present>. Esta vez, entretanto, você está indo dizer ao Struts o que fazer quando a origem dos dados dos suportes não está vazia. Arrastar do HTML Palette uma tabela para a página de JSP. Utilize a tag do Struts <logic:iterate> para iterar os dados e usar a tag do Struts <bean:write> para rendeizar os resultados, como mostrado abaixo: <logic:present name = "allmycustomers"> <p>these are our users:</p> <table border="1"> <thead> <tr> <th>name</th> <th>city</th> </tr> </thead> <tbody> <logic:iterate id="customer" name="allmycustomers"> <tr> <td></td> <td></td> </tr> <tr> <td><bean:write name="customer" property="name" /></td> <td><bean:write name="customer" property="city" /></td> </tr> </logic:iterate> </tbody> </table>

<body> </logic:present> Pressionar o Ctrl-Espaço dentro dos Tag para ler o Javadoc relacionado:

7. Certificar-se de que o corpo da página de JSP olhe agora como segue:

Deploy e Executando A IDE usa o ANT para realizar o depoly e a execução da aplicação WEB. A IDE gerou o certificado da configuração quando você criou a aplicação, baseando o nas opções que você incorporou ao wizard novo do projeto e à caixa de diálogo das propriedades do projeto do projeto. Click no projeto e selecione Build and run 2 - Usando DAO para Encapsular o código de acesso da base de dados Atualmente, o código que alcança a base de dados é contido dentro da classe Action do Struts. Mesmo que esta seja uma solução trabalhando, não é ótima. Todo o código de acesso da base de dados deve ser encapsulado atrás das classes do API do negócio, usando o padrão do objeto do acesso dos dados (DAO). Para detalhes deste padrão, ver Core J2EE Patterns - Data Access Object. Realizar o refactoring da aplicação de modo que o código de acesso dos dados seja encapsulado, você necessita fazer o seguinte: Criar uma fabrica de DAO. Criar uma interface que define os metodos necessarios. Criar o DAO implementando a interface e adicionando o acesso a base de dados. Adicionar o acesso ao DAO na Action do Struts.. As instruções detalhadas para cada uma das etapas acima são fornecidas abaixo. 1. Para criar a fábrica, criar uma classe nova conforme o código abaixo : package com.myapp.struts; import java.sql.connection; public class DAOFactory { /** Creates a new instance of DAOFactory */ public DAOFactory() { public static UserDAO createuserdao(connection connection){ return new DerbyUserDAO(connection); 2. Para criar a interface, criar uma interface nova conforme o código abaixo:

package com.myapp.struts; import java.util.arraylist; public interface UserDAO { public ArrayList getcustomers(); 3. Para criar o DAO, críar uma classe nova que implemente interface conforme o código abaixo: package com.myapp.struts; import java.sql.connection; import java.sql.preparedstatement; import java.sql.resultset; import java.sql.sqlexception; import java.util.arraylist; import javax.sql.datasource; public class DerbyUserDAO implements UserDAO { private Connection connection; private DataSource datasource; /** Creates a new instance of DerbyUserDAO */ public DerbyUserDAO(Connection connection) { this.connection = connection; public ArrayList getcustomers(){ ArrayList customerlist = new ArrayList(); try{ String sqlquery = "SELECT * FROM CUSTOMER"; PreparedStatement prpstmt = connection.preparestatement(sqlquery); ResultSet rs = prpstmt.executequery(); /** Here we put field 4 (the name) and field 7 (the city) in the customerlist: */ while (rs.next()) { customerlist.add(new row(rs.getstring(4), rs.getstring(7))); rs.close(); catch ( SQLException e ) { System.err.println("SQL Exception occured while accessing the table" ); e.printstacktrace();

return null; catch ( Exception e ) { e.printstacktrace(); return null; return customerlist; 4. Em DataSourceConnectionAction.java, você pode agora remover o método getcustomers (), porque agora será fornecido pelo DAO. Em seguida, você necessita reescrever esta linha: customerlist = getcustomers (); Substituir a linha com este snippet do código: datasource = (DataSource)servlet.getServletContext().getAttribute("empTable"); Connection conn = datasource.getconnection(); UserDAO dao = DAOFactory.createUserDAO(conn); customerlist = dao.getcustomers(); A classe inteira de DataSourceConnectionAction.java deve agora ser como o código abaixo : package com.myapp.struts; import javax.servlet.http.*; import org.apache.struts.action.*; import java.sql.*; import java.util.arraylist; import javax.sql.*; public class DataSourceConnectionAction extends Action { private DataSource datasource; public ArrayList customerlist = new ArrayList(); private final static String SUCCESS = "success"; public ActionForward execute(actionmapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { HttpSession session = request.getsession();

/** Here the method that connects to the datasource is called: */ datasource = (DataSource)servlet.getServletContext().getAttribute("empTable"); Connection conn = datasource.getconnection(); UserDAO dao = DAOFactory.createUserDAO(conn); customerlist = dao.getcustomers(); /** Here we put the customerlist in scope, so that we can use it in the JSP page: */ if(customerlist!= null){ session.setattribute("allmycustomers", customerlist); return (mapping.findforward(success)); 5. Build e run. O resultado deve ser o mesmo que antes.