session对象的使用
session对象的使用
制作人:全心全意
session在网络中被称为会话。由于HTTP协议是一种无状态协议,也就是当一个客户向服务器发出请求,服务器接收请求,并返回响应后,该连接就结束了,而服务器并不保存相关的信息。为了弥补这一缺点,HTTP协议提供了session。通过session可以在应用程序的Web页面间进行跳转时,保存用户的状态,使整个用户会话一直存在下去,知道关闭浏览器。但是,如果在一个会话中,客户端长时间不向服务器发出请求,session对象就会自动消失。这个时间取决于服务器,例如,Tomcat服务器默认为30分钟。不过这个时间可以通过编写程序进行修改。
创建及获取客户端的会话
setAttribute()方法:将信息保存在session范围内
session.setAttribute(String name, Object obj)
参数说明:
name:用于指定作用域在session范围内的变量名
obj:保存在session范围内的对象
getAttribute()方法:获取保存在session范围内的信息
session.getAttribute(String name)
参数说明:
name:指定保存在session范围内的关键字
说明:getAttribute()方法的返回值是Object类型,如果将获取到的信息赋值给String类型的变量,则需要进行强制类型转换或是调用其toString()方法。
移除session中指定的对象
session.removeAttribute()方法:移除存储在session会话中的对象
session.removeAttribute(String name)
参数说明:
name:指定作用域在session范围内的变量名。一定要保证该变量在session范围内有效,否则将抛出异常。
销毁session
session.invalidate()方法:销毁session
session.invalidate()
说明:session对象被销毁后,将不可以再使用该session对象了。如果在session被销毁后,再调用session对象的任何方法,都将报出Session already invalidated异常。
session会话超时管理
在应用session对象时应该注意session的生命周期。一般来说,session的生命周期在20~30分钟之间。当用户首次访问时将产生一个新的会话,以后服务器就可以记住这个会话状态,当会话生命周期超时时,或者服务器端强制使会话失效时,这个session就不能使用了。在开发程序时应该考虑到用户访问网站时可能发生的各种情况,例如用户登录网站后在session的有效期外进行相应的操作,用户会看到一张错误页面。这样的现象时不允许发生的。为了避免这种情况的发生,在开发系统时应该对session的有效性进行判断。
session.getLastAccessedTime():返回客户端最后一次与会话相关联的请求时间
session.getMaxInactiveInterval():以秒为单位返回一个会话内两个请求最大时间间隔
session.setMaxInactiveInterval():以秒为单位设置session的有效时间
session.getLastAccessedTime();
session.getMaxInactiveInterval();
session.setMaxInactiveInterval(int arg);
参数说明:
arg:seesion的有效期(单位:秒)
session对象的应用实例
index.jsp:提供用户输入用户名的文本框,并提交到session.jsp页面中
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>session对象的使用-index.jsp</title>
</head>
<body>
<form id="form1" name="form1" method="post" action="session.jsp">
<div align="center">
<table width="28%" border="0">
<tr>
<td width="36%">
<div align="center">您的名字是:</div>
</td>
<td width="64%">
<label>
<div align="center">
<input type="text" name="name" />
</div>
</label>
</td>
</tr>
<tr>
<td colspan="2">
<label>
<div align="center">
<input type="submit" name="Submit" value="提交" />
</div>
</label>
</td>
</tr>
</table>
</div>
</form>
</body>
</html>
session.jsp:将用户名保存到session中,并提供用户输入最喜欢去的地方的文本框
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>session对象的使用-session.jsp</title>
</head>
<body>
<%
String name = new String(request.getParameter("name").getBytes("ISO-8859-1"),"utf-8"); //获取用户填写的用户名
session.setAttribute("name", name); //将用户名保存到session对象中
%>
<div align="center">
<form id="form1" name="form1" method="post" action="result.jsp">
<table width="28%" border="0">
<tr>
<td>您的名字是:</td>
<td><%=name %></td>
</tr>
<tr>
<td>您最喜欢去的地方是:</td>
<td><label>
<input type="text" name="address" />
</label></td>
</tr>
<tr>
<td colspan="2"><label>
<div align="center">
<input type="submit" name="Submit" value="提交" />
</div>
</label></td>
</tr>
</table>
</form>
</div>
</body>
</html>
result.jsp:获取session中的用户名对象,再获取session.jsp页面提交过来的最喜欢去的地方,并在页面中显示出来
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>session对象的使用-result.jsp</title>
</head>
<body>
<%
String name = (String)session.getAttribute("name"); //获取保存在session范围内的对象
String solution = new String(request.getParameter("address").getBytes("ISO-8859-1"),"utf-8");
//获取用户输入的最喜欢去的地方
%>
<form id="form1" name="form1" method="post" action="">
<table width="28%" border="0">
<tr>
<td colspan="2"><div align="center"><strong>
显示答案
</strong></div></td>
</tr>
<tr>
<td width="49%"><div align="left">
您的名字是:
</div></td>
<td width="51%"><label><div align="left">
<%=name %>
</div></label></td>
</tr>
<tr>
<td><label><div align="left">
您最喜欢去的地方是:
</div></label></td>
<td><div align="left">
<%=solution %>
</div></td>
</tr>
</table> </form>
</body>
</html>
session对象的使用的更多相关文章
- WebAPI中无法获取Session对象的解决办法
在MVC的WebApi中默认是没有开启Session会话支持的.需要在Global中重写Init方法来指定会话需要支持的类型 public override void Init() { PostAut ...
- 重温Servlet学习笔记--session对象
session的类型是属于HttpSession,HttpSession是由javaWeb提供的,用来会话跟踪的类.session是服务器端对象,保存在服务器端. HttpSession是servle ...
- 什么是Cookie对象,Session对象,Application对象。
Cookie是: 一个由网页服务器放在您硬盘上的非常小的文本文件. 它本质上就像您的身份证明一样,并且不能像代码那样被执行或被用来散布病毒.它只能被您使用并且只能由提供的服务器读取. 使用Cookie ...
- Application对象、Session对象、Cookie对象、Server对象初步认识
Application对象:记录应用程序参数的对象 用于共享应用程序级信息,即多个用户共享一个Application对象.在第一个用户请求ASP.NET文件时,将启动应用程序并创建Applicatio ...
- Session对象
Session对象用于存储在多个页面调用之间特定用户的信息.Session对象只针对单一网站使用者,不同的客户端无法互相访问.Session对象中止于联机机器离线时,也就是当网站使用者关掉浏览器或超过 ...
- [原创]java WEB学习笔记94:Hibernate学习之路---session 的管理,Session 对象的生命周期与本地线程绑定
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- [原创]java WEB学习笔记47:Servlet 监听器简介, ServletContext(Application 对象), HttpSession (Session 对象), HttpServletRequest (request 对象) 监听器,利用listener理解 三个对象的生命周期
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- struts2获得request和session对象
在struts1中,获得到系统的request或者session对象非常方便,都是按照形参传递的,但是在struts2中,request和session都被隐藏了 struts2提供两种方式访问ses ...
- 【转】asp.net中利用session对象传递、共享数据[session用法]
来自:http://blog.unvs.cn/archives/session-transfer-method.html 下面介绍Asp.net中利用session对象传递.共享数据用法: 1.传递值 ...
- 如何避免JSP页面自动生成session对象?为什么要这么做?
JSP // 在默认情况下,在对一个JSP页面发出请求时,如果session还没有建立,JSP页面会自动为请求建立一个session对象,但是session是比较消耗资源的,如果没必要保持和使用ses ...
随机推荐
- react-native 项目更名步骤
刚开始开发项目的时候,更没有想好一个项目名称,如何才能更名一个RN APP名称呢,可按照如下方式操作即可. 使用说明 更改package.json { "name": " ...
- javaSE基础(二)
文件:文件是信息在计算机上的保存形式. 可控式异常:一种必须被处理或必须在可能产生异常的方法中给出声明的异常. 可控式异常的三种处理方式: 1)try...catch捕获 2)throws语句往上抛 ...
- Unity3D游戏,TCP,WEBCOSKT,HTTP通信架构 weaving-socket
weaving-socket 详细介绍 项目简介 2017-8-8:新发布功能 增加U3D游戏客户的通讯项目支持,并提供示例内容. 2017-5-5: 新发布 weaving-socket 架构的.n ...
- 转 source insight 复制后光标在前面
source insight 里编辑的时候,每次粘贴后,光标停留在粘贴内容的前面. 我想把它设定为 粘贴后,光标移动倒粘贴内容的后面. 怎么做? 这是个设置问题,按照下面的步骤设定就可以了. Opti ...
- 将数据从数据仓库Hive导入到MySQL
1.启动Hadoop,hive,mysql 2.在mysql中建表(需要导入数据的) mysql> CREATE TABLE `dbtaobao`.`user_log` (`user_id` v ...
- query或者JavaScript实现在textarea光标处插入文本
1.Jquery函数实现: $(function() { /* 在textarea处插入文本--Start */ (function($) { $.fn.extend({ insertContent ...
- CodeForces 446A DZY Loves Sequences (DP+暴力)
题意:给定一个序列,让你找出一个最长的序列,使得最多改其中的一个数,使其变成严格上升序列. 析:f[i] 表示以 i 结尾的最长上升长度,g[i] 表示以 i 为开始的最长上升长度,这两个很容易就求得 ...
- 一个简陋的个人小项目,也是个人第一个真正意义上的独立项目——Graph
由来 我最早接触到图这个概念是在大二的离散数学当中图论相关的内容,当时是以著名的哥尼斯堡七桥问题引出图论的概念,现在依然记忆犹新(不过只是记得这个名字,具体的解题思路我重新温习了一下才想起来),当时也 ...
- Get 和 Post 使用篇(1)
1.Post 请求发送方式 实例: const string sResponseEncoding = "gb2312"; //测试文本信息 string postText = &q ...
- java大数轻松过
import java.util.Scanner; import java.math.BigInteger; public class Main { public static void main(S ...