`

jsp之session对象

阅读更多

1,什么是session?

实际开发中session对象最主要的用处就是完成用户的登录和注销等常见功能;每一个session都代表不同的用户;

session对象是javax.servlet.http.HttpSession接口的实例化对象,所以session只能在Http协议中使用;它的常用方法如下:

NO  方法 类型 描述
1 public String getId() 普通 取得session id
2 public long getCreationTime() 普通 取得session的创建时间
3 public long getLastAccessedTime() 普通 取得session的最后一次操作时间
4 public boolean isNew() 普通 判断是否是新的session(新用户)
5 public void invalidate() 普通 让session失效
6 public Enumeration getAttributeNames() 普通 得到全部属性的名称

在HttpSession接口中最重要的部分还是属性操作,主要是可以完成用户登录的合法性验证;

2,取得session Id

当一个用户连接到服务器后,服务器会自动为此session分配一个不会重复的session Id,服务器依靠这些不同的session Id来区分每一个不同的用户,可以使用HttpSession接口中的getId()方法取得这些编号!

	<%
		String id = session.getId();
	 %>
	 Session ID:<%=id %><br />
	 session ID Length:<%= id.length() %><br />

 输出结果是:

Session ID:6111EC4EBBDDC1DFABD9BBB81EBD20CB
session ID Length:32

   这里的sessionId和cookie的JSESSIONID用处是一样的,为了区分,在使用session操作时实际上都使用了Cookie的处理机制,即在客户端的Cookie中保存每一个session Id,这样用户在每次发出请求时都会将此Session id发送到服务器端,服务器依靠此Session id区分每一个不同的客户端;

   在使用session时,要注意:对于每一个已连接到服务器上的用户,如果重新启动服务器,则这些用户再次发出请求实际上表示的都是一个新连接的用户,服务器会为每个用户重新分配一个新的session Id。

3,使用session

session是否可以在服务器重启后继续使用?在应用中,如果服务器重新启动,则已经分配的session Id就会消失,那么如何才能让这些session继续保存,等待服务器重新启动后继续使用呢?可以通过序列化的方式保存session继续使用,在tomcat服务器里可以通过配置server.xml文件,将每一个用户的session在服务器关闭时序列化到存储介质中(数据库也可,文件也可)这样即使服务器重新启动,也可以通过反序列化的方式,从指定的存储介质上反序裂化session;

配置server.xml:

<Context path="/keith" docBase="/home/keith">
   <Manager className="org.apache.catalina.PersistentManager">
       debug=0                        saveOnRestart="true"
       maxActiveSession="-1"     minldleSwap="-1"
       maxldleSwap="-1"            maxldleBackup="-1"
       <Store className="org.apache.catalina.session.FileStore" directory="/home/keith/temp"
 / /   </Manager>
</Context>

标签<Manager>元素是专门来配置session管理操作的,该元素中每个属性对应的值:

  • className:session的管理器操作类,Tomcat通过此接口完成序列化管理
  • debug:session管理器的跟踪级别
  • saveOnRestart:配置服务重新启动前对session的处理,可以配置true或者false两种选择,为true则会在容器关闭前将有效的session保存,重新启动后重新载入
  • maxActiveSession:可以活动的session的最大数,如果设置为-1,则表示不受限制,超过最大限制会将session对象转移到Session store中。
  • minIdleSwap:一个session不活动的最短时间,单位为秒;如果为-1则表示不受限制,超过该时间会将session对象转移到Session store中。该session不再内存中保存;
  • maxIdleBackup:session的最长时间,单位为秒,如果为-1,则表示不受限制,超过该时间会将session备份到session store中,但该session对象依然存在内存中;
  • <store>元素:定义实现持久化session的操作类及指定的文件存方位置;

配置server.xml,即使服务器中间关闭了,一个用户的session也可以通过此配置进行反序列华的恢复;

4,session实例---登录及注销

login.jsp:

	<form action="login.jsp" method="post">
		userName:<input type="text" name="uname"><br />
		uPwd:<input type="text" name="upwd"><br />
		<input type="submit" value="Login">
		<input type="reset" value="Reset">
	</form>

 login.jsp:

	<body>
		<%
		String name = request.getParameter("uname");
		String upwd = request.getParameter("upwd");
		if(name != null || !"".equals(name) || upwd != null || !"".equals(upwd)){
			//定时跳转
			session.setAttribute("userid",name);
			response.setHeader("refresh","2;URL=weclome.jsp");
	 %>
	 	<h2>如果没有跳转,<a href="weclome.jsp">请点击这里:</a></h2>
	 <% } else{ %>
	 	输入信息不合法
	 <%} %>
	</body>

 weclome.jsp:

<body>
<%
	if(session.getAttribute("userid")!=null){
 %>
 <h2>欢迎:<%=session.getAttribute("userid") %></h2>
 	<a href="logout.jsp">注销</a><br>
 <%
 	}else{
  %>
  <%=session.getAttribute("userid") %>
  	请先进行合法登录!<a href="index.jsp">登录</a>
  <%} %>
</body>

 测试下!

判断新用户:

	   <%
	  	if(session.isNew()){
	   %>
	   	<h2>欢迎新用户!!!</h2>
	   <%}else {%>
	   	<h2>您已经是老用户了!!!</h2>
	   <%} %>

 第一次访问的话,会显示欢迎新用户,如果再次刷新一次,则显示老用户!isNew()是通过Cookie方式进行判断的(在之前的操作中,第一次通过request取得全部Cookie时是不会出现JESSINOID的,而第二次却会出现这个系统内建的JSESSIONID,这是由于Cookie是在第一次访问时由服务器端设置客户端的,所有服务器可以依靠是否存在JSESSIONID来判断此用户是否为新用户)。

 

 

 

分享到:
评论
1 楼 xiaoliang330 2011-03-28  
兄弟的笔记很实在,工作做的不错  很受用

相关推荐

    jsp中Session对象源码

    jsp课程中内置对象session,jsp教程中的上课源代码

    Jsp内置对象session总结

    Jsp内置对象session总结:详细介绍,Session机制,原理,生命周期h和Session的主要方法等。

    JSP_session对象

    JSP_session对象,session的基本结构 session的基本属性 用户登录(用户身份认证) session跟踪(了解) session钝化机制(了解)

    6 jsp内建对象之session

    NULL 博文链接:https://zhiyongliu.iteye.com/blog/1684454

    原生jsp进行Web编程—作业3-JSP内置对象-Part2

    一、JSP内置对象练习 1、使用JSP中的session对象,实现用户登陆检验 (1)(1)web目录下的session-login目录中,...3、使用JSP中的session对象,实现购物车功能。 4、使用application对象的属性存储统计网站访问人数

    Jsp九大内置对象,request,session,application

    熟练使用这些内置对象是开发JSP应用程序的基本要求,尤其是对于request、session和application对象更是必须要掌握的。 会使用对象所具有的方法,能熟练使用每一种对象的几种常用方法。希望对大家有用。。。

    JSP简易购物车 源码 session储存对象

    JSP简易购物车! 实现了向购物车添加物品,删除物品,计算物品总价格,使用session存储物品对象。 使用:部署后启动服务器,通过访问项目名称-BS直接可以运行!简单,易懂! 供大家学习用!

    JSP 内置对象:session 对象.pptx

    session 对象 session 对象常用的方法

    JSP内置对象 session application的应用

    编写简单的留言本,可保存留言(使用application对象,以便网站所有用户可查看留言),可记录每个用户的名称(使用session对象),以便在留言页面显示用户的名称。可显示所有已保存的留言。

    jsp cookie+session实现简易自动登录

    关闭浏览器只会使存储在客户端浏览器内存中的session cookie失效,不会使服务器端的session对象失效。 如果设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些cookie依然有效直到超过设定...

    JSP session&application;.ppt

    什么是JSP的内置对象 JSP的内置对象有哪些? request对象 与 response对象 session对象 application对象 out对象

    7、JAVA培训之JSP基础05_session对象笔记[整理].pdf

    7、JAVA培训之JSP基础05_session对象笔记[整理].pdf

    利用JSP session对象保持住登录状态

    http协议本身是一种无状态的协议,也就是客户端连续发送的多...Session对象是一个jsp内置对象,它在第一个jsp页面被装载时自动创建,完成会话期管理。 从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开

    JSP语法之隐式对象详解

    了解JSP 隐式对象的分类和组成 能够运用隐式对象进行JSP 编程 理解Page、Request、Session 和Application 范围的区别

    jsp内置对象

    session 会话对象 request 请求对象 pageContext 页面上下文对象 application 应用程序对象 exception 异常对象 说明:有几种对象看起来和ASP的内置对象差不多,功能也类似,这是因为这些内置对象的构建基础是标准化...

    JSP内置对象归纳与总结

    JSP内置对象的归纳与总结,内置对象概述 out对象 request对象 response对象 session对象 application对象 pageContext对象 exception对象

    JSP游戏网站 JSP网游聊天室application session的使用

    JSP游戏网站 JSP网游聊天室,application session的使用

    JSP的内置对象详细讲解

    JSP的内置对象详细讲解,其中包括理解内置对象的含义及熟练掌握out对象及其方法的使用 ...熟练掌握session对象及其方法的使用 掌握exception对象及其方法的使用,JSP中异常处理方法 掌握pageContext对象及其方法的使用

Global site tag (gtag.js) - Google Analytics