Posted on 08:27, março 29th, 2008 by Prof. Luis Eduardo

Asp.net logo Confirmado: iniciarei novas aulas de Programação para Web, agora utilizando Asp.net. Estou terminando a definição do conteúdo programático e estarei publicando a aula inaugural ainda esta semana.

Nos mesmos moldes do Curso de Programação para Web em Java (completamente disponível aqui), o curso será aberto, isso é, não é necessário inscrição, e não haverá formação de turmas. Os alunos interessados devem apenas seguir as aulas, e podem enviar as dúvidas através dos comentários da aula ou do forum.

Uma novidade é que serão vídeos aulas. Uma vez que o ambiente Asp.net é bem mais visual que java, este esquema é praticamente obrigatório. Os vídeos serão publicados no youtube, e complementados com alguns textos aqui no site.

Ainda não defini qual o dia da semana publicarei as aulas, mas é bem possível que seja todas as terças-feiras, com pausas para feriados, e minhas férias.

Para o curso de Asp.net estou planejando entre 8 e 10 aulas.

Tecnoclasta ataca novamente! :-)

Atualizando:

Veja detalhes das aulas aqui.

Posted on 11:46, março 13th, 2008 by Prof. Luis Eduardo

Pois é senhores, esta é a última aula do curso de programação para Web em java.

Quem chegou agora, o curso pode ser feito, basta fazer as aulas a partir da primeira aqui. 

Foram 5 meses de curso e nada menos que 21 mil acessos. Espero realmente que todos tenham aprendido alguma coisa, e pelo menos encontrado o caminho das pedras para aprender mais a respeito.

Eu pretendia aprofundar mais alguns assuntos, porém não estou com disponibilidade para produzir um material com a qualidade que desejo. Portanto, as aulas que prometi, (por exemplo CRUD), estarão engavetadas no momento.

Para continuarmos mantendo o contato estou preparando uma nova categoria de artigos, com dicas rápidas para programadores em geral. Devido a minha experiência Java e Asp.Net, estes serão assuntos constantes. Estou aceitando sugestões de dicas, ou de assuntos a serem tratados.

A primeira dica que vou publicar é o uso de Ireport 2 para geração de relatórios em aplicações Web/Java. O foco é diferente do curso, uma vez que serão coisas para ajudar no dia-a-dia. Na fila teremos como tratar datas em formulários JSTL.

Estou preparando também um roteiro com material bibliográfico que utilizei para o desenvolvimento do curso.

Para aqueles que queiram deixar uma palavra final sobre curso, escrevam nos comentários deste artigo.

Quanto ao projeto de um curso nos moldes deste, mas sobre Asp.Net, estou estudando… ainda não é certeza. Existe interesse?

Posted on 09:06, março 8th, 2008 by Prof. Luis Eduardo

Fiquei muito curioso com um comentário do André Luiz que gostaria de saber se Netbeans em um EeePC/Ubunto funcionaria.

Tão curioso, que fui testar. Veja o resultado:

Carregando o Netbeans

Tela com Código

Executando um Projeto Web

Quanto ao tamanho da tela, tire suas próprias conclusões clicando nas figuras para ver em tamanho natural do EeePC.

A minha opinião é que é possível sim. O que torna esta maquina especialmente interessante para minhas aulas de Orientação à Objeto que terei no meu Mestrado a partir da próxima semana. Ter uma maquininha para usar em sala de aula com o ambiente de desenvolvimento completo rodando é Fabuloso!!

A performance do Netbeans ficou usável. Claro que as vezes fica desconfortável, mas está de acordo com o que eu esperava com 512MB. Se incomodar demais colocar 1GB de memória resolve com certeza.Preciso dar uma priorizada e enxugar a instalação do Ubuntu, mantendo somente o que realmente me interessa. A instalação do Netbeans + java SDK foi em um cartão separado.

