用到servlet就不得不提form表单的提交。如果一个页面只提交一次数据那也就简单了。关键是平常的应用中很少有一个页面只应用一次的情况。一般遇到的情况是一个form表单提交到多个servlet中、多个form表单提交到一个servlet中。一个form表单提交多个servlet中一般方法是在js文件中写一个改变form表单action属性的方法代码如下:
<script>
function checkaction(v){
if(v==0){
document.formName.action="index.php?admin_db-repair";
}else{
document.formName.action="index.php?admin_db-optimize";
}
dbform.submit();
}
</script>
<form action="" method="post" name="formName">
<input type="submit" class="btn" value="提交按钮1" name="opsubmit" οnclick="checkaction(1);" />
<input type="submit" class="btn" value="提交按钮2" name="resubmit" οnclick="checkaction(0);" />
</form>
在这段代码中只需要改变v的值就可以提交到不同的servlet中了,如果需要增加更多的提交按钮并且提交到不同的servlet 只需要将if else语句改成switch 语句添加更多v的值就可以了。
而多个form表单提交到一个servlet 中,form中并不需要特别处理,关键是在servlet 中需要一段代码处理用户要提交的是那一部分数据。代码如下:
<script>
function checkaction(v){
if(v==0){
document.formName.action="index.jsp?x=0";
}else{
document.formName.action="index.jsp?x=1";
}
dbform.submit();
}
</script>
<form action="" method="post" name="formName">
<input type="submit" class="btn" value="提交按钮1" name="opsubmit" οnclick="checkaction(1);" />
<input type="submit" class="btn" value="提交按钮2" name="resubmit" οnclick="checkaction(0);" />
</form>
用户在点击按钮后触发onclick事件调用checkaction函数改变servlet的action,在改变action属性的时候新加入一个x的参数。
在servlet中只需要判断x的值就能知道到底是那个按钮被按下,servlet 中的代码如下:
if((Integer.valueof(request.getparameter("x")))==0){
//按钮2被按下时提交内容的处理程序
}else{
//按钮1被按下时提交内容的处理程序
}
在改变action属性的时候加参数x实际跟在浏览器的地址栏中地址后加”?x=0&y=1“是一样的。