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!
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?
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:
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í?)
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.
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:
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:
Depois disso iremos definir quais atributos são importantes para estas classes funcionarem de acordo com os requisitos.
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:
No nosso exemplo teremos uma nova classe Usuario:
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:
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:
E o código da classe ficará:
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:
Por hoje é só.
Dúvidas? vá para o fórum.
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.
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.
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.
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.
Arquivos
| Índice | Arquivo |
| Contato |