一、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. 还在用Synchronized?Atomic你了解不?

    前言 只有光头才能变强 之前已经写过多线程相关的文章了,有兴趣的同学可以去了解一下: https://github.com/ZhongFuCheng3y/3y/blob/master/src/thre ...

  2. 面向对象之三个基本特征(javaScript)

    1. 前言 2. 封装 3. 继承 4. 多态 5. 总结 1. 前言 了解过面向对象的同学应该都知道,面向对象三个基本特征是:封装.继承.多态,但是对于这三个词具体可能不太了解. 2. 封装 在说封 ...

  3. 图解CSS3-flex布局

    前言 最近笔者在复习以前基础知识,发现很多细的知识点还是需要重新再总结一番.本文对flex布局进行图解说明,以后忘了的同学可以随时过来查看,欢迎转载,烦请注明出处. 主体 万丈高楼平地起,熟悉flex ...

  4. SAP HUM 锁住一个HU?

    SAP HUM 锁住一个HU? 1)SAP HUM 不能锁一个已发货的HU! 如下的HU 180141205000已经发货过账, HUMO, 执行, 2)一个WHSE状态的HU就可以被锁定.比如HU ...

  5. 华为模拟器eNSP安装(最新)网络工程师必备!

    电脑杂七杂八的东西太多了,于是今天把电脑重装系统了,正好重新安装一下华为模拟器eNSP,这个教程应该是最新的,因为eNSP版本更新以及华为官网页面的变化,有的小伙伴安装eNSP都下载不到安装包,接下来 ...

  6. 产品经理之UML表达业务逻辑

    文章大纲 一. 什么是UML二. UML基础介绍三.UML实例介绍四.参考文档   一. 什么是UML   UML(Unified Modeling Language,统一建模语言) 是一种在软件设计 ...

  7. Windows上搭建远程访问服务

    Windows上搭建远程访问服务 转自:https://blog.51cto.com/13871378/2153308?source=dra 概述:允许客户机通过拨号连接或虚拟专用网连接到公司局域网, ...

  8. LOJ #6051. 「雅礼集训 2017 Day11」PATH

    完了感觉最近留了好多坑的说,这题也是模模糊糊地会一点 首先我们发现题目要求的是单调不上升的序列个数,那么一个套路就是用值减去下标 然后考虑连续位置的限制,这个我们做一个置换然后尽量向后取 这样拿值和位 ...

  9. JavaScript正则表达式基础

    ECMAScript 3 开始支持正则表达式,其语法和 Perl 语法很类似,一个完整的正则表达式结构如下: var expression = / pattern / flags ; 其中,模式(pa ...

  10. C#Npoi

    https://download.csdn.net/download/youhmcq/7725559http://www.cnblogs.com/downmoon/archive/2012/04/11 ...