jsp中的form提交和servlet问题?
我在jsp中的form中加
<INPUT type= "submit " name= "qd " value= "人员授权 " onClick= "window.close() ">
提交按钮
来关闭当前页,并且进入servlet中
<form name= "form1 " action= "../Cdsqservlet?cdid= <%=CDid%> " method= "POST ">
但是点提交按钮的时候,关闭当前页,但是没有执行servlet,这是为什么?
下面是代码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN ">
<HTML>
<HEAD>
<%@ page
language= "java "
contentType= "text/html; charset=GB18030 "
pageEncoding= "GB18030 "
import= "java.sql.*,com.linkdb.*,java.util.StringTokenizer "
%>
<META http-equiv= "Content-Type " content= "text/html; charset=GB18030 ">
<META name= "GENERATOR " content= "IBM WebSphere Studio ">
<META http-equiv= "Content-Style-Type " content= "text/css ">
<LINK href= "../theme/Master.css " rel= "stylesheet " type= "text/css ">
<TITLE> cdsq.jsp </TITLE>
<jsp:useBean id= "cdsq " class= "com.cdsqbean.Cdsqbean " scope= "page "> </jsp:useBean>
<jsp:useBean id= "ry " class= "com.dbopt.Ryxxoptbean " scope= "page "> </jsp:useBean>
<%
request.setCharacterEncoding( "GB18030 ");
response.setContentType( "text/html; charset=GB18030 ");
String cdid=request.getParameter( "cdid ");
int CDid=Integer.parseInt(cdid);
cdsq.delsq(CDid);
%>
<style>
td, select, input {
font-size: 9pt
}
.sel {
font-size: 12px;
width: 100px;
position: relative;
left: -2px;
top: -2px;
}
.box {
border: 1 solid #BBBBBB;
height: 19px;
width: 99px;
}
.box2 {
border: 1 solid #FFFFFF;
overflow: hidden;
height: 22px;
}
</style>
<script language= 'Javascript '>
//***********************************************************************************
var subcat = new Array();
<%
String sql= "SELECT ryxm,bmmc,rybm FROM t_xtryb a,t_xtbmb b where a.szbmbm=b.bmbm order by bmpx ";
AbstractPersistenceFactory con=new AbstractPersistenceFactory ();
Connection conn=con.getconnections();
Statement stmt=conn.createStatement();
ResultSet rs=stmt.executeQuery(sql);
int temp=0;
while(rs.next()){
%>
subcat[ <%=temp%> ]=new Array( " <%=rs.getString( "ryxm ")%> ", " <%=rs.getString( "bmmc ")%> ", " <%=rs.getString( "rybm ")%> ");
<%
temp = temp + 1;
}%>
//*************************************************************************************
// 这个数组可以根var onecount=subcat.length;
var c=0;d=0; // 2个select的optoins的索引位置...
function moveto2(fn,s1,s2,s3,s4) // "> > " Button function
{
fs1=eval(fn+ ". "+s1); // formName1.SelectName1
fs2=eval(fn+ ". "+s2);
fs3=eval(fn+ ". "+s3);
fs4=eval(fn+ ". "+s4);
d=fs2.options.length;
for(i=0;i <fs1.options.length;i++)
{
var myOption = new Option(fs1.options[i].innerText,fs1.options[i].value);
var myOption1 = new Option(fs3.options[i].innerText,fs3.options[i].value);
fs2.options[d]=myOption ;
fs2.options[d].selected=true;
fs1.options[i].selected=true;
fs4.options[d]=myOption1 ;
d++;
}
k=0;
while(k <fs1.options.length)
{
fs1.remove(k);
fs3.remove(k);
c--;
}
}
function moveto1(fn,s1,s2,s3,s4) // " < < " Button
{
fs1=eval(fn+ ". "+s1);
fs2=eval(fn+ ". "+s2);
fs3=eval(fn+ ". "+s3);
fs4=eval(fn+ ". "+s4);
c=fs1.options.length;
for(i=0;i <fs2.options.length;i++)
{
var myOption = new Option(fs2.options[i].innerText,fs2.options[i].value);
var myOption1 = new Option(fs4.options[i].innerText,fs4.options[i].value);
fs1.options[c]=myOption ;
fs1.options[c].selected=true;
fs2.options[i].selected=true;
fs3.options[c]=myOption1 ;
c++;
}
k=0;
while(k <fs2.options.length)
{
fs2.remove(k);
fs4.remove(k);
d--;
}
}
function move1to2(fn,s1,s2,s3,s4) // "> " Button
{
fs1=eval(fn+ ". "+s1);
fs2=eval(fn+ ". "+s2);
fs3=eval(fn+ ". "+s3);
fs4=eval(fn+ ". "+s4);
c=fs1.options.length;
d=fs2.options.length;
for(i=0;i <fs1.options.length;i++)
{
if(fs1.options[i].selected)
{
var myOption = new Option(fs1.options[i].innerText,fs1.options[i].value);
var myOption1 = new Option(fs3.options[i].innerText,fs3.options[i].value);
fs2.options[d]=myOption ;
fs2.options[d].selected=true;
fs4.options[d]=myOption1 ;
d++;
}
}
k=0;
while(k <fs1.options.length+3) {
del(fn,s1,s2,s3,s4);
k++;
}
}
function del(fn,s1,s2,s3,s4) {
fs1=eval(fn+ ". "+s1);
fs2=eval(fn+ ". "+s2);
fs3=eval(fn+ ". "+s3);
for(i=0;i <fs1.options.length;i++)
{
if(fs1.options[i].selected)
{
fs1.remove(i);
fs3.remove(i);
c--;
}
}
}
function move2to1(fn,s1,s2,s3,s4) // " < " Button
{
fs1=eval(fn+ ". "+s1);
fs2=eval(fn+ ". "+s2);
fs3=eval(fn+ ". "+s3);
fs4=eval(fn+ ". "+s4);
c=fs1.options.length;
for(i=0;i <fs2.options.length;i++)
{
if(fs2.options[i].selected)
{
var myOption = new Option(fs2.options[i].innerText,fs2.options[i].value);
var myOption1 = new Option(fs4.options[i].innerText,fs4.options[i].value);
fs1.options[c]=myOption ;
fs1.options[c].selected=true;
fs3.options[c]=myOption1 ;
//fs3.options[d].selected=true;
c++;
}
}
k=0;
while(k <fs2.options.length+3)
{
del1(fn,s1,s2,s4);
k++;
}
}
function del1(fn,s1,s2,s4)
{
fs1=eval(fn+ ". "+s1);
fs2=eval(fn+ ". "+s2);
// fs3=eval(fn+ ". "+s3);
fs4=eval(fn+ ". "+s4);
for(i=0;i <fs2.options.length;i++)
{
if(fs2.options[i].selected)
{
fs2.remove(i);
fs4.remove(i);
d--;
}
}
}
function F_SelectUserStr(fn,s1,s2)
{
fs1=eval(fn+ ". "+s1);
fs2=eval(fn+ ". "+s2);
c=fs1.options.length;
fs2.value= " ";
for(i=0;i <c;i++)
{
if(i==0)
{
fs2.value=fs2.value+fs1.options[i].value;
}
else
{
fs2.value=fs2.value+ ", "+fs1.options[i].value;
}
}
form1.src1.style.pixelWidth=200;
}
[解决办法]
<INPUT type= "submit " name= "qd " value= "人员授权 " onClick= "window.close() ">
你还没提交就关闭了
<INPUT type= "submit " name= "qd " value= "人员授权 ">
提交到当前窗口,你应当处理完毕后再
out.println( " <script> window.close() </script> ");
[解决办法]
onClick= "window.close() "去掉就行了,提交表单,页面就会跳转到servlet,好像不需要人为去关闭吧?
---菜鸟之见
[解决办法]
submit是表单的提交事件,click是按扭的,他们是有先后的
你不关闭form这个页面,直接提交到servlet,然后在servlet里面转到一个空页面,这个空页面就一段关闭自己的脚本
[解决办法]
是的它们是有向后顺序的,也就是说onclick是先于action执行的,你可以用一个onclick命令,然后吧那段代码封装再javascript函数中!写的时候只须先进行表单提交然后关闭窗口就OK了。在方法中可这样写document.forms[0].action = "../Cdsqservlet?cdid= <%=CDid%> "; 关闭本窗口。