• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

cheires

JEE

8 mensagens neste tópico

Olá a todos.

Comecei recentemente um projecto em JEE.

Não sou muito experiente em JEE, mas o mesmo tem que ser escrito em JEE.

A dúvida propriamente dita é que para cada ficheiro JSP tenho um servlet a "apoiar" (executam operações em BD).

Num dos servlets tudo corre normalmente, é um servlet para escrever na BD e essa escrita ocorre normelmente.

Em outro dos servlets há uma outra escrita na mesma BD numa tabela diferente, só que na realidade não escreve nada na tabela.  (não dá qualquer erro ou warning)

Ambos os servlets são quase uma cópia um do outro (apenas muda os que tenho que escrever na BD), alguém me sabe dizer porque não funciona?

Será necessário fazer algum termino de ligação à BD no servlet que funciona para além do "con.close()"?

Mas mesmo que inicie o servidor e execute logo o servlet que não funciona o resultado é o mesmo.

Todos os campos a escrever na tabela estão bem escritos e mais que verificados.

Obrigado a todos.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu no teu lugar tentava separar isso, faz uma classe que faz a comunicação com a BD e depois da JSP usas essas classe, para além disso é mais fácil controlar a concorrência.

Pesquisa sobre o Pattern DAO, adaptasse exactamente ao que precisas isso de casa JSP ou Servlet fazer uma ligação à BD não é muito boa ideia.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado magician pela dica.

Depois de ter implementado toda a estrutura DAO, surgiu um problema.

Tenho um ficheiro jsp para o utilizador preencher umas caixas de texto, e em seguida uso um servlet para ler as informações da caixa de texto e as modificar para os tipos dos dados respectivos. Eu utilizo em primeiro lugar objectos. e depois insiro o objecto na tabela, através do DAO.

No servlet criei o objecto e o respectivo TableDAO, onde vou inserir o objecto na tabela SQL.

Quando criei um programa local era assim que procedia.

A minha dúvida é a seguinte, como estou a usar servlets e jsp, a forma de proceder é a mesma?

Obrigado a todos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Normalmente faço uma classe DAOManager com métodos static género Singleton que tem lá os DAOs todos e assim posso aceder de qq lado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu no servlet também tenho acesso aos DAOs.

O problema é que me já um erro Java null poiter exception, precisamente na chamada do método inserir do DAO.

Por estar a dar esse erro, pensei que não seria essa a forma mais correcta de chamar o método.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ao fazeres new DAO na servlet cada vez que é criada uma servlet é criado um objecto desses não me parece a forma mais correcta realente. Tenta fazer com disso uma classe manager que tem métodos static para cada DAO

depois basta fazer DAOManager.getTableDAO().insert(x)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Consegui resolver esse problema, mas agora aparece outro.

Ao executar o código no servidor (estou a usar o glassfish) não me faz a conecção.

Quando se usa servlets (sem recorrer ao DAO) para a conecção usa-se

@Resource (name = "jdbc/db")
DataSource dbDS;
...
con=dbDS.getConnection ();

e está a conecção resolvida.

Mas ao usar DAO, não estou a conseguir a conecção.

dá-me sempre java null pointer exception devia à conecção estar a null.

Como se usa a conecção para o DAO?

Mais uma vez, obrigado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois isso só funciona nas classes executadas pelo glassfish se não me engano :\

Um solução não muito bonita é fazer um setConnection na Classe DAO Manager em que mandas esse con.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora