web网页和服务器的数据传输问题(jsp和servlet)

web网页和服务器的数据传输问题(jsp和servlet)

学生一枚如有不对请指出,感谢海涵。

在网页中数据的传输方式有get和post方法,所以对应的servlet的doGet和doPost就是响应前端的方法。

所以明白get和post就好了

  • get的传输方式的例子。

     1. <a href='...'>锚点标签</a>
     2. js:    window.location.href="...."
     3. ajax  的get方式的数据传输方式。
     4. <form method="get">
    
  • post的传输方式的例子。

     1.  <form method="post">
     2. ajax  的post方式的数据传输方式。
    

首先按我的个人了解,post方式的速度可能比get方式慢但是get方式的传输的数据大小是有限制的,但是post方式可以支持较大的数据传输量,并且post方式的安全性是高于get方式的。

js的原生ajax的数据传输

function sendMsg(mubiao,Msg,method){
	var jsAjax;
	if (window.XMLHttpRequest)
		{// 非ie(网上有解释)
			jsAjax=new XMLHttpRequest();
		}
	else
		{// ie(网上有解释)
			jsAjax=new ActiveXObject("Microsoft.XMLHTTP");
		}
			jsAjax.open(method,mubiao,false);
			jsAjax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		jsAjax.send(Msg);
		}
		//mubiao -- 表示传输的目的地
		//Msg --表示传输的信息
		//method --表示get或者post的传输方式

注意:出于我也不知道的原因,js原生ajax的数据传输到servlet可以触发doGet或者doPost的方法并且可以通过(------ request.getParameter("…") ------)取得数据但是不能由此而调用对应的网页转跳方法如

1. request.getRequestDispatcher("...").forward(request, response);
2. response.sendRedirect("...");

以上的两种网跳转方式是不能因为ajax的触发而触发转跳的。

在遇到这些问题时的替补方案是:

function sendMsg(mubiao,Msg,method){
	var jsAjax;
	if (window.XMLHttpRequest)
		{// 非ie
			jsAjax=new XMLHttpRequest();
		}
	else
		{// ie
			jsAjax=new ActiveXObject("Microsoft.XMLHTTP");
		}
			jsAjax.open(method,mubiao,false);
			jsAjax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		jsAjax.send(Msg);
		}
		var temp = document.createElement("form");
		temp.action="...";
		temp.method="post";
		temp.style.disply="none";
		document.appendChild(temp);
		temp.submit();//由form表单进行doPost跳转的触发

		//mubiao -- 表示传输的目的地
		//Msg --表示传输的信息
		//method --表示get或者post的传输方式

注意:需要js的ajax的数据传输但同时需要通过form触发跳转的,你不能让ajax的传输形式是异步的,所以jsAjax.open(method,mubiao,false);的第三参数是false表示不能进行异步传输数据,这样就可以等ajax传完数据后才触发网页的条转了。(虽然觉得这样的办法还是有缺陷但是我还没有发现更好的替代方法)

通过对form表表单的理解我们还可以通过form表单传输数据

var temp = document.createElement("form");
	temp.action="ChangeMsg";
	temp.method="post";
	temp.style.display="none";
					
	var ids=document.createElement("input");
	ids.value=objArr[1].innerText; //数据来源自己造
	ids.name="stuId"; //name是必要的,因为request.getParameter("name")通过name名称获取数据。
	temp.appendChild(ids);
					
	var names=document.createElement("input");
	names.value=objArr[3].innerText;
	names.name="stuName";
	temp.appendChild(names);
					
	var pwds=document.createElement("input");
	pwds.value=objArr[5].innerText;
	pwds.name="stuPwd";
	temp.appendChild(pwds);
					
	document.getElementById("...").appendChild(temp);
	temp.submit();

如果觉得有必要还可以封装form成一个‘智能‘的方法来传数据。

LYL

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值