JSP + ServLets

8 respostas
joaoabi

Boa Noite Gujnautas!

Minha dúvida é bem, teorica.

Vamos lá

Quando eu vou linkar uma Servlet eu ponho esta no action do formulário;
Ex:

<form name="formulario" action="/minhaServlet">

Até ai ok, porém quando eu quero fazer um CRUD usando Servlet, eu so posso colocar um servlet por action
eis que lhes pergunto… e ai como faz?

É preciso colocar mais de um form?Eu creio que assim fica meio estranho.

8 Respostas

raffamz

OI Amigo!
Boa noite!

Bom, na verdade, acho que sim! Cada action acionará uma classe dentro do servlet, pelo sevlet name. A menos que utilize um controlador, ou então um framework (Spring MVC, Struts 2).

Espero ter ajudado.

joaoabi

Hmmm, entendi, vou procurar saber sobre os framesworks entao,
porque acho um monte de formularios nao vai ficar muito legal o codigo.

Victor_Neves

voce nao precisa criar uma servlet para cada operaçao CRUD!!
voce pode criar uma unica servlet e lá fazer um controle da açao esperada!

no caso de usar um framework como o struts1, voce pode acabar tendo de criar uma action (a “servlet” do struts1) para cada operaçao CRUD… o que tem suas vantagens e desvantagens, a meu ver.

joaoabi

Victor eu posso criar uma servlet para tudo ok,
mas como eu faço para chamar apenas o método em questão,
exemplo:

Tenho um DAO, que, Insere, Deleta , Lista e Altera, o nome dela é GerenciarContato
como faço para ela saber em qual método vai executar?

Outra coisa todos os botões têm que ser do tipo submit?

Victor_Neves

voce pode fazer assim, voce tem as JSPs e nas JSPs voce tem seus formulários, vamos supor que voce vá inserir um contato, entao voce tem o form com os campos, dai voce pode criar um campo hidden chamado "inserir", +- assim

<form action="/minhaServlet" method="POST" >
<input type="hidden" value="inserir" name="acao" /> 
<!--  os campos a preencer e o botao de enviar -->
</form>

dai lá na servlet voce pode fazer assim:

public doPost (os parametros que ele passa){

String acao = request.getParameter("acao");
Contato contato = new Contato();
DaoContato dao = new DaoContato();

if("inserir".equals(acao)){
// aqui voce populao bean, aconcelho a delegar isso a um metodo de alguma classe, um facade por exemplo, pra ficar mais bonitinho e nao tao errado

dao.inserir(contato); // aqui voce passa o bean ja populado so para fazer o insert

} else if("update".equals(acao)){

//aqui voce chama o metodo update na dao, LEMBRE-SE que voce precisa passar o ID do contato a ser atualizado, entao voce popula o bean JA COM o seu id e seus novos valores
// contato sendo populado
dao.update(contato);  

}else if ("delete".equals(acao)){
// acho que aqui voce ja pegou o espirito da coisa
}

}

é bem rudimentar mas quebra um galho enorme para nao ficar criando varias servlets desnecessariamente!

viu?! um CRUD usando apenas uma servlet!!

dai mais pra frente voce pode ler um pouco sobre o padrao FACADE (http://www.devmedia.com.br/o-padrao-facade-aplicado/12683), onde voce pode abstrair algumas coisas no facade, como por exemplo, voce pode pedir para o facade popular seus beans. ou voce pode mandar o facade acessar a dao ao invés da servlet fazer isso.... a servlet acessa o metodo inserir do facade e ai voce trabalha algo mais se tiver que trabalhar com o bean e dai o facade repassa o objeto para a dao.
bons estudos!

joaoabi

Isso, é isso que eu queria saber Victor,
Muito Obrigado pela explicação.

To começando ainda, ai ja sabe como é ne, muito sofrimento e pouco resultado.

Muito Obrigado pelas dicas!!!

raffamz

Como o amigo disse, sem usar um filter ou um framework, imagina tendo um monte de ação, aja “if”, “else”…possível é…
Mas o legal é vc quebrar a cabeça tentando fazer pelo “ServletController”, depois Filtro, ae, quando se cansar vai para um Controlador (Spring MVC) *Tem lá na apostila da Caelum FJ21!

Mesmo pq o ideal é vc saber como funciona por dentro do framework, já que ele fará todo o trabalho sujo…rs

Abraço

D

o post é antigo porem tenho uma duvida… vi o imput hiddem para inserir, e como mandar as demais funções? alterar, e remover?

Criado 28 de maio de 2012
Ultima resposta 9 de mai. de 2013
Respostas 8
Participantes 4