读书人

jsp中的form提交和servlet有关问题

发布时间: 2012-01-05 22:36:54 作者: rapoo

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%> "; 关闭本窗口。

读书人网 >Java Web开发

热点推荐