Session

什么是Session
  Session 是另一种记录浏览器状态的机制。不同的是Cookie保存在浏览器中,Session保存在服务器中。用户使用浏览器访问服务器的时候,服务器把用户的信息以某种的形式记录在服务器,这就是Session
为什么要使用Session技术?
  Session比Cookie使用方便,Session可以解决Cookie解决不了的事情【Session可以存储对象,Cookie只能存储字符串。】。
Session API
  long getCreationTime();【获取Session被创建时间】
  String getId();【获取Session的id】
  long getLastAccessedTime();【返回Session最后活跃的时间】
  ServletContext getServletContext();【获取ServletContext对象】
  void setMaxInactiveInterval(int var1);【设置Session超时时间】
  int getMaxInactiveInterval();【获取Session超时时间】
  Object getAttribute(String var1);【获取Session属性】
  Enumeration getAttributeNames();【获取Session所有的属性名】
  void setAttribute(String var1, Object var2);【设置Session属性】
  void removeAttribute(String var1);【移除Session属性】
  void invalidate();【销毁该Session】
  boolean isNew();【该Session是否为新的】
Session作为域对象
  Session作为一种记录浏览器状态的机制,只要Session对象没有被销毁,Servlet之间就可以通过Session对象实现通讯
  一般来讲,当我们要存进的是用户级别的数据就用Session,那什么是用户级别呢?只要浏览器不关闭,希望数据还在,就使用Session来保存。
Session的生命周期和有效期
  Session在用户第一次访问服务器Servlet,jsp等动态资源就会被自动创建,Session对象保存在内存里,这也就为什么上面的例子可以直接使用request对象获取得到Session对象。
  如果访问HTML,IMAGE等静态资源Session不会被创建。
  Session生成后,只要用户继续访问,服务器就会更新Session的最后访问时间,无论是否对Session进行读写,服务器都会认为Session活跃了一次。
  由于会有越来越多的用户访问服务器,因此Session也会越来越多。为了防止内存溢出,服务器会把长时间没有活跃的Session从内存中删除,这个时间也就是Session的超时时间。
  Session的超时时间默认是30分钟,有三种方式可以对Session的超时时间进行修改
    第一种方式:在tomcat/conf/web.xml文件中设置,所有的WEB应用都有效
    第二种方式:在单个的web.xml文件中设置,对单个web应用有效
    第三种方式:通过setMaxInactiveInterval()方法设置
使用Session完成简单的购物功能

1、显示书籍并添加购买的处理数据超链接

response.setContentType("text/html;charset=UTF-8");
PrintWriter printWriter=response.getWriter();
printWriter.write("网页上所有的书籍"+"<br/>"); LinkedHashMap<String,Book> linkedHashMap=DB.getAll();
Set<Map.Entry<String, Book>> entry=linkedHashMap.entrySet(); for(Map.Entry<String, Book> stringBookEntry:entry){
Book book=stringBookEntry.getValue();
String url="/firstServlet/Demo?id="+book.getId();
printWriter.write(book.getName());
printWriter.write("<a href='"+url+"'>购买</a>");
printWriter.write("<br/>");
}

  2、处理数据(添加book到list并判断是否为空进行第一次初始化)

     response.setContentType("text/html;charset=UTF-8");
String id=request.getParameter("id");
Book book=(Book)DB.getAll().get(id); HttpSession httpSession=request.getSession(); List<Book> list=(List<Book>)httpSession.getAttribute("list"); if(list==null){
list=new ArrayList<Book>();
httpSession.setAttribute("list", list);
}
list.add(book); String ur1="/firstServlet/History";
response.sendRedirect(ur1);

  3、重定向显示购物记录页面(与直接在处理数据页面显示独立起来,且区别在链接id没有明文显示)

     response.setContentType("text/html;charset=UTF-8");
PrintWriter printWriter=response.getWriter();
HttpSession httpSession =request.getSession();
List<Book> list=(List<Book>) httpSession.getAttribute("list"); if(list==null||list.size()==0){
printWriter.write("对不起,您还没有购买任何商品");
}else{
printWriter.write("您购买过以下商品");
printWriter.write("<br/>");
for(Book book:list){
printWriter.write(book.getName());
printWriter.write("<br/>");
}
}

