You need to look at your access logs. You'll probably see two requests.
Your form submit button calls javascript which also calls form.submit().
I think, if you don't return false from the javascript you will get two
form submissions. Try removing the form.submit() from the javascript.
HTH,
Jon
[EMAIL PROTECTED] wrote:
Dear all,
I have developed a web application that is running under tomcat 5.5.17 that
is under windows XP.
I have a servlet that retrieves data from a html form, creates an object and
passes this object to a manager class that inserts the data into Oracle.
Everything works fine except that I noticed that my doPost method executes
twice each command. It is incrementing twice the Oracle sequence and
inserting twice the same record.
Does anyone have a clue on what is going on?
When I look into the table this is what I get:
SQL> select * from marcapropriedade;
IDMARCAPROPRIEDADE DESCRICAO
------------------ ------------------------------
1 Acordos Internacionais
2 Adm Pública Federal
3 Defesa
4 Mercosul
45 lalalala
46 lalalala
47 papapapapapa
48 papapapapapa
49 another test
50 another test
10 linhas selecionadas.
============================================================================
================
This is my servlet:
//package servlets;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import objeto.MarcaPropriedade;
import objeto.MarcaPropriedadeGestor;
public class RegistraMarcaPropriedade extends HttpServlet {
/**
* Process the HTTP Post request
*/
public void doPost(HttpServletRequest request, HttpServletResponse
response)
throws ServletException, IOException {
System.out.println("I am here 1");
// Create object to store information from previous form
MarcaPropriedade marcaPropriedade = new MarcaPropriedade();
marcaPropriedade.setDescricao(request.getParameter("txtDescricao"));
System.out.println(marcaPropriedade.getDescricao());
System.out.println("I am here 2");
// Create a MarcaPropriedadeGestor to add marcaPropriedade to the
database
MarcaPropriedadeGestor marcaPropriedadeGestor = new
MarcaPropriedadeGestor();
marcaPropriedadeGestor.add(marcaPropriedade);
System.out.println("I am here 3");
// Release resources
marcaPropriedadeGestor.releaseResources();
// Here the registration is complete.
// Now send the user to the 'Relação de Marcas de Propriedades' page
RequestDispatcher dispatcher =
this.getServletContext().getRequestDispatcher("//Sisc/exibeMarcaPropriedade.
htm");
dispatcher.forward(request, response);
}
}
============================================================================
====
this is what I get from LOG:
I am here 1
I am here 1
papapapapapa
papapapapapa
I am here 2
I am here 2
[Fri Jun 30 11:21:12 BRT 2006] info: PoolManager: registered JDBC driver
oracle.jdbc.driver.OracleDriver
10
[Fri Jun 30 11:21:12 BRT 2006] info: oracle: New pool created
[Fri Jun 30 11:21:13 BRT 2006] info: oracle: Opened a new connection
[Fri Jun 30 11:21:13 BRT 2006] info: oracle: Delivered connection from pool
dentro do add -inicio
Select MarcaPropriedadeIdSeq.NEXTVAL from DUAL
[Fri Jun 30 11:21:13 BRT 2006] info: oracle: Opened a new connection
[Fri Jun 30 11:21:13 BRT 2006] info: oracle: Delivered connection from pool
dentro do add -inicio
Select MarcaPropriedadeIdSeq.NEXTVAL from DUAL
[Fri Jun 30 11:21:13 BRT 2006] info: oracle: Opened a new connection
[Fri Jun 30 11:21:13 BRT 2006] info: oracle: Delivered connection from pool
[Fri Jun 30 11:21:13 BRT 2006] info: oracle: Opened a new connection
[Fri Jun 30 11:21:13 BRT 2006] info: oracle: Delivered connection from pool
[Fri Jun 30 11:21:13 BRT 2006] info: oracle: Returned connection to pool
47
[Fri Jun 30 11:21:13 BRT 2006] info: oracle: Returned connection to pool
48
insert into MARCAPROPRIEDADE values (?, ?)
insert into MARCAPROPRIEDADE values (?, ?)
I am here 3
I am here 3
[Fri Jun 30 11:21:13 BRT 2006] info: oracle: Returned connection to pool
[Fri Jun 30 11:21:13 BRT 2006] info: oracle: Returned connection to pool
I am here 1
another test
I am here 2
[Fri Jun 30 11:22:19 BRT 2006] info: oracle: Delivered connection from pool
dentro do add -inicio
Select MarcaPropriedadeIdSeq.NEXTVAL from DUAL
[Fri Jun 30 11:22:19 BRT 2006] info: oracle: Delivered connection from pool
[Fri Jun 30 11:22:19 BRT 2006] info: oracle: Returned connection to pool
49
insert into MARCAPROPRIEDADE values (?, ?)
I am here 1
another test
I am here 2
[Fri Jun 30 11:22:19 BRT 2006] info: oracle: Delivered connection from pool
dentro do add -inicio
Select MarcaPropriedadeIdSeq.NEXTVAL from DUAL
[Fri Jun 30 11:22:19 BRT 2006] info: oracle: Delivered connection from pool
I am here 3
[Fri Jun 30 11:22:19 BRT 2006] info: oracle: Returned connection to pool
[Fri Jun 30 11:22:19 BRT 2006] info: oracle: Returned connection to pool
50
insert into MARCAPROPRIEDADE values (?, ?)
I am here 3
[Fri Jun 30 11:22:19 BRT 2006] info: oracle: Returned connection to pool
============================================================================
============
This is the htm form that calls the servlet:
<html>
<head>
<title>Inclui/Altera Marca Propriedade</title>
<script language="javascript">
////////////////////////////////////////////////////////////////////////////
/
// Set focus to the first form element
//
function focusFirst()
{
document.all("txtDescricao").focus();
}
////////////////////////////////////////////////////////////////////////////
///
// Validate fields and submit form elements to servlet
RegistraMarcaPropriedade
//
function doFormSubmit()
{
objfrm=document.incluiAlteraMarcaPropriedade;
//Store the file path of the next servlet/jsp to be called
strFilePath = "/Sisc/servlet/RegistraMarcaPropriedade"
strDescricao=objfrm.txtDescricao.value;
if(isSpecialChar(strDescricao) || !isChar(strDescricao))
{
alert("Favor entrar com uma descrição válida.");
objfrm.txtDescricao.focus();
return false;
}
if(isEmpty(strDescricao))
{
alert("Campo obrigatório");
objfrm.TxtNumber.focus();
return false;
}
objfrm.method="post";
objfrm.action=strFilePath;
objfrm.submit();
}
////////////////////////////////////////////////////////////////////////////
///
// Clean all the fields
//
function doClearForm()
{
for(i=0;i<document.inputFormSearch.elements.length-1;i++)
{
if(document.inputFormSearch.elements[i].type=="text")
document.inputFormSearch.elements[i].value="";
}
document.all("txtDescricao").focus();
return false;
}
////////////////////////////////////////////////////////////////////////////
///
// Checks whether the form input element is empty
//
function isEmpty(formelem)
{
expisEmpty=/[^ ]/
return ! expisEmpty.test(formelem);
}
////////////////////////////////////////////////////////////////////////////
///
// Checks whether the form input element is numeric
//
function isNumeric(formelem)
{
var expisNumeric=/[a-zA-Z\*\~|@\$\%\^\&\*\(\)\#\!\`\-\+\=\.\,\?]/
return ! expisNumeric.test(formelem)
}
////////////////////////////////////////////////////////////////////////////
///
// Checks whether the form input element is a String
//
function isChar(formelem)
{
var expisChar=/[0-9]/;
return ! expisChar.test(formelem);
}
////////////////////////////////////////////////////////////////////////////
///
//Checks whether the form input element contains any Special Characters or
not.
//
function isSpecialChar(formelem)
{
var expisSpecialChar=/[\&\;\"\*\~\|[EMAIL PROTECTED]<\>\\\+\=\?]/
return expisSpecialChar.test(formelem)
}
</script>
</head>
<body onload="javascript:focusfirst()">
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse:
collapse" bordercolor="#111111" width="100%">
<tr>
<td width="100%" colspan="3">
<img border="0" src="images/bannerPR.jpg" width="763" height="21"></td>
</tr>
<tr>
<td width="18%">
<b>
<font color="#008080" size="5">SISNAC</font><font color="#008000"
size="5"> </font>
</b></td>
<td width="59%">
<p align="center"><font size="4"><b>Cadastramento de Nova Marca de
Propriedade</b></font></td>
<td width="23%">
</td>
</tr>
<tr>
<td width="18%">
</td>
<td width="82%" colspan="2" align="right">
</td>
</tr>
<tr>
<td width="100%" colspan="3">
<p align="center"> </p>
<form name="incluiAlteraMarcaPropriedade">
<p align="left"> Marca de Propriedade:
<input type="text" name="txtDescricao" size="66"></p>
<p align="center">
<input type="submit" value="Enviar" name="btnSubmit" onclick="
javascript:return
doFormSubmit()">
<input type="reset" value="Apagar" name="btnApagar"></p>
</form>
<p align="center"> </p>
<p align="center"> </p>
</td>
</tr>
<tr>
<td width="100%" colspan="3"> </td>
</tr>
</table>
</body>
</html>
=============================================
any help is welcome!!!
thanks
PS: I have tried different tomcats but the problem persists.
apache-tomcat-5.5.17.exe
jakarta-tomcat-4.1.31.exe
jakarta-tomcat-5.0.30.exe
jakarta-tomcat-5.0.28.exe
---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]