HTTPSession对象知识总结
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对象知识总结相关推荐
- webview session不失效_不懂HttpSession对象看这里--乐字节
HttpSession对象 HttpSession对象是 javax.servlet.http.HttpSession 的实例,该接口并不像 HttpServletRequest 或 HttpServ ...
- JavaScript原型对象---知识总结
目录 一.什么是原型(原型的基本概念) 二.原型的作用 三.面向对象的程序设计 四.继承 (一)ES6中类的继承 (二)ES5中的继承(基于原型的继承) 五.原型链 下面有个有趣的例子 十八.组件- ...
- Cookie对象知识总结
Cookie对象 Cookie特点 Cookie 使用字符串存储数据 Cookie 使用 Key 与 Value 结构存储数据 单个 Cookie 存储数据大小限制在 4097 个字节 Coo ...
- java创建对象new后面为啥可以传入参数_来复习一下Java的对象知识
Java中的对象 现在让我们深入了解什么是对象.看看周围真实的世界,会发现身边有很多对象,车,狗,人等等.所有这些对象都有自己的状态和行为. 拿一条狗来举例,它的状态有:名字.品种.颜色,行为有:叫. ...
- Java对象知识梳理
面向对象的概述 "面向对象"(英语:Object Oriented,简称OO)是一种以事物为中心的编程思想.面向对象程序设计(英语:Object-oriented programm ...
- JavaWeb——内置对象session与httpSession对象是同一个东西么?
JavaWeb--内置对象session与httpSession对象是同一个东西么? 首先,内置对象session与httpSession对象不是同一个东西 session和HttpSession是不 ...
- 内置对象session与httpSession对象是同一个东西么?
ANSWER 不是,session对象指的是客户端与服务器端的一次会话,从客户端连到服务器端的一个Web应用程序开始,知道客户端与服务器端断开为止.而HttpSession是Servlet中可以使用的 ...
- 超详细的Java面试题总结(四 )之JavaWeb基础知识总结
系列文章请查看: 超详细的Java面试题总结(一)之Java基础知识篇 超详细的Java面试题总结(二)之Java基础知识篇 超详细的Java面试题总结(三)之Java集合篇常见问题 超详细的Java ...
- java全面的知识体系结构总结
Java知识体系 目的:为了更好的认识java体系 1.java基础知识 1.1 基础知识 1.1.1 配置环境变量 新建java_home变量(安装目录),值为:C:\Program Files\J ...
最新文章
- CCF-CSP 201703-2 试题名称:	学生排队(满分代码)
- 鼓浪屿天气预报软件测试,厦门鼓浪屿天气预报15天
- 【ArcGIS风暴】ArcGIS 10.2栅格计算器实用公式大全(经典珍藏版)
- Linux下Shell文件内容替换(sed)(转)
- 如何列出引用SQL Server中给定表的所有外键?
- 《Windows游戏编程大师技巧》中关于DirectDraw和创建DirectDraw知识笔记
- hdfs mv命令_Hdfs常用命令
- java 极光推送_极光推送java实现
- 互联网晚报 | 10月21日 星期四 | 微信支付上线品牌视频号;快手短剧日活用户达2.3亿;《长津湖》票房升至中国影史第三...
- Python之生成器练习
- csu-2018年11月月赛Round2-div1题解
- java编写car类_java编写一个汽车类,有属性:品牌、型号、排量、速度,有方法:启动、加速、转弯、刹车、息火...
- SCons教程(7) 文件操作
- 【CV】第 16 章:结合计算机视觉和强化学习
- 元胞自动机——应用于森林火灾和传染病场景
- Python 文字小游戏
- 地块电力监控系统的设计和应用
- 云服务器 ERP系统搭建,云服务器 ERP系统搭建
- 爆肝5万字❤️Open3D 点云数据处理基础(Python版)
- 手把手教你如何远程连接云服务器(图文教程)?