如何在页面和服务器间传值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在页面和服务器间传值相关的知识,希望对你有一定的参考价值。

就是写一个WEB程序,如果在页面和服务器间传值?
比如让用户在页面上添加字符串什么的,如何保存到后台数据库?
比如用户触发了什么动作,如何实现后台的一个特定函数,然后传到前台?

楼主说的是怎么在页面和服务器之间传值,一个个都说ajax,是,没错,你们都学过很长时间的web编程了,用ajax进行异步通信貌似很火,但是楼主很显然是说基础的传值,你们这样不就是显摆么?

lymeng520更搞笑,到网上摘了点ajax只是就来答题了!!

既然楼主是来java板块,那么我说下jsp,servlet等基础传值方法。

比如你的一个页面(html,jsp啊什么的)上要在人点击一个按钮之后将输入的信息传给后台,那么首先要一个表单Form.如<form id="xxx" name="xxx" action="action.jsp">这个意思就是后台处理程序是action.jsp这个文件,当然了,也可以是servlet。用一个form包含一个提交按钮,那么点击这个按钮之后就会自动将他所属于的form提交。
如:
<form id="xxx" name="xxx" action="action.jsp">
<!-- 这里放一些你的信息输入栏,比如输入名字啊什么的-->
<input type="text" name="userName" id="userName"><!--这里要用户输入一些名字信息-->
<input type="submit" value="提交">
</form>
这就是一个最最基础的传值给后台的代码片段。
你在action.jsp中就可以用request.getParameter("userName");来获取别人填写的名字信息.userName就是指<input type="text" name="userName" id="userName">中的name属性的值,用request.getParameter("userName");就是获得了这个文本框内的东西了。

另一种常见方式就是session之间传值,比如你一个jsp页面中来个session.setAttribute("a",new String("aaa")),那么当这个jsp页面提交给后台处理程序(可能是一个jsp或一个servlet程序),那么再后台程序里面就可以用String aa=session.getAttribute("a").toString();来将之前那个Jsp页面中所设定的属性a的值"aaa"获取并赋给后台程序中定义的变量aa中。

当然,以上都是很基础的传递方式,楼主会了这些再看看ajax来进行异步通信那样才好些,如果什么都还不会就直接搞ajax那样不好。
参考技术A 使用ajax 就可以实现,ajax并不难。下面是我总结的一点东西。
可能不够详细,你可以自己再去找点相关资料看看。。。

ajax介绍
首先 创建XMLHttpRequest对象
由于XMLHttpRequest 并不是W3C标准
所以每个浏览器都会有自己的创建XMLHttpRequest的方法
var xmlHttp;//用来保存所创建的XMHttpRequest对象
简单的方法:
if (window.ActiveXObject)
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); //如果是IE浏览器

else if (window.XMLHttpRequest)
xmlHttp = new XMLHttpRequest(); //如果是其它浏览器


对window.ActiveXObject的调用会返回一个对象,也可能返回null,if语句会把调用返回的结果看作是true或false(如果返回对象则为true,返回null则为false),以此指示浏览器是否支持ActiveX控件,相应地得知浏览器是不是Internet Explorer。

下面是一个基本支持所有浏览器的方法:
try
xmlHttp= new XMLHttpRequest();
catch (e)
try
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
catch (ee)
try
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
catch (err)
try
xmlhttp_request = new ActiveXObject("Msxml2.XMLHTTP.3.0"); //3.0或4.0, 5.0 这个指的是不同的版本
catch(err1)
xmlHttp = false;





Msxml:
它的全名是:「Microsoft XML Core Services」,主要是用来执行或开发经由 XML 所设计的最新应用程序。微软的xml语言解析器,用来解释xml语言的。

定义两个方法用来实现两种方式的提交
要发送GET请求的参数,则必须将这些额外的信息附在URL本身的后面。
所以对于两种提交的方式,我们所选择的发送方法也是不一样的
function doRequestUsingGET(t) //GET方法
createXMLHttpRequest(); //方法调用
xmlHttp.onreadystatechange = handleStateChange; //回调函数
xmlHttp.open("GET", "ceshi?name="+t, true); //发送请求
xmlHttp.send(null); //由于是采用GET方法发送,所以发送主体为空,必写

function doRequestUsingPOST(t) //POST方法
createXMLHttpRequest(); //方法调用
xmlHttp.open("POST", "ceshi", true);
xmlHttp.onreadystatechange = handleStateChange; //回调函数
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;"); //post必须把请求头设置成此格式
xmlHttp.send("name="+t);//发送主体


使用回调函数来监控服务器的返回状况
function handleStateChange() //回调监控函数
if(xmlHttp.readyState == 4) //请求完成
if(xmlHttp.status == 200) //服务器正常返回
parseResults(); //调用打印函数 显示服务器的返回情况




显示服务器的返回情况
function parseResults() //显示服务器的响应
var lists=document.getElementById('list'); //获得页面上的DIV 这个div是用来显示从服务器返回的信息的
var responseText = xmlHttp.responseText; //服务器以responseText方式返回响应, 另一种方式为:responseXML
lists.innerHTML=responseText; //显示返回的值


用来发送请求的函数
function send(t,ors) //发送函数 参数t是某个控件的id ors是发送的方式(get/post)

var vText=document.getElementById(t).value; //获取页面上的控件的值
if(vText!="") //条件判断

if(ors=="get")doRequestUsingGET(vText); //采用GAT发送方式
if(ors=="post")doRequestUsingPOST(vText); //采用post发送方式
else
alert('数据不能为空');
return false; //如果数据为空,返回;



之间碰到的问题:
1、乱码
问题原因:jsp页面编码和servlet页面编码不一致
解决办法,在提交和处理文件中都加上
request.setCharacterEncoding("gb2312");
response.setCharacterEncoding("gb2312");

2、在使用request.getMethod()获得提交方法时,只能获得post,不能获得get。
这个问题只是在servlet中存在,在jsp中并没有存在。
问题原因:浏览器缓存的原因,
解决办法:重新打开一个新的浏览器
参考技术B 这个就要页面和数据库搞链接了啊,你想写这个就要懂怎么和数据库链接,去搞点资料看一看,有点麻烦的,我之前的作业就有这个,去搞点相关的书看一下吧……看了就感觉还好…… 参考技术C 页面与服务器之间的传值应该是建立在与数据库连接的基础之上 参考技术D 是点击按钮之后保存还是修改了直接传递啊

以上是关于如何在页面和服务器间传值的主要内容,如果未能解决你的问题,请参考以下文章

jsp 页面间传值有几种方式?分别是哪几种?

asp.net页面间传值的五种方法

小程序页面间传值

小程序实践:页面间传值

前端解决页面间传值取值方案

MUI开发指南 MUI 页面间传值