1 什么是会话

  用户开一个浏览器访问某个网站,点击多个链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为会话,与打电话类似。会话过程要解决一些问题,

每个用户在使用浏览器与服务器进行会话时,会产生一些数据,服务器需要为每个用户保存这些数据。Servlet 保存会话信息的技术有:session 与 cookie。

2 cookie

① 为什么需要cookie 技术

  • 登录网站时显示用户最后一次登录时间,不同的用户显示的最后一次登录时间不同;
  • 访问购物网站时,如何保存用户曾经浏览过的商品,并且显示给用户;
  • 登录网站时,显示需要保存登录信息多久;

② 什么是 cookie

cookie 是客户端技术,服务器端把每个用户的信息(登录名,密码等)以cookie 的形式保存在客户端的浏览器缓存目录下的,在需要的时候可以从客户端读取。

③ cookie 工作流程

  ④ cookie 使用

  cookie 像一张表,分两列,一个是名字,一个是值,数据类型都为String。

  cookie 的创建与读取

 //创建Cookie 对象
Cookie cook = new Cookie("name","latiny1");
//设置Cookie生命周期
cook.setMaxAge(3600);
//将cook返回给浏览器
response.addCookie(cook); //读取Cookie
Cookie[] cookies = request.getCookies();

  ⑤ cookie 的特点 

  • cookie是在服务器端创建的;
  • cookie 是保存在浏览器端的(客户端);
  • cookie可以被多个浏览器共享;
  • cookie 重名会覆盖掉之前的cookie,只有最后一个有效;
  • cookie存放时以明文的形式存放,因此安全性比较低;
  • 一个浏览器最多放300个Cookie,一个站点最多放20个cookie,一个cookie大小限制在4K。
  • Cookie默认的生命周期是会话级别(浏览器关闭时,cookie就会被一起删除);通过setMaxAge()可以设置生命周期,设置为0或者负数时,代表清除客户端的cookie。

3 session

① 为什么需要session

如何实现在不同的页面可以查看信息(如购物车),不同的用户看到的信息不一样。

② 什么是session

  Session是服务端技术,服务器在运行时可以为每个用户的浏览器创建一个独享的session对象,由于session为用户浏览器独享,所以用户在访问服务器资源时,可以把各自的数据放在各自的session中,当用户再去访问服务器中的其他web资源时,其他web资源再从用户各自的session中取出数据为用户服务。

③ session 的特点

  • session是放在服务器内存中的;
  • 一个用户浏览器独享一个session域对象;
  • session 生命周期指的从最后一次访问或者操作session 时计算,默认为30minutes,可以通过web.xml修改;

a.  修改 tomcat/cnf/web.xml修改,对所有web应用生效

 <session-config>
<session-timeout>30</session-timeout>
</session-config>

  b. 修改自己项目的web.xml 文件

<session-config>
<session-timeout>1</session-timeout>
</session-config>

  如果两边配置不一致,则以自己项目配置为准。

  c. 在代码里设置

//设置session的有效时间,从最后一次使用开始计算
session.setMaxInactiveInterval(60);

   

  • session 失效指的整个session失效,而不只是session的某个属性失效;通过函数se.invalidate() 强制整个session失效,通常用于安全退出;设置session 某个属性失效,se.removeAttribute("name"); 重启tomcat,reload web 应用,关机等操作,session都会失效;

  ④ session 的使用

  获取创建session

//获取session
HttpSession se = request.getSession();
se.setAttribute("name","latiny");

  使用session

//获取使用 session
HttpSession se = request.getSession();
String name=(String)se.getAttribute("name");

  

  ⑤ session 实际应用

a. 网上商城购物车

b. 保存用户登录信息

c. 放入某些需要的信息供同一个用户的各个页面使用

d. 防止用户非法登录到某个页面

  ⑥ 禁用Cookie 之后怎么实现购物车功能(购物车要通过session 来实现,而session的信息的传递需要cookie协助),使用encodeURL

  a. 在发送页面加入以下代码

//访问以下session
request.getSession();
String url = response.encodeURL("/ShopCart/BookHandle?id="+book.getId());

  b. 在接受页面对url使用encode

String url = response.encodeURL("/ShopCart/ShowBook");
out.println("<a href='"+url+"' >返回商品页面</a></br>");

  4 Session 与 Cookie 总结

① 存储位置不一样

Cookie存在客户端浏览器的临时文件下。

Session存在服务器端的内存中,一个session域对象为一个用户浏览器服务。

② 存放形式

session是以对象的形式保存在服务器,cookie以字符串的形式保存在客户端。

③ 用途

session 一般用来做客户身份验证,cookie适合保存用户的个人设置,如爱好,登录有效期等。

④ 大小及数量限制

单个cookie在客户端的大小有限制,cookie的个数浏览器也有限制;session理论上没有限制,跟服务器端内存有关。

⑤ 安全性

Cookie 以明文方式存放在客户端的,安全性较低;可以通过加密算法加密之后再存放。MD5

Session 存放在服务器内存中,安全性相对较高。

⑥ 生命周期

Cookie 生命周期是累计的,从创建时就开始计时,例如它的生命周期为30分钟,则从创建时开始计时,30分钟后失效。

Session 生命周期是间隔时间,即从用户最后一次访问session开始计时,例如它的生命周期为30分钟,则30分钟内没有用户访问,它才会失效。关闭tomcat;reload web应用;时间到;调用invalidate方法。

⑤ 访问范围

Session 为一个用户浏览器独享

Cookie 为多个用户浏览器共享

⑥ 使用原则

因为Session 会占用服务器内存,因此尽量少使用session,不要在session存放过多过量的数据,会影响性能。

