zoukankan      html  css  js  c++  java
  • 页面传值方式

    1、QueryString url传值?key=value
    适应场景:页面跟页面自己传值.页面之间传值
    缺点:稍徽不安全(地址栏可以看到内容).长度限制

    2、Post:Request["key"]
    适用场景:页面跟页面自己传值,页面之间传值。
    缺点:稍微安全(用HttpWatch监控http请求也可以看到内容).没有长度限制

    3、Cookie:存储在客户端的一小段文本.会随着每次请求发送到后合.跟网站相关联.跟域有关
    如果没设置过期时间,默认保存着浏览器内存中,浏览器己关闭Cookie就消失
    如果设置了过期时间,则保存在电脑硬盘中,知道过期时间小于当前时间,cookie才消失

    .Cookie原理:
    A.第一次get请求无cookie
    B.服务器通过响应报文头里的set-cookie向浏览器设置cookie信息
    C.浏览器通过请求报文头里的cookie传递到浏览器存储的cookie信息


    缺点:不能保存过多信息,不能保存机密数据.大多数浏览器支持最大为4096(4kb)字节的cookie,
    只允许每个站点存储20个Cookie,所有站点的Cookie总数通常为300个
    Cookie的域:
    浏览器往后台发送数据时候,要把cookie放到请求报文里面去.发送到后台。
    请求是子域的网页.那么主域的cookie会不会发送到后台呢?
    答案:是的。一块发送。如果请求时主域页面.子域的Cookie是不会发送到后台的。
    如果子域想让请求主城页面的时候也一块发送到后台.设置当前Cookie的域为主域可以了。
    适用场景:让浏览器帮助我们记忆用户的数据或最近浏览商品.

    4、Session:存储在后台服务器瑞的数据,跟具体的一个浏览器关联。
    sesslon:服务端
    原理:第一次请求来的时候.后台生成一个
    SessionID放到客户端Cookie里面去。后续的所有的请求来了之后都会先拿到SessionId然后跟当前Session对象关联一块。
    适用场景:保存用户的会话信息,如用户登录,验证码
    Session跟用户登录没关系。

    5、ViewState:本质是隐藏域。数据是通过Base64加密到隐藏域里面去。
    适用的场景:页面跟页面自己传值。
    ViewState机制:以name为key,以value为值提交到服务器,服务器在接收到用户请求一个页面后,
    会自动在请求报文中找看是否包含_Viewstate的隐藏域,如果有,则将中间的值解码后添加到
    页面的Viewstate属性中;服务器在输出的时候,也会自动的将viewstate中的值添加到表单里
    名叫_viewstate的隐藏域中。
    扩展内容.AspNet原理用到地方:
    第一:文本框,下来列表等服务器端控件的改变事件是通过Viewstate来实现。
    第二:Ispostback也是用到了Viewstate了。
    第三:因为复杂控件也是通过Viewstate来记录数据的:比如:ListView表格。
    缺点:Viewstate在页面和后台服务器之间来回传递。大量带宽的消耗,优化就是禁用Viewstate,页面禁用.或者控件直接禁用。

    6.Application:全局的,存储在服务器端的数据。
    除非应用程序关闭(程序关闭再打开或程序重新生成).否则对象一直存储在内存中。
    Application:帮助我们记录全局的数据。其实本质就是全局变量
    存储全局的信息,网站在线人数统计
    尽量少用:因为服务器端的内存是相当宝贵的。所以尽量少的去占用全局的内存

    7、数据库

    8、缓存

    9、静态变量全局变量

    10、文件


    谈谈ViewState。
    Http是无状态的,WebForm为了实现基于http的“有状态”从而简化开发,ViewState用来在两次请求间保持状态。页面返回前将界面的状态序列化到ViewState中,这样就将状态保存在了浏览器中,下次页面提交的时候会顺便再将ViewState提交到服务器,这样服务器就根据ViewState还原了状态,这样WebForm开发就像有状态一样了。


    Session有什么重大BUG,微软提出了什么方法解决?
    iis中由于有进程回收机制,系统繁忙的话Session会丢失,IIS重启也会造成Session丢失。
    可以用State Server或SQL Server数据库的方式存储Session,不过这种方式比较慢,而且无法捕获Session的END事件,但是我认为这不是bug,只能说是进程内方式存储Session的缺陷,缺陷和bug不一样,进程内方式存储Session会由服务器来决定什么时候释放Session,进程内方式不满足要求的话完全可以用StateServer和数据库的方式
    StateServer还可以解决集群Session共享的问题

    Session、Cookie、Application什么时候清除?
    Cookie客户端:
    如果没设置过期时间,默认保存着浏览器内存中,浏览器己关闭Cookie就消失
    如果设置了过期时间,则保存在电脑硬盘中,知道过期时间小于当前时间,cookie才消失

    Session:服务器端
    当会话过期或终止,服务器就会清除Session对象,默认时间20分钟
    如果想关闭浏览器清除Session对象,则可调用Session.Clear()方法
    InProc模式,此模式将会话状态存储在Web服务器上的内存中。这是默认设置。当服务器进程被停止或者重启的时候.内存里的,Session也会被清空
    StateServer,此模式将会话状态存储在一个名为ASP.NET状态服务的单独进程中
    SQLServer将会话状态存储到一个SQL Server数据库中
    Custom模式,此模式允许您指定自定义存储提供程序。
    Off模式.此模式禁用会话状态

    Application:服务器端
    除非应用程序关闭(程序关闭再打开或程序里新生成),否则对象一直存储在内存中。

  • 相关阅读:
    dba_tables表中的num_rows与count(*)的值为何不同
    Mysql查询数据库中的表名/模糊查询
    Nginx配置静态文件(浏览器的缓存)
    UEditor支持数学公式
    小程序H5的自动登录(后台Shiro)
    Ubuntu的邮件发送
    Infosec Tool List
    检测configMap,重载Pod内的业务容器
    CNI calico插件使用注意事项
    kspan 集群度量方案
  • 原文地址:https://www.cnblogs.com/xiaoweigogo/p/7799992.html
Copyright © 2011-2022 走看看