Session 学习:
问题:
  Request 对象解决了一次请求内的不同 Servlet 的数据共享问 题,那么一个用户的不同请求的处理需要使用相同的数据怎么办呢?
解决:
  使用 session 技术。
原理:
  用户使用浏览器第一次向服务器发送请求,服务器在接受到请求后,调用对应的 Servlet 进行处理。在处理过程中会给用户创建 一个 session 对象,用来存储用户请求处理相关的公共数据,并将 此 session 对象的 JSESSIONID 以 Cookie 的形式存储在浏览器中 (临时存储,浏览器关闭即失效)。用户在发起第二次请求及后续请 求时,请求信息中会附带 JSESSIONID,服务器在接收到请求后, 调用对应的 Servlet 进行请求处理,同时根据 JSESSIONID 返回其 对应的 session 对象。

特点:
  Session 技术是依赖 Cookie 技术的服务器端的数据存储技术。
  由服务器进行创建
  每个用户独立拥有一个 session 默认存储时间为 30 分钟
作用:
  解决了一个用户的不同请求的数据共享问题。
使用:
  创建 Session 对象 存储数据到 session 对象 获取 session 对象 获取数据从 session 对象 如果获取 session 中不存在的数据返回 null。
注意:
  只要不关闭浏览器,并且 session 不失效的情况下,同一个用 户的任意请求在项目的任意Servlet中获取到的都是同一个session对象。

作用域:
  一次会话

/**
* session技术学习:
* 问题:
* 一个用户的不同请求处理的数据共享怎么办?
* 解决:
* 使用session技术
* 原理:
* 用户第一次访问服务器,服务器会创建一个session对象给此用户,并将
* 该session对象的JSESSIONID使用Cookie技术存储到浏览器中,保证
* 用户的其他请求能够获取到同一个session对象,也保证了不同请求能够获取到
* 共享的数据。
* 特点:
* 存储在服务器端
* 服务器进行创建
* 依赖Cookie技术
* 一次会话
* 默认存储时间是30分钟
* 作用:
* 解决了一个用户不同请求处理的数据共享问题
* 使用:
* 创建session对象/获取session对象
HttpSession hs=req.getSession();
如果请求中拥有session的标识符也就是JSESSIONID,则返回其对应的session队形
如果请求中没有session的标识符也就是JSESSIONID,则创建新的session对象,并将其JSESSIONID作为从cookie数据存储到浏览器内存中
* 如果session对象是失效了,也会重新创建一个session对象,并将其JSESSIONID存储在浏览器内存中。
* 设置session存储时间
* hs.setMaxInactiveInterval(int seconds);
* 注意:
* 在指定的时间内session对象没有被使用则销毁,如果使用了则重新计时。
* 设置session强制失效
* hs.invalidate();
* 存储和获取数据
* 存储:hs.setAttribute(String name,Object value);
* 获取:hs.getAttribute(String name) 返回的数据类型为Object
* 注意:
* 存储的动作和取出的动作发生在不同的请求中,但是存储要先于取出执行。
* 使用时机:
* 一般用户在登陆web项目时会将用户的个人信息存储到Sesion中,供该用户的其他请求使用。
* 总结:
* session解决了一个用户的不同请求的数据共享问题,只要在JSESSIONID不失效和session对象不失效的情况下。
* 用户的任意请求在处理时都能获取到同一个session对象。
* 作用域:
* 一次会话
* 在JSESSIONID和SESSION对象不失效的情况下为整个项目内。
* session失效处理:
* 将用户请求中的JSESSIONID和后台获取到的SESSION对象的JSESSIONID进行比对,如果一致
* 则session没有失效,如果不一致则证明session失效了。重定向到登录页面,让用户重新登录。
* 注意:
* JSESSIONID存储在了Cookie的临时存储空间中,浏览器关闭即失效。
*
* @author MyPC
*
*/
public class SessionServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
//设置请求编码格式
req.setCharacterEncoding("utf-8");
//设置响应编码格式
resp.setContentType("text/html;charset=utf-8");
//获取请求信息
String name="张三";
//处理请求信息
//创建session对象
HttpSession hs=req.getSession();
//设置session的存储时间
//hs.setMaxInactiveInterval(5);
System.out.println(hs.getId());
//设置session强制失效
//hs.invalidate();
//存储数据
hs.setAttribute("name",name);
//响应处理结果
//直接响应
resp.getWriter().write("session学习");
//请求转发
//重定向
}
}
public class SessionServlet2 extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
HttpSession hs=req.getSession();
System.out.println("SessionServlet2.service()"+hs.getId());
System.out.println("SessionServlet2.service()"+hs.getAttribute("name")); }
}

