20 de setembro de 2010

JavaEE 5: CRUD com JSP e Servlet - Parte II

Continuando a aula do dia 18/08/2010, vamos implementar o alterar e o remover de nossas categorias.
Altere a página index.jsp, para que ela fique com o seguinte código:

Depois de salvar as alterações o resultado é o seguinte:
Perceba que foram adicionados dois links: um para a página alterarCategoria.jsp e outro para a removerCategoria.jsp, ambos passando o código da categoria por parâmetro na própria URL. Porém essas páginas ainda não estão criadas, então vamos começar a criar e implementar as mesmas.

Implementando o alterar:

Inicialmente vamos alterar nossa classe Categoria_DAO.java, incluindo nela os métodos para selecionar a categoria pelo código da mesma, e o método de alterar a categoria:
Obs.: o método selecionar(int codigo), será reutilizado quando for implementado o remover.

Dentro do pacote control, crie um Servlet com o nome de AlterarCategoria.java, implemente o método doPost como a imagem abaixo:


Dentro do WebContent crie uma nova página JSP, com o nome de alterarCategoria.jsp, lembre-se que a action do form, é nosso servlet AlterarCategoria.java:
Ao clicar em Alterar no index.jsp, o resultado será este (perceba que o código da categoria sendo passado por parâmetro na URL):

Estando assim finalizado os passos para alterar nossa categoria.

Implementando o remover:

Novamente vamos começar alterando a classe Categoria_DAO.java, para incluir o método remover:
Dentro do pacote control, crie um Servlet com o nome de RemoverCategoria.java, implemente o método doPost como a imagem abaixo:

Dentro do WebContent crie uma nova página JSP, com o nome de removerCategoria.jsp, lembre-se que a action do form, é nosso servlet RemoverCategoria.java:

Ao clicar em Remover no index.jsp, o resultado será este (perceba que o código da categoria sendo passado por parâmetro na URL):

Estando assim finalizado os passos para remover nossa categoria.

15 de setembro de 2010

JavaEE 5: CRUD com JSP e Servlet - Parte I

Este é um exemplo de uma inserção de uma categoria qualquer...
Com o eclipse todo configurado(aula do dia 04/08/2010), vamos criar um projeto web:
No Eclipse vá em File - New - Dynamic Web Project

Depois de criar o projeto, vamos configurar a aplicação para conectar ao banco de dados MySQL, para que isso ocorra precisaremos do driver JDBC para MySQL encontrado em: http://dev.mysql.com/downloads/connector/j/ 
Agora vamos adicionar o driver ao projeto:


Explicando a imagem acima:
1. Clique com o botão direito do mouse sobre o projeto criado, e já em "Properties"
2. Na janela que vai aparecer, clique em "Java Build Path"
3. Já para a aba "Libraries"
4. Clique em "Add External JARs"
5. Localize o driver JDBC que foi baixado, e o selecione
6. Clique em "OK"


Explicando a outra imagem:
1. Verifique que o .jar tenha sido adicionado as bibliotecas
2. Confirme a operação clicando em "OK"

Bom... agora já temos nosso projeto configurado para acessar o banco de dados!
No MySQL vamos criar um database chamado "tads", dentro deste uma tabela chamada Categoria, segue o codigo SQL:
create table Categoria (
codigo int(10) unsigned not null auto_increment,
nome varchar(45), primary key (codigo))
Esta será a estrutura final deste projeto:

1. Temos o projeto ProjetoJsp, Dentro de "Java Resources: src" temos os pacotes: control, model e dao
2. No pacote control, guardamos nossos servlets
3. No pacote dao, guardamos tudo o que é relacionado ao banco de dados, ex: o arquivo Conexao.java (responsável por fazer a conexão com o BD)
4. No model, encontramos nossas classes de modelo.
5. A pasta WebContent é a pasta onde ficam nossos arquivos .jsp, esses são os arquivos que o usuário tem acesso.

Agora vamos iniciar a implementação do mesmo...
1. dentro de "Java Resources: src" criamos  um pacote model, dentro dela criamos uma classe Categoria.java.

Nela temos os atributos codigo e nome, lembre-se de implementar os getters e setters...

2. dentro de "Java Resources: src" criamos  um pacote  dao, dentro dele criamos uma classe Conexao.java, que será nosso arquivo de conexão com o BD.

Neste arquivo temos atributos como: driver, url, usuario e senha.

public Conexao() - este é o construtor da nossa classe Conexao.java, quando fazemos new Conexao(); estaremos executando este método, que está sendo responsável por criar a conexão com o banco;
public Connection getConn() - método para pegar a conexão;
public void fecharConexao() - sempre que uma conexão for aberta, depois de fazermos as operações que desejamos, devemos fechá-la;