Servlet第五篇(会话技术之Session)的更多相关文章

  1. 会话技术之Session(购物车加入、查看和清空)

    会话技术之Session session:服务器端会话技术 当我们第一次访问的服务器的时候,服务器获取id, 能获取id 要拿着这个id去服务器中查找有无此session 若查找到了:直接拿过来将数据 ...

  2. 会话技术之 Session

    会话技术之 Session 不多废话,先来一个 HelloWorld. Session 有 get 肯定要先有 set . @Override protected void service(HttpS ...

  3. php会话技术之Session用法

    php会话技术之Session用法举例. 本文原始链接:http://www.jbxue.com/article/8940.html1.创建session <?php     //创建sessi ...

  4. [转]【会话技术】Session技术

    创建时间:6.29 & 6.30 一.Session技术 Session技术是将数据存储在服务器端的技术,会为每个客户端都创建一块内存空间  存储客户的数据,但客户端需要每次都携带一个标识ID ...

  5. Web核心之会话技术Cookie&Session

    什么是会话技术? http协议是无状态协议.为了满足在多次请求之间数据进行交互,推出了会话技术. 会话概念:一次会话,指的是从客户端和服务器建立起连接开始,到客户端或服务器断开连接为止.中间可能进行多 ...

  6. java ->会话技术Cookie&Session

    会话技术Cookie&Session 会话技术简介 存储客户端的状态 由一个问题引出今天的内容,例如网站的购物系统,用户将购买的商品信息存储到哪里?因为Http协议是无状态的,也就是说每个客户 ...

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

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

  8. JavaWeb学习笔记五 会话技术Cookie&Session

    什么是会话技术? 例如网站的购物系统,用户将购买的商品信息存储到哪里?因为Http协议是无状态的,也就是说每个客户访问服务器端资源时,服务器并不知道该客户端是谁,所以需要会话技术识别客户端的状态.会话 ...

  9. JavaWeb-10(会话技术之session&amp;JSP)

    JavaWeb-会话技术之session&JSP 会话管理之Session技术 一.Session 在WEB开发中,server能够为每一个用户浏览器创建一个会话对象(session对象),注 ...

  10. JavaEE之会话技术Cookie&Session

    会话技术简介 存储客户端的状态 由一个问题引出今天的内容,例如网站的购物系统,用户将购买的商品信息存储到哪         里?因为Http协议是无状态的,也就是说每个客户访问服务器端资源时,服务器并 ...

随机推荐

  1. 使用SQL SERVER 来自动发送邮件

    可以使用SQL SERVER 来发送自动邮件,主要是使用SQL SERVER 的dbo.sp_send_dbmail 存储过程(在msdb数据库中). 具体步骤如下: Step1: 编写要发送的邮件内 ...

  2. HTTP请求的502、504、499错误

    1.名词解释 502 Bad Gateway:作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应(伪响应). 504 Gateway Time-out:作为网关或者代理工作的服务 ...

  3. maven项目自动创建src/main/resources等四个资源文件夹

    如何使maven项目自动创建这四个文件夹:src/main/resources.src/main/java.src/test/java.src/test/resources 网传甚广的在Config ...

  4. vue 路由参数

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. Google SketchUp Cookbook: (Chapter 3) Intersection Edges: Cutting and Trimming

    软件环境 SketchUp Pro 2018 参考书籍 Google SketchUp Cookbook Trimming an Object 使用 Intersect with Model 裁剪物体 ...

  6. JMeter4.0源码导入Eclipse记录

    参考: https://blog.csdn.net/yue530tomtom/article/details/77870233?locationNum=10&fps=1 1.准备jdk环境 下 ...

  7. xshell使用密钥登陆linux

    一.环境CentOS 7.4xshell 6 二.介绍远程ssh连接服务器 默认是用的密码验证的方式,而且还是root账号,这样的验证方式会有安全隐患,容易被人暴力破解root密码.如果改成用密钥登陆 ...

  8. 基础总结(03)-- css有趣的特性

    1.currentColor:可用于background/border-color/渐变/box-shadow/svg填充色,颜色继承自color. 待补充…

  9. 十进制 -> 十六进制

    x /16 依次取余 ,最先余作十六进制的最低 字节有效位,最后的余数  作最高的字节有效位,其中我们需要注意理解 的是  一个 数据的 最高字节及  内存的 高地址及低地址 更进一步的就算机器存储的 ...

  10. #include 相关问题

    #include <> 和 #include “”的区别是#include <>先从系统默认的搜索路径开始搜索,#include “”是从当前目录开始搜索,如果未搜索到,都会继 ...