session

Session知识点
session对象指的是客户端与服务器的一次会话,从客户连到服务器的一个
WebApplication开始,直到客户端与服务器断开连接,它是HttpSession的实例。
session最早出现在动态脚本语言Active Server Pages中
一:用户的登录与退出
这里牵涉到response.sendRedirect()与request.getRequestDispatcher()的区别:
主要有三点区别:
1:从域这块来讲:response为null,没有值,request有值
2:从地址栏来看:response有跳转,request没有跳转
3:从数据来分析:response是进入页面之后获取数据,request是在这个页面取另一个页面的值(抓取数据)
二:session与request的区别:
主要是域的区别:
session域的范围:>=2
request域的范围:=2
三:session.setAttribute(String str)方法:
通过参数str来识别所传递的值。
当两个Web组件之间为转发关系时,转发目标组件通过getAttribute()方法来和转发源组件共享request范围内的数据。
四:True/false的区别:
Session对象的由来是由request.getSession()方法得到,此方法有个带参,有个无参。
带参的返回的是Boolean型,这里牵涉到true和false的区别:
方法默认的是true,意思就是如果存在的话就用已有的,如果不存在就创建一个session对象。False:意思就是如果存在的话就用已有的,如果没有就抛异常。
通俗的话解释:true这种情况比较灵活咯。
False这种情况比较死脑筋,吊在一棵树上

//request.getSession(true)和request.getSession(false)的区别?
//第一个就是默认里面的参数是true,即当前的request的session不可用时,那么 他就会创//建一个新的会话,也就是没有的话就创建 ,第二个就是,当前会话不存在的时候,它会//返回一个null值。 78. 就像你直接通过地址去访问一个servlet一样,他是不会创建一//个session的,只有当你用 reqeust.getSession(),且里面的参数是true时,默认就是true//只要你不到里面写一个false就会创建一个session. 这跟直接去访问一个jsp不同,因为在jsp的头部,有一个session="true" 默认就写在上面 为true的,所以你一//请//求就创建了一个session.

三:关闭session的三种方式:
1:直接关闭浏览器
2:让它的生命周期自动消失(自动超时:15分钟-20分钟)
3:手工关闭(强制性的:session.Invalidate())
四:session是怎样实现的?
在session实现中用cookie实现的。cookie存在于客户端,也就是用户的机器中,里面保存着用户的session ID,也就是 session号码,当用户的浏览器请求服务器时把session ID也一起送到服务器,这样服务器就可以识别你是谁,也就可以把变量识别开了。这样我 们就不难理解了,为什么有时session会失效了。不信的话,你可以试试: 在IE的"工具"菜单上有"Internet选项"菜单,打开后再选"安 全"->"自定义级别",将安全设置中的"允许使用每个对话cookies"设为禁用,再看看session能不能用。这下明白了吧!不过php4 在linux/unix平台上可以自动检查cookies状态,当cookies 不可用时,自动会把session ID附带在url上进行传递。这是 它在session方面比asp多的唯一的优点了。
五:扩展知识:
session用中文来解释就是会话期。一个会话期开始于用户输入一个站点的网址时,结束于他离开这个站点时。session最早出现在动态脚本语言Active Server Pages中。
当php还在3.0版本时,session是它永远的痛。虽然php具有执行速度快,使用灵活,功能强大等优点,但因为session的问题,使很多站点 的开发放弃了php,至少我的老板是这样认为的。当时有很多php免费函数库提供在php3上实现session的方案,但都让人感觉不正宗。就好象你花 好几千大洋买的手机却配置一个很粗糙的草作的袋子一样,虽然功能是一样的,但总让人觉得别扭。php4的出现让php在session问题上有了翻身的机 会。虽然它的session实现还不是很理想(主要是效率问题),但毕竟是它自己实现的,而且可以实际使用了。
六:session有什么用处?
作过网站的人都有这样的体会,在一页页面中的变量(在本章都指服务器端变量,下同)是不能在下一页中用的,虽然有一些办法可以实现,比如用 form,urlstring等等,但有些对于用户来说是不方便的,即使让form自动提交,但其中的延时在现今的网络状况下足以让人窒息,而这两种方法 都明显加大程序员的负担。如果你正在开发一个大型项目,那这些额外的负担是不能忽略的。而有了session就好办了,session中注册的变量可以作 为全局变量使用。什么,全局变量? 好极了。这样一来,你知道有什么用了吧:最主要的用于用户身份认证,程序状态记录,页面之间参数传递。
七:php中session的缺点:
它是用文件保存的变量(当然效率不高了,虽然可以用别的方式,但很麻烦的),不能保存对象。与之相对的是,asp中的session可以保存对象变量,用 内存变量来保存session变量。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值