3. Agora ainda dentro do pacote dao, criaremos uma nova classe Categoria_DAO.java

Nesta classe criamos inicialmente dois métodos:
public String inserir(Categoria categoria) - método que insere a categoria no banco de dados.
public List listar() - método responsável por carregar  e retornar uma lista de categorias, será utilizada para mostrar as categorias inseridas.

4. dentro de "Java Resources: src" criamos mais um pacote chamado control, onde ficarão nossos servlets. Agora vamos criar o servlet InserirCategoria.java, para isso: clique com o botão direito do mouse no pacote control - new - Servlet .
Apenas o método doPost será implementado, como na imagem acima.

5. Na pasta WebContent vamos criar agora nossa página JSP para inserir a categoria: Clique com o botão direito do mouse na pasta WebContent - new - JSP, informe o nome inserirCategoria.jsp

Implemente o inserirCategoria.jsp de acordo com a imagem acima, ao ser criado pelo eclipse, várias informações já vem presentes nela, então, o que realmente será implementado é o form.

6. Ainda no WebContent vamos criar nossa página incial, do mesmo jeito que foi criado a página inserirCategoria.jsp, crie uma página index.jsp

Esta deve ser implementada como a imagem acima, fique atento aos detalhes.
Observe que existem umas tags <% , estas são utilizadas para colocar códigos Java dentro de nossas páginas JSP's.

Executando nossa aplicação: 
Lembre-se de adicionar o projeto no JBoss, o mesmo deve estar como a imagem abaixo:

Caso não esteja assim, clique com o botão direito em JBoss 6.0 Runtime Server - Add and Remove - Selecione o projeto e clique em add.
Inicie o JBoss, depois de iniciado, digite no navegador : 
http://localhost:8080/ProjetoJsp
o resultado deverá ser o seguinte:

Obs: a tabela aparecerá vazia, neste caso já haviam dados no banco.

Ao clicar no link de Inserir Categoria na página index.jsp, a mesma deverá aparecer:
Ao inserir uma categoria com sucesso, a página é retornada para a index.jsp.

Bom... este é o básico para aplicações web com java!

Obs: caso ocorra alguma exceção do tipo ClassNotFoundException relacionada ao JDBC, cole o mesmo driver JDBC utilizado na aplicação dentro do seu servidor de aplicação: jboss-6.0.0 - server - default - deploy

=)

10 de setembro de 2010

JavaEE 5: Ambiente de trabalho

Como servidor de aplicação usaremos o JBoss: é um dos servidores de aplicações mais completos, também é capaz de trabalhar com as tecnologias mais modernas e possui frameworks incorporados a sua distribuição(ex: JSF e Hibernate, estes serão utilizados mais a diante).
Para trabalhar com Java EE, utilizaremos a ferramenta de desenvolvimento Eclipse, que possui um pluguin que controla as funcionalidades do nosso servidor de aplicação JBoss, este pluguin é o JBoss Tools.
Como gerenciador de banco de dados, será utilizado o MySQL, ferramenta gratuita e de fácil manipulação.
Os links para configuração das ferramentas acima citadas estão disponíveis abaixo:
*Lembrando que para desenvolvermos em Java é necessário o JDK.
Passo a passo para baixar o JDK:

Passo a passo para baixar o Eclipse:

Passo a passo para baixar o JBoss:

Passo a passo da instalação do JBoss Tools:

Configuração do JBoss no Eclipse :

Tutorial de instalação do MySQL:

Créditos dos tutoriais de instalação:
Ivan Salvadori

Mais informações:
Introdução Java Web

5 de setembro de 2010

JavaEE: Servlets

Quando se trata do desenvolvimento de aplicações web em linguagem de programação Java, deve-se conhecer os servlets, pois os mesmos são a base nesse tipo de desenvolvimento. Esta tecnologia, é a base para outra tecnologia Java, conhecida como JavaServer Pages (será estudada na próxima aula). De forma mais simples, os servlets são classes que dinamicamente processam requisições(request) e respostas(response).


