一、session概述

隐含对象session是javax.servlet.http.HttpSession接口实现类的对象,用于保存用户的状态信息。

在web开发中,服务器为每个用户浏览器创建一个会话对象,即session对象。默认情况下,一个浏览器独占一个session对象。因此,在需要保存用户数据时,服务器程序可以把用户数据写到用户浏览器独占的session中,当用户使用浏览器访问其他程序时,其他程序可以从用户的session中取出该用户的数据,为用户服务。

session用来分别保存每一个用户的信息,使用session可以轻易地识别每一个用户,然后针对每一个用户的要求,给予正确的响应。在某些应用程序中,服务器需要不断识别是从哪个客户端发送来的请求,以便针对用户的状态进行相应的处理。因此,网上购物时最常用的就是session,当用户把物品放入购物车时,就可以将用户选定的商品信息存放在session中,当需要进行付款等操作时,又可以将session中的信息取出来。

session对象的常用方法:

二、存储客户端信息

session对象维护着客户端用户和服务器端的状态,保存着用户与服务器整个交互过程中的信息,这个对象在用户关闭浏览器或session超时前一直有效。

项目ch04案例:使用seeion对象保存客户端信息

step1:创建login.jsp

step2:创建session.jsp

step3:创建message.jsp

结果:http://localhost:8080/ch04/login.jsp

            

三、销毁session

session对象销毁后,不可以再调用session对象,否则会报session   already  invalidate异常。

关闭浏览器时,只会使存储在客户端浏览器中的session cookie失效(即将存储的属性值清空),而不会使服务器端的session对象失效。

销毁isession的三种方式:

(1)通过session对象的invalidate()方法,语法格式为:session.invalidate();

(2)session Id的时间间隔,超过了session的最大有效时间,session就会消失。

(3)服务器进程停止,session失效。

四、session跟踪---URL重写

session跟踪概念:http协议只负责请求与响应,却并不关心客户端的请求是否来自相同的客户端。而在jsp中采用session跟踪来辨别客户端。一般session跟踪有URL重写、表单隐藏字段、Cookie和HttpSession。

URL重写:在URL地址后面添加一些数据来标识session,服务器就可以将session和这些数据关联起来。

优点:即使浏览器不支持cookie或用户禁用了cookie,也可以使用。

缺点:该情况数据长度受限制,容易暴露数据,安全上存在隐患。

项目ch04案例:

创建urlsession.jsp:

结果:http://localhost:8080/ch04/urlsession.jsp

本案例中,通过在URL中添加参数,在JSP页面中通过request对象的getParameter()方法获取参数,从而实现session的跟踪。

五、session跟踪---表单隐藏字段

1、详述表单隐藏字段:一个web服务器可以发送一个HTML表单隐藏字段,以及一个唯一的session会话ID,每次当web浏览器发送请求时,session_id值可以用于保护不同的web浏览器的跟踪。

2、语法格式:<input type="hidden"  name="session"    value="......">

type属性:hidden表示该字段为隐藏字段,不会在浏览器中显示。当表单被提交时,其name属性和value属性的值被包含在get或post数据中。

缺点:当用户查看源代码时,可以看到隐藏字段的属性值,存在安全漏洞。

项目ch04案例:

创建sessionhidden.jsp

创建formAction.jsp

结果:http://localhost:8080/ch04/sessionhidden.jsp

       

六、Session跟踪---Cookie

1、Cookie概念:Cookie是一种web服务器通过浏览器在访问者的硬盘上存储信息的手段。

当用户再次访问某个站点时,服务器将要求浏览器查找并返回先前发送的Cookie信息,从而识别这个用户。

2、Cookie的目的:方便用户以及向服务器端传送相关信息。

Cookie不能用来做任何方式的运行或解释,因此也无法被病毒利用或以其他方式被用于攻击系统。

3、 作用:用来保存用户的识别信息。

浏览器一般只能为每个站点接收20个Cookie,总计Cookie不能超过300个,每个Cookie被限制在4KB以内,故不用担心Cookie会占满磁盘空间,也不用担心它们会被用于运行某些服务器所禁止的攻击。

4、语法:Cookie(String name,String value)

Cookie具体实现过程:通过response对象提供的addCookie()方法,将Cookie传送到客户端。若需要读取Cookie,则调用request对象的getCookies()方法,该方法返回Cookie对象的数组,遍历数组,通过getName()方法找到与期望名称相符的Cookie,然后再调用getValue()方法获得该Cookie的值。

5、使用Cookie实现session跟踪

项目ch04案例:

创建cookie.jsp

创建cookieAction.jsp

结果:http://localhost:8080/ch04/cookie.jsp

     

重点:若用户名为中文,则会报错,有哪位大神可以帮忙解决一下:

七、HttpSession对象

1、概念:Servlet提供了使用HttpSession接口来实现session跟踪,它是建立在Cookie和URL重写之上的高级接口。使用Cookie的前提是浏览器支持Cookie,若浏览器不支持Cookie或者Cookie被禁用,则使用URL重写,而使用URL重写需要添加附属信息,存在很大的安全漏洞,但使用Servlet不存在这样的问题,Servlet会自动提供数据的存储空间并将其和session关联起来。

Servlet可以查询到session对象并将其关联到当前request对象、创建新的session对象、查询与session相关联的信息、在session中存储信息和销毁session。

