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

如何在页面和服务器间传值,第1张

楼主说的是怎么在页面和服务器之间传值,一个个都说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那样不好。

直接往客户端的输出流里写入就可以了,只不过写入特殊值,这里的特殊值指的是客户端和服务器端约定的一种参数形式。服务器端解析这种信息,就可以了。如果服务器端为每个客户端都开了一个处理线程,那么可以先写入一个头标记,然后传参数,然后写入结束标记,然后开始写入正式内容。

1、使用QueryString变量

QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中。如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法。但是对于传递数组或对象的话,就不能用这个方法了。下面是一个例子:

a.aspx的C#代码

private void Button1_Click(object sender, System.EventArgs e)

{

string s_url

s_url = "b.aspx?name=" + Label1.Text

Response.Redirect(s_url)

}

b.aspx中C#代码

private void Page_Load(object sender, EventArgs e)

{

Label2.Text = Request.QueryString["name"]

}

2、Session传值

这种方法将每份数据存储于服务器变量中,可以传递比较多的数据,并且安全性较高,所以常用于用户身份的验证功能中。不过,Session变量如果存储过多的数据会消耗过多的服务器资源,编程者在使用时应该慎重,其使用方法如以下代码所示。

Session["SessionValue"] = “ATI”

//也可以用索引存储

Session[0] = “ATI”

//在其他页面的服务器端方法中取值方式为:

string str = Session["SessionValue"].ToString()

//也可以用索引获取

string str = Session[0].ToString()

Session的可在应用程序的多个页面中以名称/值对的方式共享,直到浏览用户关闭自己的浏览器或者服务器Session超时(可设置,默认为20分钟)。

3、<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

一个带有runat="server"的控件才是后台.cs能够获得到的,唯一标识符是ID,通过ID获取,大写可以和html的id区别开来好看(虽然这个ID可以写成id);asp.net自带的控件runat="server"必须写。

因为其实TextBox控件在浏览器源码查看中也是input,但是如果不加runat="server"声明它是asp.net服务器控件,不会被解析成input给浏览器认识,浏览器变成文本框等等展现出来。

扩展资料:

使用Cookie对象变量

这个也是大家常使用之方法,与Session一样,其是什对每一个用户而言之,但是有个本质之区别,即Cookie是存放在客户端之,而session是存放在服务器端之。而且Cookie之使用要配合ASP.NET内置对象Request来使用。

a.aspx之C#代码

private void Button1_Click(object sender, System.EventArgs e)

{

HttpCookie cookie_name = new HttpCookie("name")

cookie_name.Value = Label1.Text

Reponse.AppendCookie(cookie_name)

Server.Transfer("b.aspx")

}

b.aspx中C#代码

private void Page_Load(object sender, EventArgs e)

{

string name

name = Request.Cookie["name"].Value.ToString()

}

参考资料来源:百度百科-跨页面传值


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/626661.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-07-16
下一篇2023-07-16

发表评论

登录后才能评论

评论列表(0条)

    保存