cookies、params、request、session

1、cookies
cookies对象封装了客户端的Cookie信息
cookies[:name] = “chengang”
cookies[:current_time] = Time.now.to_s
cookies[:key1] = {:value=>”four”, :expires=>10.days.from_now}
:expires设置cookies到期时间,从现在起10天后到期

2、params
  它是一个哈希结构的对象,用于封装传递到Action方法的参数,可以用params[:id]或params['id']取值

3、request
request.get?.to_s 得到一个布尔字符true或false。判断是否是一个get请求
request.post?.to_s 是否是一个post 请示
request.host()返回主机地址
request.protocol 返回协议类型,如http://
request.env["REQUEST_URL"]返回访问的url,如:http://localhost:3000/site/index/1
request.env["HTTP_ACCEPT_LANGUAGE"]返回示例:zh-cn

4、session
  (1)当若干个用户访问运行在服务哭上的网站,当每个用户首次与web服务哭建立连接时,他就与这个服务器建立了一个session,同时为用户分配一个session ID,用以标识用户唯一身份,同时在以cookies方式将session ID保存在用户浏览器上,
  (2)与cookies不同,Session允许出现多种数据结构的信息,如对象,
  (3)web服务器接收到用户请求后,查找用户session ID,如没有,则新建一个session ID,同时将它保存在用户浏览器上,然后,ROR根据session id找到保存在服务器上的session数据,对过session对象实现对session的各种操作,
  (4)session对存储内容的限制
      session对象,不能存储I/O对象,因为在存储对象时,session对象会自动调用ruby语言中的marshal函数对对象序列化操作。
      session存储model对象时,必须在所有用到该model类对象的controller类中使用model声明加以声明。如果较多controller类都用到了同一个model类对象,可以直接在app/controllers目录的全局controller类定义文件application_controller.rb中进行声明,
      不要在session对象中存储大量的数据。
      不要在session对象中存储易失性数据。
随着用户状态的变化,session存储的数据也会出现非周期性的变化,这就有可能导致session对象中所存的数据出现不一至的情况,关于数据不一至的处理有三种(略)
    (5)session对象中的预设参数项
:database_manager  指定session对象中的数据以何种方式保存在服务器端
:session_id 指定一个Session ID,若不指定,ROR会自动创建一个Session ID
:session_key 其值对应于COOKIE中的session ID
: session_path 用于指定对应的Session的有效范围,默认值为/,即在当前域内都有效
:session_secure 接受布尔型值,为true时表示对应的Session只能用于 http协议,默认为false
在controller类文件中使用代码ActionController::Base.session_option[option]=value或session_option()方法就可以实现对session对象预设参数项的设定,其中option表示参数项的名称,value表示准备设定的值
    
    (6)  session的存储
1、PStore 方式
   默认的存储方式,方法为
ActionController::Base.session_option[:database_manager]=CGI::Session::Pstore或
session_store=:PStore.
在pStore方式下Session数据保存在一个特定格式的文件中,所谓特定格式是指序列化后的数据

2、Active Record Store方式
方法为session_store=:active_record_store
在active Record Store方式下,Session中的数据保存到数据库中,为此需在后台数据库中建立一张数据表,

3、DRb Store方式
方法为: session_store=:drb_store
分布式存储session对象,指将session对象存储在一个DRb服务器上,它与web服务器相对独立,

(7)Session的到期处理
1,reset_session()方法直接删除那些不再需要Session信息(如用户登出)
2,针对不同的session存储方式,采用不同的到期处理方式

例:if Time.now-session[:created_time]>3600
  session[:current_session]=false
   end

你可能感兴趣的:(数据结构,Web,浏览器,cgi,Ruby)