zoukankan      html  css  js  c++  java
  • 状态保持以及AJAX的初步学习

                       嘿嘿,今天学习的有点迷茫哦,主要学习把验证码使用在登录页面时间的一些逻辑,学习这个时间并没有那么的迷惑哦,可是自己写程序时间倒是有点反应迟钝,不过还好总是在最后搞清楚啦,另外就是一步一步的学习是接近项目期,今天下午学习了ajax,这个使用javascript写起来还是蛮麻烦的,嘿嘿,但是使用jquery实现是非常的简单的,不知道是不是由于我刚接触的原因,下面来总结一下今天学习的内容,感觉今天学习的还是很有必要详细总结的,因为在以后的项目中还是经常会使用的。

              一.状态保持

              1.cookie的添加与删除

    //HttpCookie cookie = new HttpCookie("cookietext", context); //创建cookie,它是键值对的形式存在
                            //cookie.Expires = DateTime.Now.AddDays(7);          //给他一个时间7天,可以是7小时或者7分钟
                            //Response.Cookies.Add(cookie);                    //添加cookie,记得使用的是Response对象,而不是Request
     //HttpCookie cookie = Request.Cookies["cookietext"]; //获取cookie
            //if (cookie != null)        //当存在cookie时间
            //{
            //    this.span.InnerHtml = "<a href=''>" + cookie.Value + "</a>&nbsp&nbsp&nbsp<a href='DelCookie.aspx'>退出</a>";//创建了一个退出的连接
            //}
     //HttpCookie cookie = Request.Cookies["cookietext"];   //获取cookie
            //if (cookie != null)
            //{
            //    cookie.Expires = DateTime.Now.AddDays(-1);  //这里是让cookie过期,即不存在cookie,即退出
            //    //Request.Cookies.Clear();             //这里是使用clear方法清除cookie
            //    Request.Cookies.Add(cookie);
            //    Response.RedirectPermanent("fmLogin.aspx");
            //}

                      表单是和页面相关的,只有浏览器端提交了这些数据,服务器端才能得到。而有时候希望在服务端任意的地方存取一些和访问者相关的信息,这时候就不方便将这些信息保存到表单中了,因为如果那样的话必须随时注意在所有页面表单中都保存这些信息。Cookie是和站点相关的,并且每次向服务器请求的时候除了发送表单参数外,还会将和站点相关的所有Cookie都提交给服务器,是强制性的。Cookie也是保存在浏览器端的,而且浏览器会在每次请求的时候都会把和这个站点的相关的Cookie提交到服务器,并且将服务端返回的Cookie更新到硬盘,因此可以将信息保存在Cookie中,然后在服务器端读取、修改。服务器返回数据除了普通的html数据以外,还会返回修改的Cookie,浏览器把拿到的Cookie值更新本地浏览器的Cookie就可以。哪怕请求jpg、js、css这种文件也会带着Cookie,因为服务器端可能要进行Session的操作,比如判断是否登录。互联网优化的案例:图片服务器和主站域名不一样,降低Cookie流量的传输。Cookie的缺点和表单一样,而且还不能存储过多信息。客户端、服务器端设置的Cookie双方都能读。
                      2.session的添加与删除

    Session["name"] = context;              //创建一个session,他也是以键值对的形式存在
    if (Session["name"] != null)
            {
                string cotext = Session["name"].ToString();
                this.span.InnerHtml = "<a href=''>" + cotext + "</a>&nbsp&nbsp&nbsp<a href='DelCookie.aspx'>退出</a>";//创建了一个退出的连接
            }
    Session.Clear();
            Response.RedirectPermanent("fmLogin.aspx");

                       Session提供了一种把信息保存在服务器内存中的一种方式。它能存储任何数据类型包括自定义对象,每个客户端的Session是独立存储,Session 对象用于存储有关用户的信息,在整个用户会话过程中都会保留此信息,(保存SessionId的cookie丢失之前)。当用户在应用程序中从一个网页浏览到另一个网页时,存储在 Session 对象中的变量不会被丢弃。Session只可由该会话的用户访问(因为SessionId的东东以cookie的方式保存访问者浏览器的缓存里了)用户不能访问或修改他人的Session。
                       3.ViewState的使用

    ViewState["myKey"] = "MyData";   //用户数据保存方式
            string myData = string.Empty;    //读取数据方式
            if (ViewState["myKey"] != null) 
            { 
                myData = (string)ViewState["myKey"];
            } 

                       两种使用方式: 作用域---页面级   

              注意:<1>.ViewState不能存储所有的数据类型,仅支持可序列化对象;       

                    <2>.非单值服务器控件的状态也自动保存在ViewState中,例如:下拉框(文本框是单值控件,所以不会保存在ViewState中),使用ViewState的前提;页面上必须有一个服务器端窗体标记(<form runat=“server”>),服务器在接收到用户请求一个页面后,会自动在请求报文中找看是否包含__VIEWSTATE的隐藏域,如果有,则将中间的值解码后添加到页面的ViewState属性中;服务器在输出的时候,也会自动的将ViewState中的值添加到表单里名叫__VIEWSTATE的隐藏域中 VIEWSTATE适用于同一个页面在不关闭的情况下多次与服务器交互。

              禁用ViewState的方法,禁用单个控件的ViewState设定enableviewstate=false,禁用ViewState以后TextBox版本不受影响,Div版本受影响,因为input的value不依靠ViewState。禁用整个页面的,在aspx的Page指令区加上EnableViewState="false" 。内网系统、互联网的后台可以尽情的用ViewState。当某些控件的某些属性不属于浏览器表单的提交范围时,fw将会把这些属性添加到ViewState中保存。WebForm的IsPostBack依赖于__ViewState。

              4.Application的对象

              Application对象可以存储应用程序级的数据;“Application”:应用程序,第一个用户访问站点时,应用程序启动,并创建一个Application对象,创建成功后,整个应用程序中都可以使用该对象,除非应用程序关闭,否则对象一直存储在内存中。

             

              二.AJAX的初步学习

    <form id="frm" action="" method="post">
            <table id="tab" border="0">
                <tr><td>用户名:</td><td><input type="text" name="txtname" id="txtname" /></td><td><label id="errormsg"></label></td></tr>
                <tr><td>密码:</td><td><input type="password" name="txtpwd" id="txtpwd" /></td><td><label id="pwderrormsg"></label></td></tr>
                <tr><td colspan="3" style="text-align:center"><input type="submit" name="name" value="注册 " /></td></tr>
            </table>
        </form>
     $("#txtname").blur(function () {
                    var name = $(this).val();
                    $.post("Register.ashx", { n: name }, function (msg) {
                        $("#errormsg").text(msg);
                    })
                })
    string name = context.Request.Form["n"];
            if (!string.IsNullOrEmpty(name))
            {
                if (bll.CheckNameMess(name))
                {
                    context.Response.Write("用户名已存在");
                }
                else
                {
                    context.Response.Write("用户名可用");
                }
            }

                      上面就是一个以注册用户名为例学习一下ajax,其实上面的ajax就是在jquery中使用的,$.get/post(导向的地址,属性值,函数)即可实现。Ajax在本质上是一个浏览器端的技术,Ajax技术之主要目的在于局部交换客户端及服务器间之数据,这个技术的主角XMLHttpRequest的最主要特点,在于能够不用重新载入整个版面来更新资料,也就是所谓的Refresh without Reload(轻刷新)与服务器之间的沟通,完全是透过Javascript来实行,使用XMLHttpRequest本身传送的数据量很小,所以反应会更快,也就让网络程式更像一个桌面应用程序,AJAX 就是运用Javascript 在后台悄悄帮你去跟服务器要资料,最后再由Javascript 或DOM 来帮你呈现结果,因为所有动作都是由Javascript代劳,所以省去了网页重载的麻烦,使用者也感受不到等待的痛苦。使用XMLHttpRequest对象  按照下面模式,可以同步地XMLHttpRequest对象:创建对象;-new创建请求; -open()发送请求;-send(),但是使用javascript比较麻烦,于是就改变为了jquery的使用方法。

             嘿嘿,今天就写到这里,ajax还是我们学习的重点,要好好学习的,加油加油!!!

    我是小白,新建立了一个的群:461431726,希望在这里和大家一起交流,共同学习。前端的话建议加群:646564351,谢谢
  • 相关阅读:
    Java Output流写入包装问题
    SpringBoot项目单元测试不经过过滤器问题
    SpringSecurity集成启动报 In the composition of all global method configuration, no annotation support was actually activated 异常
    JWT jti和kid属性的说明
    Maven 排除依赖
    第五章 基因概念的发现
    第三章 孟德尔遗传的拓展
    第二章 孟德尔遗传
    第一章 引言
    GWAS全基因组关联分析
  • 原文地址:https://www.cnblogs.com/dyxd/p/4257725.html
Copyright © 2011-2022 走看看