`

java session时间的控制

阅读更多
session对象用于在会话范围内,记录每个客户端的访问状态,以便于跟踪每个客户端的操作状态,在会话存储的信息,在浏览器发出后续请求时可以获取这些会话的有效数据。 
在jsp页面中可以直接使用session对象(jsp的内置对象),也可以通过pageContext.getSession()或者request.getSession重新回去session对象。 
session可以保存用户的信息和实现购物车等功能。 
HTTP协议是一种无状态协议,客户向服务器发出的请求request,然后服务器返回响应response,连接就被关闭了,在服务器不保存连接的有关信息,因此在下一次连接时,服务器已经没有以前的连接信息了,无法判断这一次连接和上一次连接时同一个客户信息,因此,必须使用会话记录有关连接的信息。 
从客户打开浏览器连接到服务器,到客户关闭浏览器离开这个服务器,称做一个会话。当客户访问服务器是,可能会反复连接这个服务器上的几个页面、反复刷新一个页面或不断地向一个页面提交信息等,服务器应当通过某种方法知道这是同一个客户,这时就需要session对象。 
session的工作原理如下: 
1、客户首次访问服务器的一个页面时,服务器就会为该用户分配一个session对象,同时为这个session指定唯一的ID,并且将该ID发送到客户端并写入到cookie中,使得客户端与服务器的session建立一一对应的关系; 
2、当客户端继续访问服务器端的其它资源时,服务器不再为该客户分配新的session对象,直到客户端浏览器关闭、超时或调用session的invalidate()方法使其失效,客户端与服务器的会话结束。 
3、当客户重新打开浏览器访问网站时,服务器会重新为客户分配一个session对象,并重新分配sessionID。 
session对象主要用于属性操作和会话管理,常用方法如下: 
1、public void setAttribute(String name,String value)设定指定名字的属性的值,并将它添加到session会话范围内,如果这个属性是会话范围内存在,则更改该属性的值。 
2、public Object getAttribute(String name)在会话范围内获取指定名字的属性的值,返回值类型为object,如果该属性不存在,则返回null。 
3、public void removeAttribute(String name),删除指定名字的session属性,若该属性不存在,则出现异常。 
4、public void invalidate(),使session失效。可以立即使当前会话失效,原来会话中存储的所有对象都不能再被访问。 
5、public String getId( ),获取当前的会话ID。每个会话在服务器端都存在一个唯一的标示sessionID,session对象发送到浏览器的唯一数据就是sessionID,它一般存储在cookie中。 
6、public void setMaxInactiveInterval(int interval) 设置会话的最大持续时间,单位是秒,负数表明会话永不失效。 
7、public int getMaxInActiveInterval(),获取会话的最大持续时间。 
8、使用session对象的getCreationTime()和getLastAccessedTime()方法可以获取会话创建的时间和最后访问的时间,但其返回值是毫秒,一般需要使用下面的转换来获取具体日期和时间。 
     Date creationTime = new Date(session.getCreationTime()); 
    Date accessedTime = new Date(session.getLastAccessedTime()); 
<%@ page language="java" import="java.util.*" contentType="text/html;charset=GBK"%> 
<% 
String path = request.getContextPath(); 
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 
%> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
  <head> 
    <base href="<%=basePath%>"> 
    
    <title>session对象方法</title> 
    
<meta http-equiv="pragma" content="no-cache"> 
<meta http-equiv="cache-control" content="no-cache"> 
<meta http-equiv="expires" content="0">    
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> 
<meta http-equiv="description" content="This is my page"> 
<!-- 
<link rel="stylesheet" type="text/css" href="styles.css"> 
--> 
  </head> 
  
  <body> 
    <b> 
    会话ID:<%=session.getId() %> <br> 
    是否新会话:<%=session.isNew() %><br> 
    设置和获取属性对象:用户名 = 
    <%session.setAttribute("用户名","bing"); %> 
    <%=session.getAttribute("用户名") %><br> 
    <% 
    Date creationTime = new Date(session.getCreationTime()); 
    Date accessedTime = new Date(session.getLastAccessedTime()); 
     %> 
     会话创建时间:<%=creationTime %><br> 
     上次访问时间:<%=accessedTime %><br> 
     会话持续时间(s):<%=session.getMaxInactiveInterval() %><br> 
     <%session.setMaxInactiveInterval(12); %> 
     修改后的会话持续时间(s):<%=session.getMaxInactiveInterval() %><br> 
     <%session.invalidate(); %> 
     </b> 
  </body> 
</html> 
分享到:
评论

相关推荐

    java session判断用户登录时间和点击页面次数

    2. 使用`session.setAttribute("loginTime", new Date())`将当前日期和时间(Java中的`Date`对象)存储在Session中,键为"loginTime"。 3. 每当用户访问新的页面时,检查Session中的"loginTime",以获取登录时间。 ...

    Java关于session的详细解释

    - **Session的优势**:相比于其他状态管理技术,Session能够提供更强大的功能,例如支持跨多个页面的数据共享,以及提供更高级的安全性控制。 #### 九、Session的注意事项 - **安全性**:Session ID应具有足够的...

    java中使用session模拟用户登陆

    在Java Web开发中,Session是服务器端用于跟踪用户状态的一种机制。当用户通过用户名和密码登录系统后,服务器需要一种方式来识别这个已验证的用户,以便在后续的请求中提供个性化的服务,例如访问权限控制。这时,...

    JAVA的SESSION精准统计

    1. **并发处理**:在高并发环境下,多个线程同时进行Session增加或减少操作时,如果不进行同步控制,可能会出现计数错误。Java提供了synchronized关键字以及Lock接口(如ReentrantLock)来实现线程安全,确保在并发...

    在ASP.NET中,设置Session的过期时间的方法

    方法一:  在后台应用程序中设置:Session.Timeout = 1;  注意:1、此方法可以设置在一个... 您可能感兴趣的文章:php 如何设置一个严格控制过期时间的sessionjava设置session过期时间的实现方法php中实现精确设置se

    购物车 java ee session

    此外,合理设置Session的过期时间,避免过多的会话占用服务器资源。还可以通过缓存策略减少数据库访问,提高系统性能。 7. **测试和部署**:开发完成后,需要进行单元测试、集成测试和压力测试,确保系统功能完整且...

    session过期时间设置

    通过Java代码设置Session的过期时间,例如在主页面或公共页面中加入以下代码: ```java HttpSession ses = request.getSession(); ses.setMaxInactiveInterval(900); // 设置900秒后过期,即15分钟 ``` 这里的...

    退出页面自动清除session技巧

    具体来说,可以在控制器(Controller)层处理Session的清除逻辑,而不是直接在JSP页面中编写相关代码。 #### 其他注意事项 除了上述介绍的方法之外,还有一些其他方面的注意事项: - **禁用缓存**:为了防止因...

    java memcached-session 配置

    Java Memcached-Session配置在Tomcat环境中主要用于将Web应用程序中的用户会话数据持久化到分布式缓存系统Memcached中,从而提高系统的可扩展性和性能。Memcached是一个高性能、分布式的内存对象缓存系统,用于在...

    java控制页面刷新频率

    Java作为一种广泛使用的服务器端编程语言,提供了多种方法来控制页面刷新频率,其中最常用的是通过session管理和JavaScript结合的方式。 #### 1. Session管理 Session是存储特定用户会话所需的属性及配置信息的一...

    session失效

    在实际应用中,Session的生命周期可以通过设置最大非活动间隔(Max Inactive Interval)来控制。该参数定义了从最后操作Session到Session自动过期的时间间隔。如果在此期间内没有对Session进行任何操作,则Session将...

    Java中设置session的详细解释[1].docx

    这个接口提供了丰富的API来控制Session的创建、修改和销毁。 ##### 创建Session 当用户首次访问网站时,服务器会自动创建一个Session对象。如果用户已经存在一个Session,则服务器会复用之前的Session。 ```java ...

    java源码包---java 源码 大量 实例

     Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...

    java登录权限控制项目

    - 可以设置session超时,或者使用Remember-Me服务让用户在一定时间内无须重新登录。 6. **密码编码与哈希**: - 为了保护用户密码,应将其存储为哈希值而非明文。Java提供了`BCryptPasswordEncoder`或`Pbkdf2...

    session过期问题

    1. **设置Session超时时间**:在服务器端,可以通过配置Web服务器或应用服务器的Session超时时间来控制Session的生命周期。例如,在Java Web应用中,可以在web.xml配置文件中设定`&lt;session-config&gt;`的`&lt;session-time...

    Struts2 的Action使用session的方法

    你可以通过`session.setMaxInactiveInterval(int interval)`设置session的有效时间,单位为秒。 5. **清理session**:当不再需要session中的数据或者想要结束用户会话时,应清除session中的数据或直接 invalidated...

    基于java的使用Redis存放Session RedisManager.zip

    5. **过期策略**:Redis支持设置过期时间,项目可能利用这一特性为每个Session设置生命周期。当Session超时,Redis中的相应键会自动删除,从而实现Session的自动清理。 6. **并发控制**:在多线程环境下,访问Redis...

    struts中自定义的tag的Java类中如何获得session

    - **生命周期管理**:理解`session`的生命周期,合理设置`session`的超时时间,避免不必要的资源占用。 总之,通过Struts自定义标签结合`session`的使用,可以使Web应用的开发变得更加灵活高效。开发者可以根据具体...

    基于springMVC的session拦截器

    SpringMVC的Session拦截器是提高应用安全性、控制访问权限的有效工具。通过自定义拦截器,开发者可以在不修改业务逻辑的情况下,轻松地增加对Session的验证,确保每个请求都符合预期的上下文。在实际项目中,结合...

    java_web 用户只能在一处登陆源码

    在Java Web应用中,用户的登录状态是通过Session来维护的。当用户成功登录后,服务器会创建一个Session对象,并将用户信息存储在其中,然后将Session ID返回给客户端(通常是浏览器)作为Cookie保存。之后,每次...

Global site tag (gtag.js) - Google Analytics