Benefícios
As aplicações desenvolvidas em tecnologia servlet, ganham em desempenho, pois os mesmos não são criados todas as vezes em que o usuario os solicitam, isso quer dizer que depois de solicitado uma vez, o servlet permanece na memória esperando uma nova solicitação.
Outra vantagem é a portabilidade, isso já vem da própria plataforma Java. Aplicações web em Java rodam em outros sistemas operacionais sem problema.
Por ser uma tecnologia Java, o desenvolvimento com servlets tem um rápido ciclo de desenvolvimento, devido a rica biblioteca do Java.
Com aplicações que são gerenciadas pela Java Virtual Machine não há porque o desenvolvedor se preocupar com o gerenciamento de memória, pois esta possui um "coletor de lixo" que é executado de tempos em tempos eliminando objetos que perderam a referência na memória, liberando assim mais memória para a execução do sistema. Tornando assim um sistema mais robusto.
Além da linguagem Java ter uma ampla aceitação no mercado, tanto é que inúmeros fabricantes trabalham com tecnologias baseadas em Java.
Lembrando os conceitos da aula anterior...
*Request: são requisições feitas ao servlet, representada por exemplo, pelo submit de um formulário.
*Response: são respostas dadas à requisições feitas ao servlet. Um servlet recebe um request, trata o mesmo e retorna um response.
*método doGet: Este é chamado quando uma solicitação HTTP é enviada através do método GET. Lembrando que GET é o método padrão em HTTP, sendo assim quando o servlet é chamado pela primeira vez a partir de um brower da web, digitando-o na URL, o método doGet é executado.
*método doPost: Quando um formulário é submetido utilizando o método POST e enviado a um servlet, este executa o método doPost para tratar os dados enviados.

O arquivo web.xml
Serve como um descritor das funcionalidades e caracteristicas da sua aplicação. Ele determina como os servlets são mapeados para os URLs, ou seja, é a partir desse mapeamento que o servlet pode ser acessado pelo navegador, sem este mapeamento não é possível ter acesso ao servlet.
Segue trecho do mapeamento de um servlet: Hello.java


Explicando as tags...
servlet : definindo o servlet;
display-name : nome de visualização do servlet;
servlet-name : nome do servlet;
servlet-class : localização da classe;
servlet-mapping : mapeando o servlet para ser acessado pela URL;
url-pattern : URL pela qual o servlet será acessado, exemplo: http://localhost:8080/MeuProjeto/Hello

Exemplo de implementação do servlet Hello.java:


Resultado no navegador:




Depois dos conceitos, iremos praticar o que foi visto!


Referências
KURNIAWAN, B. Java para a Web com Servlets, JSP e EJB. Ciência Moderna, 2002.

1 de setembro de 2010

JavaEE: Conceitos básicos

Aplicações Web
Aplicações desse tipo são executadas a partir de navegadores de Internet (ex: Internet Explorer, Firefox...). Não necessitam de instalação na maquina dos clientes, são instaladas e executadas em servidores. Isso facilita na atualização e na manutenção do código fonte, já que o mesmo fica num único lugar, e ao ser atualizado essa atualização fica disponível na mesma hora para todos os usuários.

Aplicação Desktop X Aplicação Web
Uma aplicação Desktop geralmente tem no mesmo lugar, a visualização e a lógica, sendo assim o processamento fica todo na maquina cliente, podendo compartilhar um servidor de banco de dados.
Tratada como arquitetura de software two-tiers.


Uma aplicação Web tem sua visualização e lógica divididas, ou seja: a visualização fica disponível a maquina cliente, e a lógica é processada em um servidor de aplicação. Tratada como arquitetura de software multi-tiers ou n-tiers.


Servidor de Aplicação
Trata-se de um software que dispõe de um ambiente de instalação e execução de certas aplicações, tem como objetivo abstrair do desenvolvedor algumas das complexidades de um sistema computacional. Por exemplo: JBoss, GlassFish...

Java Enterprise Edition
Trata-se de um conjunto de especificações e um guia de práticas para o desenvolvimento de aplicações web, em linguagem de programação Java. Essas especificações juntamente com o guia permitem o desenvolvimento, instalação, execução e gerenciamento de aplicações n-tiers ou n-camadas no servidor. É uma plataforma completa, robusta, estável, segura e de alta performance.

Servlets
Pertencem a plataforma Java EE. São basicamente classes que dinamicamente processam requisições e respostas. Os principais pontos a ser entendido de um servlet são: request, response, método doGet e método doPost.
Request: são requisições feitas a servlet, representada por exemplo, pelo submit de um formulário.
Response: são respostas dadas à requisições feitas ao servlet. Um servlet recebe um request, trata o mesmo e retorna um response.
doGet: Este é chamado quando uma solicitação HTTP é enviada através do método GET. Lembrando que GET é o método padrão em HTTP, sendo assim quando o servlet é chamado pela primeira vez a partir de um browser da web, digitando-o na URL, o método doGet é executado.
doPost: Quando um formulário é submetido utilizando o método POST e enviado a um servlet, este executa o método doPost para tratar os dados enviados.

JavaServer Pages (JSP)
É uma tecnologia para aplicações web em plataforma Java, bem similar a PHP, ASP, entre outras linguagens voltadas a web. Uma das vantagens desta linguagem é a portabilidade por causa da plataforma Java. Os arquivos são salvos em extensão .jsp .(Mais utilizada na versão do JEE 5)