一、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. 代码转换为html显示

    需要将代码转换为 html 使其显示好看一些,可以在这里进行装换: https://tohtml.com/ http://hilite.me/

  2. 面试挂在了 LRU 缓存算法设计上

    好吧,有人可能觉得我标题党了,但我想告诉你们的是,前阵子面试确实挂在了 RLU 缓存算法的设计上了.当时做题的时候,自己想的太多了,感觉设计一个 LRU(Least recently used) 缓存 ...

  3. 为什么range不是迭代器?range到底是什么类型?

    迭代器是 23 种设计模式中最常用的一种(之一),在 Python 中随处可见它的身影,我们经常用到它,但是却不一定意识到它的存在.在关于迭代器的系列文章中(链接见文末),我至少提到了 23 种生成迭 ...

  4. ubuntu中使用docker部署.netcore2.1

     概述    .netcore发布这么久,到现在才在项目中实际运用,之前算是了解一点,一般找工作都会问是否运用过.netcore,软件研发来说,如果这个技术没用过,觉得挺难,其实不难..netcore ...

  5. java接口与抽象类

    本片随笔讲讲java中接口与抽象类. 一,接口 1.什么是接口? 那在日常生活中接口是什么呢?就是两个对象之间进行连接的部分就是接口,就比如热水器与水管的接口一样,他可以确保不同的东西之间的顺利连接, ...

  6. Canvas引入跨域的图片导致toDataURL()报错的问题的解决

    本文介绍了Canvas引入跨域的图片导致toDataURL()报错的问题的解决,分享给大家,具体如下: [场景] 用户打开网页,则请求腾讯COS(图片服务器)上的图片js代码.使用canvas绘图. ...

  7. GIS中的坐标系【Esri官方文档部分翻译】

    GCS 地理坐标系(GCS)使用椭圆体表面来定义地球上的位置.地理坐标系有三个部分: 基准面,是地球的椭圆体(椭球体)模型 本初子午线 角度单位 常见基准包括WGS84(用于GPS)和NAD83(用于 ...

  8. 好看又能打的CRM系统大比拼:Salesforce, SugarCRM, Odoo等

    介绍 今天的CRM市场提供了大量的解决方案和软件替代品.有些适合大型企业(通常需要内部托管),而其他企业则更多地应用于SME的需求(通常使用云托管解决方案). 在CRM解决方案方面,提供商必须调整其产 ...

  9. mysql 服务【安装】【启动】【停止】【卸载】【重置密码】

    windows安装:一.一机安装多个服务时,重复步骤,修改服务名即可: 1.mysqld install mysql_12336 --defaults-file="MYSQL_HOME\my ...

  10. Exchange Server 内部版本号和发行日期汇总

    本章节对Exchange 各个主要发行版进行简单汇总,分别列出每个服务包 (SP) 的内部版本号.累积更新 (CU) 或特定 Exchange 版本的更新汇总 (RU).汇总内容适用于Exchange ...