Há alguma maneira melhor de fazer isso?

13 respostas
_fs

Olá, boa tarde.

Seguindo a dica do Rafael Steil, resumindo, fiz o seguinte:

<html>
<head>


<script language="javascript"> 
function getQuery() 
{ 
		s = document.form.query.value;
		
    	document.location = "http://localhost:8080/Tomcatlipe/ConsultBD2?valorQuery=" + s; 
} 
</script> 
</head>

<body>

<form name="form">
<input type="text" name="query">
<input type="button" value="Enviar" onClick="getQuery();"> 
</form>

<jsp:useBean id="getString" class="jsptest.ConsultBD2" />
<jsp:getProperty name="getString" property="consult" />

</body>
</html>

Sendo assim, no meu servlet eu posso fazer o seguinte:

String s = request.getParameter( "valorQuery" );

Mas minha pergunta é: há alguma maneira de fazer esta tarefa sem enviar o valorQuery junto com o URL como eu fiz acima?

document.location = "http://localhost:8080/Tomcatlipe/ConsultBD2?valorQuery=" + s;

Muito obrigado.

13 Respostas

B

Você deve utilizar o método post para enviar o formulário…

GUstavo GUilherme BacK

cv1

Voce pode colocar um campo hidden no formulario, tambem.

Ah, e tome cuidado com esse href absoluto no javascript - se vc trocar de servidor, ele para de funcionar :wink:

_fs

mas Guilherme, fazendo assim, depois que eu faço a primeira consulta e o url fica assim:
http://localhost:8080/Tomcatlipe/ConsultBD3?txtID=4
eu não consigo mais fazer nenhuma consulta, pois o meu servlet redireciona a página para ela mesma =|

E cv, não entendi a mágica do campo hidden =|

B

o seu form tem de ficar assim

<form name="nomeForm" method="post" action"/servlet/">

onde o method indica que os dados serão enviados com post que não exibe os dados na url, ao contrário do metodo get.

O hidden é para que você tenha parâmetros que não são exibidos no html

<input name="atributo" type="hidden" value="valor">

Daí na hora de enviar o formulário você pode usar um javascript para alterar o valor do atributo no input e manda-lo para o servlet…

Não sei se fui bem claro…

Gustavo GUilherme BacK

_fs

Ok, entendi o lance o input hidden.

Mas quanto ao form, eu fiz o seguinte:

<jsp:useBean id="getString" class="jsptest.ConsultBD3" />

<form name="formTest" method="post" action="http://localhost:8080/Tomcatlipe/ConsultBD3">
	FirstName:
		<jsp:getProperty name="getString" property="consult" />
	
	
	<input name="txtID" type="hidden" value="1"> 
	<p><input type="button" value="Consultar" type="submit">
</form>

Sendo que o código no servlet permanece

String sID = request.getParameter( "txtID" );

Mas nada acontece … estou tentando, desculpem a encheção.

B

Você está implementando o doGet??? Ou o execute? No doGet você só vai pegar parâmetros do method get.

Debug o seu servlet para ver o que, exatamente, está acontecendo…

Gustavo Guilherme BacK

_fs

Estou usando doGet( HttpServletRequest, HttpServletResponse )

Aparentemente preciso ler mais :oops:

B

Isso acontece com quase todo mundo, comigo também, por exemplo… :smiley:

Agora é só mudar pra execute ou doPost

Gustavo Guilherme BacK

_fs

hehe cara, eu estou ficando doido …

<form action=“http://localhost:8080/meuservlet” method=“post”>
<input name=“txtID” value=“1”>
<input method=“submit” type=“button”>
</form>

E no meu servlet a coisa toda acontece dentro de um metodo doPost( HttpServletRequest, Response … )

Os meus beans dentro do jsp funcionam beleza, eles acessam os métodos getX dentro do meu servlet. Mas quando clico no botão dentro do form, nada acontece, quando debugo, o servlet nem chega a ser executado.

:frowning:

_fs

Argh … é sempre uma burrice não?

nota mental: "não trocar ‘type’ por ‘method’

Obrigado pela ajuda cara :smiley:

Mas restou uma dúvida: dentro do meu servlet eu redireciono a página jsp para ela mesma. Mas ao enviar o formulário e receber a resposta, o endereço mostrado fica apenas como meu servlet ( ConsultBD, e não ConsultBD.jsp ).

Porque isso? Qual a vantagem de usar POST e não GET?

Valeu!

thiagorani

Lipe, será que voce precisa se uma servlet para fazer oq precisa?
Use apenas os beans e uma classe que acessa o seu banco!
Voce sempre redireciona para ela mesma!

Bom seila, so um toque!

_fs

hehe valeu pelo toque cara, mas esses são só treinos para algo sensivelmente maior :smiley:

thiagorani

Tá certo!
Nunca é demais aprendender!
Com certeza voce precisa passar por isso para chegar a coisas maiores!
Precisando de opinião estamos ae!

Falo.

Criado 17 de novembro de 2003
Ultima resposta 19 de nov. de 2003
Respostas 13
Participantes 4