session与cookie的联系

session需要借助cookie才能正常工作,如果客户端完全禁止cookie,session将会失效,因为session是由应用服务器维持的一个服务端的存储空间,用户在连接服务器时,会由服务器生成唯一的session id,用该session id为标识来存取服务端的session空间。而session id存储在cookie中,用户提交页面时会将这个sesssion id提交到服务端,来存取session数据,这一过程是不用开发人员干预的。

7 Servlet 会话技术的更多相关文章

  1. servlet会话技术:Cookie

    什么是会话会话可以简单理解为:用户开一个浏览器访问某个网站,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话.会话过程中需要解决的一些问题每个用户在使用浏览器与服务器进 ...

  2. Servlet 会话技术cookie和session

    会话技术 Cookie技术:会话数据保存在浏览器客户端. Session技术:会话数据保存在服务器端. 一.Cooke技术 1. 特点 Cookie技术:会话数据保存在浏览器客户端. 2 .Cooki ...

  3. servlet 会话技术

    一.控制器: 1.如何去确定需要一个新的控制器? 原则:一类事务请求需要一个控制器. 二.会话: 用户开一个浏览器,访问一个网站,只要该浏览器不关闭浏览器,不管该用户点击了多少个超链接,访问了多少个资 ...

  4. servlet会话技术:Session

    问题的引出 1.在网上购物时,张三和李四购买的商品不一样,他们的购物车中显示的商品也不一样,这是怎么实现的呢? 2.不同的用户登录网站后,不管该用户浏览该网站的那个页面,都可以显示登录人的名字,同时可 ...

  5. Servlet第五篇【介绍会话技术、Cookie的API、详解、应用】

    什么是会话技术 基本概念: 指用户开一个浏览器,访问一个网站,只要不关闭该浏览器,不管该用户点击多少个超链接,访问多少资源,直到用户关闭浏览器,整个这个过程我们称为一次会话. 为什么我们要使用会话技术 ...

  6. 会话技术( Cookie ,Session)

    会话技术:    会话:浏览器访问服务器端,发送多次请求,接受多次响应.直到有一方断开连接.会话结束.        解决问题:可以使用会话技术,在一次会话的多次请求之间共享数据.           ...

  7. Java Web之会话技术

    客户端与服务器通信过程中,会产生一些数据.比如,A和B分别登陆了某宝购物网站,A买了一个Android手机,B买了一个iPhone手机,当结账时,web服务器需要分别对用户A和B的信息分别保存.根据J ...

  8. JavaWeb学习之转发和重定向、会话技术:cookie、session、验证码实例、URLConnection使用(下载网页)(4)

    1.转发和重定向 HttpServletResponse response 转发: RequestDispatcher dispatcher = request.getRequestDispatche ...

  9. JSP入门&会话技术

    一.JSP    1.jsp技术        jsp是sun提供动态web资源开发技术.为了解决在Servlet中拼写html内容css.js内容十分不方便的问题,sun提供了这样一门技术.如果说S ...

随机推荐

  1. JavaScript 文档对象模型(DOM)

    文档对象模型     通过 JavaScript,您可以重构整个 HTML 文档.您可以添加.移除.改变或重排页面上的项目.要改变页面的某个东西,JavaScript 就需要获得对 HTML 文档中所 ...

  2. 【Docker】基础学习及在.Net Core应用

    一.Docker基础 Docker 是一个开源的应用容器引擎,基于 Go 语言 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的 Linux 机器上 ...

  3. 为什么要学习Java虚拟机

    为什么要学习Java虚拟机? 为什么要学习JVM? 学习Java虚拟机有什么好处? 这些问题就好像在问Java程序猿:你为什么要变强大! C++程序编译后可直接运行于物理机CPU上.而Java程序则不 ...

  4. Djiango初识

    加载静态文件 在一个网页中,不仅仅只有一个 html 骨架,还需要 css 样式文件, js 执行文件以及一些图片 等.因此在 DTL 中加载静态文件是一个必须要解决的问题.在 DTL 中,使用 st ...

  5. TS学习随笔(七)->声明文件

    now我们来看一看TS怎么声明文件, 在JS里面我们经常会使用各种第三方类库,引入方式也不太相同,常见的就是在HTML中通过script标签引入,然后就可以使用全局变量$或者jQuery了 我们通常这 ...

  6. alibaba fastjson 使用

    // 对象转 json 字符串 User user1 = new User("Marry", 30, new Date()); String str1 = JSON.toJSONS ...

  7. 最简单打开三星note8三星galaxy susb调试模式的方法

    每当我们使用安卓手机连接PC的时候,如果手机没有开启usb调试模式,PC则无办法成功检测到我们的手机,部分APP也无办法正常使用,这时我们需要找处理方法将手机的usb调试模式开启,以下内容我们介绍三星 ...

  8. Kotlin入门(32)网络接口访问

    手机上的资源毕竟有限,为了获取更丰富的信息,就得到辽阔的互联网大海上冲浪.对于App自身,也要经常与服务器交互,以便获取最新的数据显示到界面上.这个客户端与服务端之间的信息交互,基本使用HTTP协议进 ...

  9. .NET性能优化小技巧

    .NET 性能优化小技巧 Intro 之前做了短信发送速度的提升,在大师的指导下,发送短信的速度有了极大的提升,学到了一些提升 .NET 性能的一些小技巧 HttpClient 优化 关于使用 Htt ...

  10. Nginx+uWSGI启动Django

    在之前的几篇博客中对Django的功能做了初步实践,这里链接贴一下: Django的安装和启动 Django之--网页展示Hello World! Django之--通过MVC架构的html模板展示H ...