项目ch05案例:使用servlet程序实现session跟踪

step1:创建继承HttpServlet的Servlet,在类中使用HttpSession接口实现session跟踪

 

step2:修改创建Servlet时,创建的web.xml

结果:

案例解析:在本案例中,使用创建的Servlet类来实现session跟踪,并在web.xml中配置访问Servlet的地址等信息。Servlet可以捕获很多session相关信息。

jsp内置对象-session对象的更多相关文章

  1. JSP内置九个对象Request请求对象

    jsp内置对象是什么呢? 例如Java语言使用一个对象之前需要实例化(也就是所说的new一个对象),创建对象这个过程有点麻烦,所以在jsp中提供了一些内置对象,用来实现很多jsp应用.在使用内置对象时 ...

  2. JSP内置对象——session

    sessionsession表示客户端与服务器的一次会话Web中的session指的是用户在浏览某个网站时,从进入网站到浏览器关闭所进过的这段时间,也就是用户浏览这个网站所花费的时间从上述定义中可以看 ...

  3. jsp内置对象浅谈

    jsp内置对象浅谈 | 浏览:1184 | 更新:2013-12-11 16:01 JSP内置对象:我们在使用JSP进行页面编程时可以直接使用而不需自己创建的一些Web容器已为用户创建好的JSP内置对 ...

  4. JSP内置对象有哪些呢?

    内置对象 request request 对象是 javax.servlet.httpServletRequest类型的对象. 该对象代表了客户端的请求信息,主要用于接受通过HTTP协议传送到服务器的 ...

  5. JSP内置对象-request

    JSP内置对象即无需声明就可以直接使用的对象实例,在实际的开发过程中,比较常用的JSP对象有request,response,session,out和application等,笔者在本文章中将简单介绍 ...

  6. JavaWeb学习----JSP内置对象详解

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  7. Jsp内置对象及EL表达式的使用

    一.JSP的内置对象(9个JSP内置对象) JSP的内置对象引用名称 对应的类型 request HttpServletRequest response HttpServletResponse ses ...

  8. Java遇见HTML——JSP篇之JSP内置对象(上)

    一.JSP内置对象简介 1.1.内置对象简介 JSP内置对象是WEB容器中创建的一组对象,可以直接使用不需要new,如截图中的out 对象. JSP有九大内置对象: 五大常用对象: out.reque ...

  9. JavaWeb之 JSP:内置对象,EL表达式,JSP标签基础

    JSP的内置对象 什么是JSP的内置对象呢? 在JSP页面进行编程的时候,如果我们要使用一些对象,如:HttpSession,ServletConfig,ServletContext这些对象,如果每次 ...

  10. jsp内置对象和el表达式

    九个内置对象 *out jsp的输出流,用来向客户端响应 *page 当前jsp页面, 它的引用数据类型是Object,即真身中有如下代码 Object page=this; *config 它对应真 ...

随机推荐

  1. 性能测试入门 — LoadRunner 使用初探

    前言: 性能测试是利用产品.人员和流程来降低应用程序.升级程序或补丁程序部署风险的一种手段.性能测试的主要思想是通过模拟产生真实业务的压力对被测系统进行加压,验证被测系统在不同压力情况下的表现,找出其 ...

  2. 跳动在网页中间的精灵----Javascript

    今天开始js的内容整理,跳动在网页里的精灵就是它了. 一.简介 1.什么是Javascript JavaScript 是一种具有面向对象能力的.解释型的程序设计语言.更具体一点,它是基于对象和事件驱动 ...

  3. 为自己搭建一个分布式 IM 系统二【从查找算法聊起】

    前言 最近这段时间确实有点忙,这篇的目录还是在飞机上敲出来了的. 言归正传,上周更新了 cim 第一版:没想到反响热烈,最高时上了 GitHub Trending Java 版块的首位,一天收到了 3 ...

  4. [小技巧]ASP.NET Core中如何预压缩静态文件

    原文地址:Pre-compressed static files with ASP.NET Core 作者:Gunnar Peipman 译者:Lamond Lu 译文:https://www.cnb ...

  5. Android快速开发常用知识点系列目录

    项目构建 Android项目目录结构模板以及简单说明[简单版] Android Studio配置统一管理依赖版本号引用 Android多Module下的Application引用方式 APP开篇 An ...

  6. link/Extended dependency 无法显示连接

    把矩形控件先去掉,然后就能看到表与表之间的 link/Extended dependency 连线了.

  7. 贾天昊 - Nick

  8. 关于thinkphp5手动抛出Http异常时自定义404页面报错的问题

    在使用HttpException手动抛出异常时,希望跳转到自定义的错误页面,官方的文章中是这样描述的. 可以使用\think\exception\HttpException类来抛出异常 // 抛出 H ...

  9. Github项目推荐-图神经网络(GNN)相关资源大列表

    文章发布于公号[数智物语] (ID:decision_engine),关注公号不错过每一篇干货. 转自 | AI研习社 作者|Zonghan Wu 这是一个与图神经网络相关的资源集合.相关资源浏览下方 ...

  10. SQL Server使用sp_rename重命名约束注意事项

    在SQL Server中,我们可以使用sp_name这个系统存储过程重命名数据库中对象的名称. 此对象可以是表. 索引. 列. 别名,约束等数据类型(具体可以参考官方文档).上周在使用这个函数重构数据 ...