首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    讲讲session是怎么工作的,session的用法?

    马克-to-win:到现在为止,我们学会了一次单独的请求和响应之间传递参数。但是如何跨越几次请求响应之间传递参数呢?比如我以马克的身份登录,这是 一次请求响应。之后买书又是一次请求响应。如何买书的时候还记得买书的人是马克,而不是张三呢?马克这个参数存在哪呢?这是跨越两次访问。Sun公司为我 们提供了HttpSession这个接口。HttpSession session = request.getSession();通过这句话,你可以得到一个与你的浏览器绑定的session对象,存在Tomcat里。这 个session对象只认你这个浏览器,之后只要是你这个浏览器发出的请求,无论跨越多少次请求响应,这个session对象就对它开放,其它浏览器不能 访问。通过session.setAttribute()可以往session里面存值,session.getAttribute可以取值。问题是 session是如何识别你的浏览器呢?初学者可忽略:靠Cookie或者URL改写:如果浏览器支持Cookie,则使用Cookie;如果浏览器不支持Cookie或者Cookie功能被关闭,则自动使用URL改写方法。拿cookie来说(通常客户很少见关闭cookie,即使你关了,我也可以发现,之后提醒你打开或编程序重写URL),服务器往客户端写东西时,cookie会带上sessionid。当客户端再次访问服务器时,同一path下,会自动在html请求头中带上cookie信息,服务器可以在_COOKIE域中得取到想要的sessionid。

    04

    HttpSession的生命周期和何时销毁

    HttpSession生命周期: 1.什么时候创建HttpSession 1).对于JSP: 是否浏览器访问服务端的任何一个JSP或Servlet,服务器都会立即创建一个HttpSession对象呢? 不一定。 ①. 若当前的JSP或(Servlet)是客户端访问的当前WEB应用的第一个资源,且JSP的page指定的 session属性为false,则服务器就不会为JSP创建一个HttpSession对象; ②.若当前JSP不是客户端访问的当前WEB应用的第一个资源,且其他页面已经创建一个HttpSession对象, 则服务器也不会为当前JSP创建一个新的HttpSession对象,而会把和当前会话关联的那个HttpSession对象返回给当前的JSP页面。 2).page指令的session=”false” 到底表示什么意思: 当前JSP页面禁用session隐含变量!但可以使用其他的显式的对象 3).对于Servlet而言: 若Servlet是客户端访问的第一个WEB应用的资源,则只有调用了request.getSession()或request.getSession(true) 才会创建HttpSession对象 4). 在Servlet中如何获取HttpSession对象? request.getSession(boolean create):create为false,若没有和当前JSP页面关联的HttpSession对象 则返回null; 若有返回true create为true一定返回一个HTTPSession对象。若没有和昂前JSP页面关联的HttpSession对象, 则服务器创建一个新的HttpSession对象返回,若有,则直接返回关联。

    02
    领券