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. 04Vue.js路由系统

    Vue.js路由系统: https://pizzali.github.io/2018/10/28/Vue.js%E8%B7%AF%E7%94%B1%E7%B3%BB%E7%BB%9F/

  2. 11.11CTF答案

    签到题                             flag{0ca175b9c0f726a831d895e269332461 } 下载WIN HEX,用WIN HEX打开“海贼王图片”, ...

  3. ASP.NET知识点汇总

    一 ,html属性20181113常用的居中方法1 text-align2 float3 margin (margin-left matgin-right margin-bottom margin-t ...

  4. 更换gcc工具链

    title: 更换gcc工具链 date: 2019/1/16 19:27:51 toc: true --- 更换gcc工具链 下载后解压到一个临时目录先看看文件结构 mkdir tmp tar xj ...

  5. C++回顾day03---<输入输出流>

    一:C++输入输出包含下面3个方面 (一)标准I/O 对系统指定的标准设备的输入和输出.即从键盘输入数据,输出到显示器屏幕.这种输入输出称为标准的输入输出. (二)文件I/O 以外存磁盘文件为对象进行 ...

  6. SEO学习知识

    监控流量的工具 百度统计 CNZZ  51LA 谷歌分析工具 如何从平台借流量? 竞价(付费).SEO 关键词定位: 定位人:负责人 将公司的业务全部列出来 选词: 根据定位的关键词选择出我们需要优化 ...

  7. LFYZ-OJ ID: 1008 求A/B高精度值

    思路 小数点前的部分可以通过m/n直接计算得出 小数点后的20位可通过循环进行快速计算,计算方法如下: m%=n m*=10 小数点后第i位为m/n,回到第1步 第3步后,如果m%n为0,说明已经除净 ...

  8. JAVA发红包案例

    模拟拼手气红包* 对于指定总金额以及红包个数,可以生成不同金额的红包,*,每个红包金额随机生成. * 分析这个题目:* 1.首先需要一个分发红包的方法.输入的参数是 总金额 以及 红包个数.* 按照这 ...

  9. mysql MHA架构搭建过程

    [环境介绍] 系统环境:Red Hat Enterprise Linux 7 + 5.7.18 + MHA version 0.57 系统 IP 主机名 备注 版本 xx系统 192.168.142. ...

  10. luogu 4042 有后效性的dp

    存在有后效性的dp,但转移方程 f[i] = min( f[i], s[i] + sigma f[j] ( j 是后效点) ) 每次建当前点和 转移点的边 e1, 某点和其会影响的点 e2 spfa ...