java+session+存在哪_JAVA中Session
会话状态的维持是开发Web应用所必须面对的问题,有多种方法可以来解决这个问题,如使用Cookies,hidden类型的表单域,或直接把状态信息加到URL中等,还有Servlet本身提供了一个HttpSession接口来支持会话状态的维持,在这里我们主要介绍基于这个接口的会话状态的管理。
Session的发明是为了填补HTTP协议的局限。请注意HTTP协议是如何工作的--用户发出请求,服务器作出响应,这种用户端和服务器端的联系就是离散的,非连续的。HTTP协议不能提供允许服务器跟踪用户请求的功能。在服务器端完成响应用户的请求之后,服务器不能继续与该浏览器继续保持连接。从服务器这端来看,每一个请求都是独立的,因此HTTP协议被认为是无状态协议,当用户在多个主页间切换时,服务器无法知道他的身份。 Session的出现就是为了弥补这个局限。利用Session,您就可以当一个用户在多个主页间切换的时候也能保存他的信息。这样很多以前根本无法去做的事情就变得简单多了。
在访问者从到达某个特定的主页到离开为止的那段时间,每个访问者都会单独获得一个Session。
Java Servlet定义了一个HttpSession接口,实现的Session的功能,在Servlet中使用Session的过程如下:
(1) 使用HttpServletRequest的getSession方法得到当前存在的session,如果当前没有定义session,则创建一个新的session,还可以使用方法getSession(true)
(2) 写session变量。可以使用方法HttpSession.setAttribute(name,value)来向Session中存储一个信息。也可以使用HttpSession.putValue(name,value),但这个方法已经过时了。
(3)读Session变量。可以使用方法HttpSession.getAttribute(name)来读取Session中的一个变量值,如果name是一个没有定义的变量,那么返回的是null。需要注意的是,从getAttribute读出的变量类型是Object,必须使用强制类型转换,比如:
String uid = (String) session.getAttribute("uid");
也可以使用HttpSession.getValue(name),但是这个方法也已经过时了。
(4) 关闭session,当时用完session后,可以使用session.invalidate()方法关闭session。但是这并不是严格要求的。因为,Servlet引擎在一段时间之后,自动关闭seesion。
下面举一个简单的例子说明session的使用
//97色色 SessionExample.java
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
//导入必要的软件包
public class SessionExample extends HttpServlet
{
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException //实现doGet方法
{
response.setContentType("text/html"); //设置HTTP头
PrintWriter out = response.getWriter(); //得到输出97gan
HttpSession session = request.getSession(true);
//得到session对象
//打印HTML标记
out.println("");
out.println("
");
out.println("");
out.println("");
out.println("
");
Date created = new Date(session.getCreationTime());
//得到session对象创建的时间
Date accessed = new Date(session.getLastAccessedTime());
//得到最后访问该session对象的时间
out.println("ID " + session.getId()+"
");
//得到该session的id,并打印
out.println("Created: " + created+"
");
//打印session创建时间
out.println("Last Accessed: " + accessed+"
");
//打印最后访问时间
session.setAttribute("UID","12345678");
//在session中添加变量UID=12345678
session.setAttribute("Name","Tom");
//在session中添加变量Name=Tom
Enumeration e = session.getAttributeNames();
//得到session中变量名的枚举对象
while (e.hasMoreElements()) { //遍历每一个变量
String name = (String)e.nextElement(); //首先得到名字
String value = session.getAttribute(name).toString();
//由名字从97gan中得到值
out.println(name + " = " + value+"
"); //打印
}
out.println(""); //打印HTML标记
out.println("");
}
}
}
java+session+存在哪_JAVA中Session相关推荐
- java中session的作用_java中session的工作原理是什么?和Cookies有何区别?
现在大家学习的东西和以前大不相同了,越来越多的人倾向于去学习高新技术以获得更好的发展.java是很多人的第一选择.java中的知识还是很多的,今天就来为大家介绍一下. 首先来说一下java中sessi ...
- java session 生命周期_Java中httpsession生命周期
Java中httpsession生命周期 HttpSession会话范围是某个用户从首次访问服务器开始,到该用户关闭浏览器结束,那么从用户访问到退出浏览器它的生命周期过程如下: 1. 当浏览器A向服务 ...
- java中cookie怎么用_java 中session和cookie的使用
这里讲session和cookie放在一起写, 不是说他们之间有什么关系,仅最近一个项目中同时用到.偷懒,放一起整理下 Session: Session的发明是为了填补HTTP协议的局限.请注意HTT ...
- java中session对象登录_JavaWeb中Session对象的学习笔记
一.Session简单介绍 在WEB开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下).因此,在需要保存用户数据时,服务 ...
- PHP开启session的函数,ThinkPHP中session函数详解
在PHP中使用$_SESSION来操作session,而ThinkPHP提供了session的封装函数session().单单这一个函数就实现了session的增删改查的功能.下面我们分别来看其应用与 ...
- php session位置,关于PHP中Session文件过多的问题及session文件保存位置
PHP的默认机制:每一次php请求,会有1/100的概率(默认值)触发"session回收".如果"session回收"发生,那就会检查/tmp/sess_*的 ...
- PHP中session什么意思_PHP中Session的概念
PHP中Session的概念 更新时间:2006年10月09日 00:00:00 作者: 什么是Session呢?Session直接翻译成中文比较困难,一般都译成时域.在计算机专业术语中,Sess ...
- php 类初始化 session判断,thinkphp3.x中session方法的用法分析
本文实例讲述了thinkphp3.x中session方法的用法.分享给大家供大家参考,具体如下: 一.Session方法用于Session 设置.获取.删除和管理操作. Session 用于Sessi ...
- java可以多重继承吗_Java中的多重继承与组合vs继承
java可以多重继承吗 有时我写了几篇有关Java继承,接口和组成的文章. 在这篇文章中,我们将研究多重继承,然后了解组成优于继承的好处. Java中的多重继承 多重继承是创建具有多个超类的单个类的能 ...
最新文章
- Linux DNS (2)搭建DNS服务器
- Android系统匿名共享内存Ashmem(Anonymous Shared Memory)简要介绍和学习计划
- 米家电磁炉显示e10_米家电磁炉e10故障怎么回事
- 6年级学Python,高中学AI?这6本书,助你找回输掉的起跑线
- dismiss android,[转]Android对话框中dismiss和cancel、hide的区别
- linux发展前景2018,2018 年 Linux 的 8 个发展预测
- csrss.exe系统进程介绍
- Java 使用poi导入excel,结合xml文件进行数据验证的例子(增加了jar包)
- 大数据_Flink_Java版_数据处理_流处理API_Transform(3)_Reduce聚合算子---Flink工作笔记0031
- Android开发笔记(四十三)点击事件
- 解决visual studio换行(回车键)不能代码补全问题
- linux下复制catalog信息指令,基於Linux下catalog方式的 Oracle 備份策略(RMAN)
- 后疫情时代,人工智能发展的四大趋势
- android将手机能当蓝牙耳机使用吗,如何将Android手机作为蓝牙耳机?
- STM32自学笔记-8-红外遥控
- MATLAB创建三对角线矩阵-211103
- Beyond Compare4破解方法
- 用FPGA产生正弦信号
- 水管工游戏(啊哈算法)
- SqlServer的基本使用