servlet之会话简介_动力节点Java学院整理

  

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

  

<强>会话和饼干的主要区别:
  

  

饼干技术是客户端技术,是由服务器将用户的数据写回给用户浏览器的。
  

  

会话技术是服务器端技术,是把用户的数据写到服务器为用户所创建的独享的会话对象中,但会话是基于饼干的。
  

  

<强>会话对象由服务器创建,这跟饼干不一样。编程人员可以通过请求请求对象的getSession()方法获取会话对象。
  

  

注意、会话一旦创建,是会存活无操作情况(或者浏览器关闭)下30分钟,这是由服务器(如Tomcat)来指定的。当我们关闭浏览器后,因为会话是基于饼干的,因此会话是存在的,只是我们可能无法再使用到(要看饼干是否还能取到)。
  

  

那么我们以一个简单的会话例子来说明,创建两个Servlet:分别命名为ServletDemo1和ServletDemo2。
  

  

在ServletDemo1中的代码如下:
  

        HttpSession会话=request.getSession ();   字符串数据=" https://www.yisu.com/zixun/message形式SessionDemo”;   会话。setAttribute(“数据”,数据);   之前      

在ServletDemo2中的代码如下:

        response.setContentType (“text/html; charset=utf - 8”);   PrintWriter作家=response.getWriter ();      HttpSession会话=request.getSession ();   字符串数据=https://www.yisu.com/zixun/(字符串)session.getAttribute(“数据”);    writer.write(数据);      

当我们打开一个浏览器先访问ServletDemo1,此时浏览器会帮我们创建会话对象,并保存数据,这时再访问ServletDemo2可以看到该保存的数据:
  

  

  

说明会话确实能保存访问不同Servlet时的数据。
  

  

比如说一个在自己主机上访问这个Servlet和B在自己电脑上访问这个相同的Servlet, A和B得到各自的会话。
  

  

而如果我们打开一个浏览器访问ServletDemo1后,再打开另一个浏览器访问ServletDemo2,那么则会显示该数据找不到:
  

  

  

注意:这时候是两个浏览器,即已经是两个会话了! ! !
  

  

我们来做一个类似于点击商品然后能加入到购物车的案例,使用会话技术。
  

  

前提准备,我们需要为商品创建JavaBean,代码如下:

        公共类产品{   私人字符串id;   私人字符串名称;   私人字符串作者;      公共产品(){   超级();   }      公共产品(String id、字符串名称字符串作者){   超级();   这一点。id=id;   this.name=名称;   这一点。作者=作者;   }      公共字符串getId () {   返回id;   }      公共空间setId (String id) {   这一点。id=id;   }      公共字符串getName () {   返回名称;   }      公共空间setName(字符串名称){   this.name=名称;   }      公共字符串getAuthor () {   返回作者;   }      公共空间setAuthor(字符串作者){   这一点。作者=作者;   }      

然后再建立一个数据库,以类的方式来创建(谁让数据库还没学呢T_T !),然后使用映射集合来存储数据,便于通过键值对检索:

        公开课ProductDatabase {      私有静态Map<字符串,Product>地图=new HashMap<字符串,Product> ();      静态{   地图。put(" 1 ",新产品(“1”,“《Java编程思想》”,“JB”));   地图。(“2”,新产品(“2”,“《Java核心技术》”,“fdaf”));   地图。(“3”,新产品(“3”,“《Java并发编程》”,“什么鬼"));   地图。把(“4”,新产品(“4”,“《头设计模式》”,“老王”));   地图。(“5”,新产品(“5”,“《HTML5权威手册》”,“hhaa”));   }      公共静态Map<字符串,Product>getMap () {      返回地图;   }   }      

好了,我们在商品显示的首页显示商品,同时为每个商品建立一个超链接,以便于当用户点击超链接时能将商品的标识作为存储数据的依据由其他Servlet类获取用户购买的商品种类:

servlet之会话简介_动力节点Java学院整理