Servlet(七):session的更多相关文章

  1. servlet的session为null?

    servlet的session(会话)显示为null,一般是web.xml中配置不对或者在浏览器输入的url不正确造成的. web.xml配置如下: <servlet> <servl ...

  2. Web开发: servlet的session为null?

    servlet的session(会话)显示为null,一般是web.xml中配置不对或者在浏览器输入的url不正确造成的. web.xml配置如下: <servlet> <servl ...

  3. 2016-1-30 Servlet中Session管理(Sesssion追踪)

    Session管理(Sesssion追踪)是Web应用程序开发中非常重要的一个主题.这是因为HTTP是无状态的,在默认情况下,Web服务器不知道一个HTTP请求是来自初次用户,还是来自之前已经访问过的 ...

  4. Servlet/JSP-07 Session应用

    Session应用 一. 避免表单重复提交 1. 表单重复提交的情况 ①在表单提交到一个 Servlet,而 Servlet 又通过请求转发的方式响应了一个 JSP 或者 HTML 页面,此时浏览器地 ...

  5. Servlet/JSP-06 Session

    一. 概述 Session 指客户端(浏览器)与服务器端之间保持状态的解决方案,有时候也用来指这种解决方案的存储结构. 当服务器端程序要为客户端的请求创建一个 Session 时,会首先检查这个请求里 ...

  6. servlet之session添加和移除的两种方式

    Java Session 介绍 一.添加.获取session 1.项目结构 2.jar包 3.web.xml文件 <?xml version="1.0" encoding=& ...

  7. Servlet 利用Session实现不重复登录

    import java.io.IOException;import java.io.PrintWriter;import java.util.ArrayList;import java.util.It ...

  8. Servlet实现Session

    (1)首先看一下项目的结构 是在tomcat--webaps下的myWebSites项目 在myWebSites下有仅仅有WEB-INF目录 在WEB-INF目录中有  一下目录(在classes目录 ...

  9. 玩转web之servlet(六)---session介绍及简单使用(登录验证中保存信息)

    在浏览器与服务器进行交互时,往往需要把涉及到的一些数据保存下来,这时就需要使用cookie或session进行状态管理. 这篇文章先来说说session怎么用,首先在servlet中创建一个sessi ...

  10. Servlet 笔记-Session 跟踪

    HTTP 是一种"无状态"协议,这意味着每次客户端检索网页时,客户端打开一个单独的连接到 Web 服务器,服务器会自动不保留之前客户端请求的任何记录. 但是仍然有以下三种方式来维持 ...

随机推荐

  1. mongoDB 集合(表)操作

    mongoDB 集合(表)操作 集合命名规则 使用 utf8 字符(通常不会起中文名字) 不能含有 "\0" 字符 不要以 system. 开头(否咋会覆盖系统集合开头) 不要和关 ...

  2. HTML编辑器KindEditor

    KindEditor 是一套开源的在线HTML编辑器,主要用于让用户在网站上获得所见即所得编辑效果,开发人员可以用 KindEditor 把传统的多行文本输入框(textarea)替换为可视化的富文本 ...

  3. MySQL防止库存超卖方法总结

    订单超卖问题是涉及到库存项目的重中之重,这里我总结一下常用的方法 1.简单处理[update & select 合并](乐观锁) beginTranse(开启事务)$num = 1; try{ ...

  4. java入门--学习地址

    发现java很多地方都在用,纠结很久该学python还是java. 目前先已python为主,java可以有初步了解能看懂代码就行. --------------------------------- ...

  5. CMDB服务器管理系统【s5day92】:服务器管理回顾

    一.服务器管理回顾 1.requests 发送: requests.post(url='',data=,json=) requests.get() Django接受: request.POST, co ...

  6. 金融量化分析【day112】:量化平台的使用-初始化函数

    一.set_benchmark - 设置基准 1.实现代码 # 导入函数库 import jqdata #初始化函数,设定基准等等 def initialize(context): set_bench ...

  7. 横向滚动布局 white-space:nowrap

    float + 两层DOM实现 html <div class="container"> <div class="div1 clearfix" ...

  8. [再寄小读者之数学篇](2014-06-22 函数恒为零的一个充分条件 [中国科学技术大学2011年高等数学B考研试题])

    设 $f(x)$ 在 $\bbR$ 上连续, 又 $$\bex \phi(x)=f(x)\int_0^x f(t)\rd t \eex$$ 单调递减. 证明: $f\equiv 0$. 证明: 设 $ ...

  9. 网络学习day04_VLSM、子网划分

    IP子网划分 首先,在进行子网划分的学习之前,我们先来回顾一下IP地址的相关知识,同时了解一下公有和私有IP地址: 在Internet上有千百万台主机,为了区分这些主机,人们给每台主机都分配了一个专门 ...

  10. 51nod 1035 最长的循环节

    正整数k的倒数1/k,写为10进制的小数如果为无限循环小数,则存在一个循环节,求<=n的数中,倒数循环节长度最长的那个数,假如存在多个最优的答案,输出所有答案中最大的那个数. 1/6= 0.1( ...