HTTPSession对象


HTTPSession对象的特点;


1.HTTPSession对象是保存在服务器端的;
2.HTTPSession允许存储任何数据类型;
3.HTTPSession存储数据大小无限制;
4.HTTPSession对象存储数据结构为key:value


HTTPSession对象的使用


创建HTTPSession对象;
在HttpSession对象的创建是通过request.getSession();方法创建的,这个方法会判断请求中是否有sessionID,如果有则返回此ID对应的HTTPSession对象,如果没有则会创建一个新的HTTPSession对象并为此对象创建一个sessionID,在响应中通过cookie写回到客户端浏览器中;
Request.getSession()方法还有一个重载方法,为request.getSession(true|false);如果参数为true则作用于无参方法相同,如果参数为false则会根据sessionID返回对应的HTTPSession对象,如果没有sessionID则不会创建新的HTTPSession对象;

代码示例:
(包括向session对象中添加数据,配置session对象销毁时间,以及销毁方法)

package com.bjsxt.servlet;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLEncoder;/*** HttpSession对象创建过程* */
public class CreateHttpSessionServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doPost(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {/*(前提是只有ie和谷歌浏览器)获取请求头,利用请求头判断是什么客户端浏览器如果含有Chrome则是谷歌浏览器,如果没有则是ie*/String header = req.getHeader("User-Agent");HttpSession session = req.getSession();//HttpSession session = req.getSession(false);if(header.indexOf("Chrome")!=-1){session.setAttribute("key","谷歌");
//            销毁当前的HTTPSession对象session.invalidate();}else{session.setAttribute("key","ie");}
//        session.setAttribute("key","value");String id = session.getId();System.out.println(session);System.out.println("sessionId:"+id);PrintWriter out = resp.getWriter();out.println("<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0 Transitional//EN'>");out.println("<HTML>");out.println("<HEAD><TITLE> ITBZ </TITLE></HEAD>");out.println("<BODY>");out.println("Create HttpSession"+id);out.println("</BODY>");out.println("</HTML>");out.flush();out.close();}
}

Xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0">
<servlet><servlet-name>createHttpSessionServlet</servlet-name><servlet-class>com.bjsxt.servlet.CreateHttpSessionServlet</servlet-class></servlet><servlet-mapping><servlet-name>createHttpSessionServlet</servlet-name><url-pattern>/createSession.do</url-pattern></servlet-mapping>
配置session对象销毁的时间为1分钟;
<session-config><session-timeout>1</session-timeout>
</session-config>
</web-app>

注意:服务端会根据不同的客户端浏览器创建不同的HTTPSession对象;


获取HTTPSession中的数据;


1.通过key 获取HTTPSession中的数据,返回object;
Session.getAttribute(“key”);
2.获取sessionID,返回String
Session.getId();

package com.bjsxt.servlet;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLDecoder;/*** 获取HTTPSession中的数据* */
public class GetHttpSessionServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doPost(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {HttpSession session = req.getSession();String value  = (String)session.getAttribute("key");
//  由于中文需要进行编码resp.setContentType("text/html;charset=utf-8");PrintWriter out = resp.getWriter();out.println("<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0 Transitional//EN'>");out.println("<HTML>");out.println("<HEAD><TITLE> ITBZ </TITLE></HEAD>");out.println("<BODY>");out.println("Value:"+ value);out.println("</BODY>");out.println("</HTML>");out.flush();out.close();}
}

Xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0">
<servlet><servlet-name>getHttpSessionServlet</servlet-name><servlet-class>com.bjsxt.servlet.GetHttpSessionServlet</servlet-class></servlet><servlet-mapping><servlet-name>getHttpSessionServlet</servlet-name><url-pattern>/getSession.do</url-pattern></servlet-mapping>
</web-app>

HTTPSession对象的销毁


1.在xml中设置HTTPSession对象的销毁时间(时间以分钟计算);

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

2.利用HTTPSession对象的invalidate()方法,销毁;
详情请看创建HTTPSession对象的代码部分;


HTTPSession对象的生命周期


HTTPSession对象的生命周期并不确定,它的创建取决于什么时候第一次调用getSession()或getSession(true)方法,生命周期结束取决于xml文件中配置的销毁时间或是调用invalidate()方法,如果没有配置销毁时间,或是没有调用invalidate()方法,默认销毁时间为30分钟;


使用HTTPSession对象存储数据的建议


HTTPSession对象是保存在浏览器中的,安全性较高;可以在HTTPSession对象中存储数据;
但由于HTTPSession对象的生命周期不固定,所以不建议存储业务数据;一般情况下可以存储一些客户登录信息;

HTTPSession对象知识总结相关推荐

  1. webview session不失效_不懂HttpSession对象看这里--乐字节

    HttpSession对象 HttpSession对象是 javax.servlet.http.HttpSession 的实例,该接口并不像 HttpServletRequest 或 HttpServ ...

  2. JavaScript原型对象---知识总结

    目录 一.什么是原型(原型的基本概念) 二.原型的作用 三.面向对象的程序设计 四.继承 (一)ES6中类的继承 (二)ES5中的继承(基于原型的继承) ​五.原型链 下面有个有趣的例子 十八.组件- ...

  3. Cookie对象知识总结

    Cookie对象 Cookie特点 Cookie 使用字符串存储数据 Cookie 使用 Key 与 Value 结构存储数据 单个 Cookie 存储数据大小限制在 4097 个字节 Coo ...

  4. java创建对象new后面为啥可以传入参数_来复习一下Java的对象知识

    Java中的对象 现在让我们深入了解什么是对象.看看周围真实的世界,会发现身边有很多对象,车,狗,人等等.所有这些对象都有自己的状态和行为. 拿一条狗来举例,它的状态有:名字.品种.颜色,行为有:叫. ...

  5. Java对象知识梳理

    面向对象的概述 "面向对象"(英语:Object Oriented,简称OO)是一种以事物为中心的编程思想.面向对象程序设计(英语:Object-oriented programm ...

  6. JavaWeb——内置对象session与httpSession对象是同一个东西么?

    JavaWeb--内置对象session与httpSession对象是同一个东西么? 首先,内置对象session与httpSession对象不是同一个东西 session和HttpSession是不 ...

  7. 内置对象session与httpSession对象是同一个东西么?

    ANSWER 不是,session对象指的是客户端与服务器端的一次会话,从客户端连到服务器端的一个Web应用程序开始,知道客户端与服务器端断开为止.而HttpSession是Servlet中可以使用的 ...

  8. 超详细的Java面试题总结(四 )之JavaWeb基础知识总结

    系列文章请查看: 超详细的Java面试题总结(一)之Java基础知识篇 超详细的Java面试题总结(二)之Java基础知识篇 超详细的Java面试题总结(三)之Java集合篇常见问题 超详细的Java ...

  9. java全面的知识体系结构总结

    Java知识体系 目的:为了更好的认识java体系 1.java基础知识 1.1 基础知识 1.1.1 配置环境变量 新建java_home变量(安装目录),值为:C:\Program Files\J ...

最新文章

  1. CCF-CSP 201703-2 试题名称: 学生排队(满分代码)
  2. 鼓浪屿天气预报软件测试,厦门鼓浪屿天气预报15天
  3. 【ArcGIS风暴】ArcGIS 10.2栅格计算器实用公式大全(经典珍藏版)
  4. Linux下Shell文件内容替换(sed)(转)
  5. 如何列出引用SQL Server中给定表的所有外键?
  6. 《Windows游戏编程大师技巧》中关于DirectDraw和创建DirectDraw知识笔记
  7. hdfs mv命令_Hdfs常用命令
  8. java 极光推送_极光推送java实现
  9. 互联网晚报 | 10月21日 星期四 | 微信支付上线品牌视频号;快手短剧日活用户达2.3亿;《长津湖》票房升至中国影史第三...
  10. Python之生成器练习
  11. csu-2018年11月月赛Round2-div1题解
  12. java编写car类_java编写一个汽车类,有属性:品牌、型号、排量、速度,有方法:启动、加速、转弯、刹车、息火...
  13. SCons教程(7) 文件操作
  14. 【CV】第 16 章:结合计算机视觉和强化学习
  15. 元胞自动机——应用于森林火灾和传染病场景
  16. Python 文字小游戏
  17. 地块电力监控系统的设计和应用
  18. 云服务器 ERP系统搭建,云服务器 ERP系统搭建
  19. 爆肝5万字❤️Open3D 点云数据处理基础(Python版)
  20. 手把手教你如何远程连接云服务器(图文教程)?

热门文章

  1. 拓展编辑器(五)_监听事件
  2. C++ 下面的AIDL
  3. PhpStrom xdeubg jet ide support
  4. LeetCode Construct the Rectangle
  5. JavaScript学习总结(二)数组和对象部分
  6. 中文分词词性对照表(转)
  7. 无线研究 破解分享
  8. [转载]细说ASP.NET Windows身份认证
  9. SPI FLASH 分区情况
  10. Win10安装NodeJS