一、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. 解决tomcat部署项目中碰到的几个问题

    在tomcat上部署项目并进行测试,经常会碰到各种问题.在不同的操作系统上部署,对问题的解决也会有一些差异. 1 发现问题 1.1 项目部署 先将项目达成war包,放到tomcat的webapps目录 ...

  2. java游戏开发杂谈 - 创建一个窗体

    package game1; import javax.swing.JFrame; /** * java游戏开发杂谈 * ---demo1:创建一个窗体 * * @author 台哥 * @date ...

  3. Java工程师必备书单

    微信公众号[程序员江湖] 作者黄小斜,斜杠青年,某985硕士,阿里 Java 研发工程师,于 2018 年秋招拿到 BAT 头条.网易.滴滴等 8 个大厂 offer,目前致力于分享这几年的学习经验. ...

  4. ansible工具

    关于ansible 在ansible官网上是这样介绍ansible的:Ansible is an IT automation tool. It can configure systems, deplo ...

  5. mybatis一对一 和 一对多 嵌套查询

    实际项目中的,接口对外VO  会出现 一对一 和 一对多的情况,举例:小区 下面有 楼栋  ,楼栋 下面有 房屋    ,   房屋里面又房间 小区Vo  : districtVo { id: nam ...

  6. Java之mybatis详解

    文章大纲 一.mybatis介绍二.mybatis代码实战三.项目源码下载四.参考文章   一.mybatis介绍 1. mybatis是什么?   mybatis是一个持久层的框架,是apache下 ...

  7. BFPRT算法

    解决的问题:在一个数组中找到最小的k个数 常规解法:1.排序,输出前k个数,时间复杂度O(n*log(n)). 2.利用一个大小为k的大根堆,遍历数组维持大根堆,最后返回大根堆就可以了,时间复杂度O( ...

  8. CI持续集成系列之(九)代码发布脚本模板书写

    前言 前面我们介绍了Jenkins来发布项目通过nginx来展示流程,那里只是提供了一个简单的测试脚本,接下来呢介绍一下一个比较完善的发布脚本,该脚本可实现从gitlab服务器获取代码,打包,部署到W ...

  9. SpringCloud的分布式配置及消息总线

    1.在搭建分布式配置时,我们大概看下分布式配置的流程 如图所示: 当一个系统中的配置文件发生改变的时候,我们需要重新启动该服务,才能使得新的配置文件生效,spring cloud config可以实现 ...

  10. golang 变量定义

    package main import "fmt" var luckyNum = 6 var luckyStr = "love" //myNum := 6 // ...