首页 理论教育 JSP会话跟踪方法及优势

JSP会话跟踪方法及优势

时间:2023-11-05 理论教育 版权反馈
【摘要】:JSP中有4种方式可以实现会话跟踪。所以,隐藏表单的会话追踪功能只能应用于简单的信息传递。如果是通过URL重写方式实现会话跟踪,一般显示的URL如下所示:以上的URL中,“uid=jsp&book=jspProgramming”表示产生字符串。浏览器读取到这一段后,会根据指定的名称生成一个Cookie。Cookie的优点是,对于没有经过用户允许的信息,不会被传到服务器。只要客户给出这个键,服务器就会跟踪应用的实际状态。HttpSession对象实际上作为用于存储或获取信息的容器。

JSP会话跟踪方法及优势

JSP中有4种方式可以实现会话跟踪。

1.建立含有数据的隐藏表单字段

在用户的请求之间跟踪数据的简单方法就是使用HTML表单,其对于在几个表单之间维护少量的数据、使用隐藏的表单字段,既简单,又有效。

为了使用隐藏的表单字段,服务器获取请求数据,并将其放回到下一个页面的表单里。服务器必须每次都这么做,否则,所有数据都会丢失。

使用HTML的隐藏表单(Hidden form)的方法,就是在HTML的<form>里使用<input type="hidden">这个语句。例如:

代码范例7.1是一种使用隐藏域的用法。

代码范例7.1:

使用隐藏表单的缺点:

(1)如果把表单的提交方式设置为Get,将使浏览器窗口显示所有的参数查询信息。这样就容易暴露个人信息,从而造成安全隐患。当然,这个问题也可以解决:把表单的提交方式设置为Post就可以了。

(2)即使将表单的提交方式设置为Post,如果查看HTML文件中的源代码,还是可以看到相应的隐藏表单里的信息数据。

所以,隐藏表单的会话追踪功能只能应用于简单的信息传递。

2.URL重写

URL重写(URL Rewriting)方法,实际上就是重新调用URL的方式。它将原来的URL加上查询参数,并显示上一次请求的信息。

如果是通过URL重写方式实现会话跟踪,一般显示的URL如下所示:

以上的URL中,“uid=jsp&book=jspProgramming”表示产生字符串。文件所在路径和查询参数通过 “?”连接,而多个查询参数则通过 “&”标识。

代码范例7.2是一种使用URL重写的用法。

代码范例7.2:

虽然URL重写方式简单且相对容易理解,但是,它有也有缺陷:

(1)要传递的查询信息被直接显示在浏览器的地址栏。因此,涉及个人隐私的信息,就不能应用URL重写方法。

(2)URL的长度是有限的,如果要传递的内容非常多,这种方式就显得非常麻烦,很多情况下没有办法传递数据。(www.xing528.com)

正因为以上原因,URL重写方法应用于极少的场合,一般重要的模块都不会用这种方法进行数据的传送。

3.Cookie

当服务器响应浏览器的调用时,Cookie就会加入HTTP的Head部分,被传递给浏览器。浏览器读取到这一段后,会根据指定的名称生成一个Cookie。在Cookie生成后,浏览器与服务器进行通信时,会将Cookie值传递给服务器。

以下方法可以创建一个Cookie:

可以设置Cookie的有效时间。例如,以下代码用于设置Cookie的有效时间为7天。以秒为单位。

如果将上面方法中的参数值设置为负数,Cookie将和浏览器同时关闭;如果设置为0,浏览器会把这个Cookie删除。

Cookie的优点是,对于没有经过用户允许的信息,不会被传到服务器。只有经过用户允许,信息才有可能被传递给服务器。

信息安全日益重要的今天,用户为了不使自己的个人信息泄露,常常将浏览器的Cookie功能关闭。但是,如果关闭Cookie功能,将会使很多互联网上的服务无法完成。

当然,Cookie也有缺点。由于Cookie以纯文本形式存储到机器中,因此别人也可以打开这个文件进行阅读,这样就会引发安全问题。不过如果这台机器只是用户本人使用,就不会有这个问题。

4.Session

Session ID就是一个值,它表示服务器上保存的状态信息集合的键。当客户给出这个键时,服务器就知道应该使用哪个状态信息集合。只要客户给出这个键,服务器就会跟踪应用的实际状态。

使用Session ID有许多优点:

(1)大多数信息可以被存储在服务器上,不必发送到客户端。

(2)由于状态数据不必随每个应用来回发送,所以应用之间的带宽减少了。

(3)因为在客户和服务器间只需传递Session ID,增强了安全性。

跟踪会话的步骤是:服务器为用户产生一个独一无二的ID,然后服务器通过设置Cookie或者URL重写方法来存储Session ID。通常是使用Cookie,但是,对那些不想使用Cookie的站点,也可以使用URL重写方法来存储Session ID。现在许多JSP引擎有足够的智能,它们会先尝试设置Cookie,如果客户浏览器禁用了Cookie,那么就转而使用URL重写。

接下来创建HttpSession的新实例。可以使用Session ID作为键值来访问新的HttpSession对象。只要客户返回正确的键值,就可以访问HttpSession对象的相同实例。如果存在来自多个用户的请求,那么每个用户都将拥有自己的HttpSession对象,但是只能从他们自己的请求来访问这个对象。

HttpSession对象实际上作为用于存储或获取信息的容器。这个对象可以存储任意数目的其他信息。实际上,任何扩展java.lang.Object的内容都能够被放进HttpSession对象。也就是说,即使是更抽象的数据(包括I/O流和数据库链接),也可以被放进此对象,并与某个客户关联起来。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