O passo seguinte será colocar o mysql-server. Então terei uma cópia de meu ambiente de testes Desktop! Pensando bem será que conseguiria colocar o Oracle Express Edition??

Acho que terei que comprar um cartão de 8GB! (achei por R$ 169 alguém tem preço melhor por aí?)

Posted on 18:54, março 7th, 2008 by Prof. Luis Eduardo

Sejam bem vindos, esta é a décima sétima aula de Programação Web em Java, para saber mais sobre o curso, começe em Curso de Programação Web em Java - CPWJ

Depois que vimos uma aplicação funcionando, vamos agora detalhar cada parte do processo. Nosso estudo de caso será o sistema de busca, porém iremos incrementá-lo significativamente.

Esta aula está sendo postada com atraso, devido a problemas que tive para publicar o código java no Wordpress. Depois de várias tentativas, decidi colocar os arquivos *.java e os *.xml em um diretório do servidor para que você possam baixar.

Voltemos à aula

Comecemos estudando a camada Model, ou modelo: O objetivo desta camada é definir as entidades envolvidas e as regras de negócio do programa. Em orientação a objeto, não nos preocupamos inicialmente com a interface do programa, mas sim de um modelo de representação das entidades que fazem parte do projeto. Uma abordagem pedagógica para atacar o problema é escrever de início um lista de requisitos do sistema, discutindo o que ele precisará ter:

  • Permitir o usuário digitar uma palavra chave e obter uma lista de sites que possuem relação com a palavra digitada usando o motor de busca;
  • Permitir um usuário cadastrar um ou mais sites definindo uma lista limitada de palavras chaves relacionadas com seu site;
  • Permitir um administrador do sistema corrigir, adicionar ou eliminar algum site cadastrado no sistema;

Esta será a lista de requisitos que usaremos no nosso exemplo. Para construir o modelo devemos olhar esta lista e identificar as entidades necessárias. Uma abordagem é olhar os substantivos. Estes serão entidades candidatas:

usuário, palavra chave, lista de sites, site, lista de palavras chaves, administrador, sistema de busca, cadastro Esta é uma lista preliminar, já eliminando repetições. O passo seguinte é separar o que é atributo, do que é classe, ficando somente as classes:

  • Usuário (administrador é um tipo de usuário especial)
  • Site (Lista de palavras chave é um atributo do site. Lista de Sites é uma coleção de sites)
  • Motor de busca
  • Cadastro de Sites

Depois disso iremos definir quais atributos são importantes para estas classes funcionarem de acordo com os requisitos.

  • Usuário: Id, Nome, Apelido, Senha, Email, Nível
  • Site: Id, Nome, Descrição, Url, KeyWords, Responsável (pelo cadastro)
  • Motor de Busca: Resultado da Busca, KeyWords (a serem encontrados)
  • Cadastro de Sites: Usuário responsável

Implementamos então as classes de modo que sejam manipuláveis pelo Hibernate. Este framework é responsável pela persistência, isso é, pelo armazenamento dos objetos criados na memória, para o banco de dados relacional. As regras para que as classes sejam manipuláveis pelo Hibernate são os seguintes:

  • A classe deverá ser um Java Bean definindo os atributos como dados privados e com funções públicas Getters e Setters. (veja em wikipedia as regras de uma classe Java Bean);
  • A classe deverá ter um construtor sem parâmetros para permitir o Hibernate criar objetos;
  • Deve possuir uma chave primária: isso é um campo id que armazenará um valor único que será gerado pelo Hibernate. A funcão setID() é privada, pois somente o Hibernate deverá modificar o campo chave.
  • A classe Motor de Busca e cadastro de Site não será persistido. Já que não é necessário a manutenção da busca realizada entre as chamadas.

No nosso exemplo teremos uma nova classe Usuario:

Usuario.class

Observe no código que criei uma propriedade “sites” com um HashSet. Esta propriedade irá auxiliar durante a manutenção dos sites que um usuário possui.

private Set sites = new HashSet();

