Ciao, allora, innanzitutto sfatiamo un mito: fare i controlli lato client (javascript) non serve a gran ché tranne che a tentare di evitare il submit del form. I controlli lato client sono utili solo come cosmesi ed il fatto di averli non ti esime dal doverli riapplicare lato server.

Per quanto riguarda il tuo caso specifico: ti conviene inserire il controllo all'evento onsubmit del tag form:
codice:
<form name="mioform" action="miaaction.jsp" method="post" onsubmit="return Controlla();">
Se si verifica una condizione per cui il form non deve essere inviato, fai un
codice:
return false
nella funzione javascript.

Ripeti i controlli lato server e solo allora fai l'inserimento.

Per quanto riguarda il redirect... o lo fai lato client (con metatag html) oppure potresti fare come fa il forum di html.it che effettua il post verso una pagina diversa e da questa ti reindirizza verso il thread. Ti eviti anche lo spiacevole effetto di submit ripetuti.