TCC - JSP com classe Controle

17 respostas
M

Fala pessoas…bom dia…

Estou desenvolvendo um projeto para meu último ano da faculdade utilizando JSP e estrutura MVC com TO e DAO.

Quando eu retorno uma consulta do Banco de Dados, eu passo um objeto TO para a JSP e dentro da JSP ela distribui tdas as informações para os campos. Agora, eu estou precisando fazer uma ação e preciso que a Controle “puxe” o TO que está na JSP, altere as informações e retorne para a JSP com o TO alterado.

Estou tentando usar aquele parametro request.getParameter() porém ele só retorna String. Seria mais ou menos uma coisa assim:

Classe Controle

MoradorTO TO = new MoradorTO(); TO = (MoradorTO) request.getParameter("TO");

O problema é q ele dá erro na parte do (MoradorTO) request.getParameter() pois eu estou tentando converter um objeto String para um objeto MoradorTO.

Se alguém tiver alguma idéia, please!!!

Falow! Boa pascoa!

17 Respostas

Richard_Mendes_Madur

Neste caso, acho que o correto seria utilizar outro método:

MoradorTO to = (MoradorTO) request.getAttribute("to")

Para isso, você deverá incluir na request o objeto utilizando o seguinte método:

MoradorTO to;
...
request.setAttribute(to);

Espero ter ajudado!
Valeu!

M

Richard, obrigado pelo retorno.

Eu fiz esse teste com o getAttribute porém a variável dentro da Controle fica null. Neste caso, parece q ele não consegue encontrar o atributo TO.

Esse getParemeter() ou getAttribute() ele não retorna apenas os valores dos campos em html?

rodrigo.bossini

Caindo de para-quedas no seu post, o que é esse TO? É um design pattern? Como funciona?

Valeu.

M

Estou usando arquitetura MVC (Model View Control) com implementação das classes DAO (Banco de Dados) e TO (Saco de Dados).

Esse TO seria todas as informações que são pegas pela VIEW e passada entre as camadas…Ela é instanciada pela Controle onde são armazenados as informações da VIEW e ao invés de passar dado por dado para Modelo e DAO eu passo um objeto TO para Modelo e a modelo encaminha para a DAO onde a mesma “tira” os dados e faz a sua utilização bem como também inclui dados.

Ex: Um morador de um condomínio possui os atributos de Nome, Endereço, Telefone e E-mail. Ao invéis de eu passar essas variáveis uma de cada vez (ou através de parametros) para a Modelo, eu preencho uma TO na controle e passo apenas um objeto TO. A idéia é a mesma quando retorna do Banco de Dados.

Falow!

franciscossouza

Metendo o bedelho… por que não usar um framework MVC pra isso? :slight_smile:

Tipo um VRaptor 3 da vida x)

M

Já me falaram isso cara…mas, o raio da Faculdade quer a utilização apenas do Eclipse com TomCat e PostGree SQL.

Tuuuuuuddo pra ajudar…tem que fazer o esquema qse na unha.

franciscossouza

Saquei x)

Então boa sorte aí com os Servlets hehe

M

RSsrsr…valeu cara.!

Bom, se alguém tiver alguma idéia de como eu passar o maldito TO que está na VIEW para o Controle!!!..

rodrigo.bossini

mvergani:
Estou usando arquitetura MVC (Model View Control) com implementação das classes DAO (Banco de Dados) e TO (Saco de Dados).

Esse TO seria todas as informações que são pegas pela VIEW e passada entre as camadas…Ela é instanciada pela Controle onde são armazenados as informações da VIEW e ao invés de passar dado por dado para Modelo e DAO eu passo um objeto TO para Modelo e a modelo encaminha para a DAO onde a mesma “tira” os dados e faz a sua utilização bem como também inclui dados.

Ex: Um morador de um condomínio possui os atributos de Nome, Endereço, Telefone e E-mail. Ao invéis de eu passar essas variáveis uma de cada vez (ou através de parametros) para a Modelo, eu preencho uma TO na controle e passo apenas um objeto TO. A idéia é a mesma quando retorna do Banco de Dados.

Falow!

Ah tá. Então TO significa Transfer Object. É isso, né?

F

Para usar o getAttribute sem pegar um null, vc antes tem de usar um setAttribute.
Está fazendo isto?

M

Isso mesmo rod.attack.

fvslistas, como assim usar um setAttribute antes? Poderia colocar um exemplo por favor?

F

Exemplo

protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		processa(request, response);
	}

	protected void processa(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		String obj = "um obj qq";
		request.setAttribute("atributo", obj);
		RequestDispatcher dispatcher = getServletContext()
				.getRequestDispatcher("/pagina.jsp");
		dispatcher.forward(request, response);
	}

No exemplo acima o meu servlet vai chamar a página “pagina.jsp” e esta vai conseguir pegar o attribute “atributo”.
Se eu não tivesse usado o setAttribute, eu não teria como usar o getAttribute. Para usar o get sem receber um null, vc tem antes de usar o set.

M

fvslistas, agradeço sua resposta.

Fiz o teste do código que vc me mandou mas não deu certo. Pelo q vi, a forma que vc fez é pra despachar um objeto criado na Controle para a JSP (se entendi errado, me corrija).

A idéia é ao contrário: eu preciso pegar um objeto da VIEW e passar para a Controle. Quando eu instanciar a controle, a controle tem que criar um TO e igualar esse TO ao TO que está na JSP.

Se tiver outra idéia, posta q eu tento.

Valeu!

F

Você pode passar pelo request usando o método setAttribute().
Os dados também podem ser recebidos do usuário através dos forms e recuperados pelos servlets com o método getParam().

M

Eu fiz o teste usando o getParameter() porém, o tipo de retorno dele é apenas String pois ele retira informações de um tipo de campo de texto. Tentei converter para o MoradorTO e não deu certo. Usei também o getAttribute() onde o tipo de retorno é um objeto da seguinte forma:

MoradorTO TO = new MoradorTO(); TO = (MoradorTO) request.getAttribute("TO");

Ele não dá erro na compilação porém, a variável TO fica null.

Eeeeeiiita tcc loco!!

F

Posta aí o código onde vc chama o setAttribute e o código onde chama o getAttribute().

leandronsp

Se vc não pode usar um framework, que popula um objeto pra vc, creio que vc terá que popular esse objeto na sua Servlet.
Não sei onde, mas em algum lugar (num JSP) vc deve estar passando um input text com o nome de “TO” certo?. O que é esse parâmetro? O nome do morador?

Se for o nome, vc poderia fazer algo do tipo:

String parametroNome = request.getParameter("nome");
MoradorTO morador = new MoradorTO();
morador.setNome(parametroNome);

Dica: procure usar nomes para variaveis que sejam auto-explicativos, no formato “camelCase”

Criado 4 de abril de 2010
Ultima resposta 9 de abr. de 2010
Respostas 17
Participantes 6