E criamos o arquivo Usuario.hbm.xml na pasta sbusca. Este arquivo indica ao Hibernate o funcionamento da persistência da classe Usuário criada:

Usuario.hbm.xml

Além disso devemos incluir ao arquivo hibernate.cfg.xml:

<mapping resource=”sbusca/Usuario.hbm.xml”> </mapping>

Após todas estas codificações teremos duas entidades: Usuário e Sites. Além delas vamos definir uma classe chamada MotorBusca, que fará a lógica mais importante do sistema, isto é, a busca em si. Não é nada complicado e seria possível fazer o código diretamente nos Actions do Struts, mas vamos abusar um pouco de orientação a objeto. Olhando este exemplo simples quem sabe em um trabalho mais complexo você não se intimide. A classe deverá ter: MotorBusca:

  • Propriedade keyword: String e método executar() com e sem parâmetro;

E o código da classe ficará:

MotorBusca.java

Já definimos nesta aula um modelo quase completo para o nosso sistema. Deixei para depois somente o Cadastro de Sites, pois para implementá-lo será necessário falarmos de um CRUD, também conhecida como tela de Cadastro. Iremos ter uma aula somente sobre isso, quando voltaremos para tornar completo o modelo.

Para que você possa verificar se a busca está funcionando, criei uma classe simples de teste:

TesteBusca.java

Por hoje é só.

Dúvidas? vá para o fórum.

Posted on 15:27, fevereiro 25th, 2008 by Prof. Luis Eduardo

Sejam bem vindos, esta é a décima sexta aula de Programação Web em Java, para saber mais sobre o curso, começe em Curso de Programação Web em Java - CPWJ

Na última aula começamos a construir o sistema de busca. Configuramos o Hibernate para uso com o Netbeans. Esta primeira aplicação é para verem tudo funcionando junto. Depois irei destrinchar com detalhes cada parte do processo.

Camada Model

Hoje vamos terminar o sistema começando com a camada Model. A camada Model representa as entidades lógicas que precisamos para construir nossa aplicação. Para o funcionamento correto teremos a classe Sites, representando os sites armazenados no sistema, (isso já está pronto) e teremos também a classe MaquinaDeBusca.

A classe MaquinaDeBusca fará o trabalho pesado permitindo buscar uma lista de Sites de acordo com a palavra chave. Na verdade a classe de teste da última aula tem tudo que precisamos: A função “List buscaSites(String keyword)” realiza a busca dos itens com palavra chave igual ao parâmetro e devolve uma lista com os objetos que atendem a busca.

Camada View

A segunda camada que iremos trabalhar é a camada View. Vamos começar criando uma página JSP que apresenta um formulário para o preenchimento do usuário. Escolha “File/New File” no menu do Netbeans. Na janela “New File” selecione categoria “Web” tipo de arquivo “JSP” e clique em “Next”. Chame a página de “busca” e clique em “Finish”.

Para o formulário faremos algo bem simples:

<%@page contentType=”text/html” pageEncoding=”UTF-8″%>

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”

“http://www.w3.org/TR/html4/loose.dtd”>

<html>

<head>

<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″>

<title>Sistema de Busca</title>

</head>

<body>

<form action=”buscar.do”>

<input name=”buscar”/>

<input type=”submit” value=”Buscar”/>

</form>

</body>

</html>

Veja que o formulário chama a ação “buscar.do”. O que será esta ação definiremos pelo framework Struts. Já vamos chegar lá. Vamos também criar um página chamada resultado.jsp que permitirá ver a lista de Sites encontrados. Para funcionar vamos supor que temos uma variável de requisição com o resultado da busca:

<%@page contentType=”text/html” pageEncoding=”UTF-8″%>

<%@taglib uri=”http://struts.apache.org/tags-html” prefix=”html”%>

<%@taglib uri=”http://struts.apache.org/tags-logic” prefix=”logic”%>

<%@taglib uri=”http://struts.apache.org/tags-bean” prefix=”bean” %>

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”

“http://www.w3.org/TR/html4/loose.dtd”>

<html>

<head>

<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″>

<title>Sistema de Busca</title>

</head>

<body>

<form action=”buscar.do”>

<input name=”buscar”/>

<input type=”submit” value=”Buscar”/>

</form>

<logic:empty name=”sites” >

<h5>Nenhum Ítem Encontrado</h5>

</logic:empty>

<logic:notEmpty name=”sites”>

<table border=’1′>

<tr>

<th>Nome</th>

<th>Descrição</th>

<th>Url</th>

<th>Palavras Chave</th>

</tr>

<logic:iterate name=”sites” id=”site”>

<tr>

<td>${site.nome}</td>

<td>${site.descricao}</td>

<td>${site.url}</td>

<td>${site.keyword}</td>

</tr>

</logic:iterate>

</table>

</logic:notEmpty>

</body>

</html>

Os tags logic:empty e logic:iterate são bastante auto explicativos. São parte da biblioteca de componentes do Struts. Veja as linhas após o @page.

Camada Control

Agora só falta juntar todas as peças. Quem faz isso é a camada Control. E esta camada é implementada pelo framework Struts. Nós temos apenas que definir o que acontecerá em cada ação possível do usuário.

A única ação deste sistema que o usuário poderá executar é clicar em buscar no formulário de busca. Então vamos gerar um Ação Struts para tratar este evento.

Escolha novamente “File/New File” no menu do Netbeans e na janela “New File” escolha categoria “Struts”, tipo de arquivo “Struts Actions”. Clique em “Next” e digite o nome do Action como “buscarAction”, o package como “sbusca” e o action Path para “/buscar”. Clique em “Next” e desligue a opção “Use ActionForm Bean”. Clique em Finish.

Modifique a função “Execute” para determinar o que acontecerá ao clicar o botão Buscar:

public ActionForward execute(ActionMapping mapping, ActionForm form,

HttpServletRequest request, HttpServletResponse response)

throws Exception {

MaquinaDeBusca mdb=new MaquinaDeBusca(); //Prepara um objeto do modelo

String busca= request.getParameter(”buscar”); //recupera o que o usuario digitou na caixa de texto

List sites=(ArrayList) mdb.buscaSites(busca); //Usa o modelo para obter os sites que batem com a palavra chave digitada pelo usuário

request.setAttribute(”sites”, sites); //armazena os sites encontrados para que a camada view (resposta.jsp) mostre a lista de sites encontrados

return mapping.findForward(SUCCESS); //passa a ação para o struts

}

(incluir “import java.util.*;” junto aos outros imports)

Falta muito pouco. Abra o arquivo struts-config.xml em WEB-INF na aba Project. Este arquivo está a configuração da amarração das ações com a views.

Modifique a linha <action path=”/buscar” type=”sbusca.buscarAction”/> para:

<action path=”/buscar” type=”sbusca.buscarAction”>

<forward name=”success” path=”/resultado.jsp”/>

</action>

Isso fará com que ao final da Action “BuscarAction” a página de resposta que irá para o usuário será a “resultado.jsp”.

Aproveite e defina a página padrão modificando a linha <action path=”/Welcome” forward=”/welcomeStruts.jsp”/> para: <action path=”/Welcome” forward=”/busca.jsp”/>

Pronto, basta executar a aplicação e terá o sistema funcionando! (tecla F6 ou menu Run/Run Main Project)

Sei que vão pintar milhares de dúvidas, porém estou aqui para esclarecer. (no fórum).

Na próxima aula vamos detalhar cada parte do processo, começando com um longo artigo sobre a camada Model.

Buscar:

Arquivos

Índice

Arquivo

agosto 2008
S T Q Q S S D
« jul    
 123
45678910
11121314151617
18192021222324
25262728293031

RSS Meu FriendFeed

Contato