黑马程序员技术交流社区

标题: 为什么html传值是无状态的 [打印本页]

作者: 张俊双    时间: 2012-10-16 10:47
标题: 为什么html传值是无状态的
页面传值有哪些方式保持?最好举例讲解,谢谢
作者: 李辰东    时间: 2012-10-16 13:37
html页面代码
  1. <form action ="index.aspx" method="post">
  2.    用户名称:<input name="username" type="text" />
  3.    <br />
  4.    用户密码:<input name="userpwd" type="text" /><br />
  5.    <br />
  6.    &nbsp;<input name="Submit1" type="submit" value="提交" onclick="return Submit1_onclick()" />


  7.    <input name="Reset2" type="reset" value="重置" />
  8. </form>
复制代码
然后aspx页面代码
  1. protected void Page_Load(object sender, EventArgs e)
  2.      {
  3.          string userName = Request.Form["username"].ToString();
  4.          string userPwd = Request.Form.Get("userpwd").ToString();
  5.          Response.Write("用户名称:" + userName + "<br/>"+"用户密码:" + userPwd);
  6.      }
复制代码

作者: 秦敖    时间: 2012-10-16 20:42
老师视频里不是都讲过了吗?http协议是无记忆无状态的协议,所以服务器不会知道上次客户端做了什么请求,因为状态已经丢失。如果要实现跨页面读取数据(不同页面共享数据),最简单的可以使用Cookie,因为Cookie是和站点相关的,在每次浏览器和服务器之间发送或返回数据时,都会携带上Cookie。在http协议那块,老师做了讲解。还有就是可以使用基于Cookie实现的Session。用表单实现跨页面数据的话,会比较麻烦,Cookie的出现就是为了解决这个问题。
作者: chens2865    时间: 2012-10-23 11:03
因为HTTP协议是无状态的啊,服务器不知道上次浏览器做了什么请求,所以每次给服务器发请求的时候要依靠Cookie,请求的时候把上次的值带上再传给服务器,服务器运算完后把值响应给浏览器的Cookie中。但因为Cookie是存储在客户端,用户可能会禁用Javascript脚本,所以用Session,它是把数据以键值对的形式存储在服务器(这种方式有一个回收机制,比如用Session后会在服务器分配一个区域存储,但如果一段时间不给服务器发请求,服务器就会释放这个Session占据的存储空间),这样即使客户端禁用了JavaScript也不影响了。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2