Java Web学习——Session

session的概念

Session 是另一种记录浏览器状态的机制。不同的是Cookie保存在浏览器中,Session保存在服务器中。用户使用浏览器访问服务器的时候,服务器把用户的信息以某种的形式记录在服务器,这就是Session。

session常见API

  • long getCreationTime();【获取Session被创建时间】

  • String getId();【获取Session的id】

  • long getLastAccessedTime();【返回Session最后活跃的时间】

  • ServletContext getServletContext();【获取ServletContext对象】

  • void setMaxInactiveInterval(int var1);【设置Session超时时间】

  • int getMaxInactiveInterval();【获取Session超时时间】

  • Object getAttribute(String var1);【获取Session属性】

  • enumeration getAttributeNames();【获取Session所有的属性名】

  • void setAttribute(String var1, Object var2);【设置Session属性】

  • void removeAttribute(String var1);【移除Session属性】

  • void invalidate();【销毁该Session】

  • boolean isNew();【该Session是否为新的】

Session的生命周期和有效期

  • Session在用户第一次访问服务器Servlet,jsp等动态资源就会被自动创建,Session对象保存在内存里,这也就为什么上面的例子可以直接使用request对象获取得到Session对象。

  • 如果访问HTML,IMAGE等静态资源Session不会被创建。

  • Session生成后,只要用户继续访问,服务器就会更新Session的最后访问时间,无论是否对Session进行读写,服务器都会认为Session活跃了一次。

  • 由于会有越来越多的用户访问服务器,因此Session也会越来越多。为了防止内存溢出,服务器会把长时间没有活跃的Session从内存中删除,这个时间也就是Session的超时时间。
    session的过期时间是从什么时候开始计算的?是从一登录就开始计算还是说从停止活动开始计算?
      答:从session不活动的时候开始计算,如果session一直活动,session就总不会过期。
       从该Session未被访问,开始计时; 一旦Session被访问,计时清0;

设置session过期的三种方法

1.在tomcat/conf/web.xml文件中设置,对所有web应用都有效(默认为分钟)
	<session-config>
            <session-timeout>20</session-timeout>
        </session-config>   

2.在单个的web.xml文件中设置,对单个web应用有效,如果有冲突,以自己的web应用为准。
3.通过setMaxInactiveInterval()方法设置(默认为秒)。

	httpSession.setMaxInactiveInterval(60); 
	httpSession.getMaxInactiveInterval();

Session和Cookie有效期的区别

  • Session的周期指的是不活动时间,在有效期内活动,则会重新计时。Cookie的有效期和是否活动无关。
  • 重启Tomcat,重新加载web应用,关机都会使Session失效。
  • removeAttribute()来设定某个session失效。
  • invalidate()让session中的所有属性失效
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Web开发中,Session是一种在服务器端存储用户数据的方式,可以在多个页面中共享这些数据。Session通常用于存储用户登录信息、购物车信息等。 在Python中,可以使用内置的`session`对象来实现Session功能。下面是一个简单的例子: ```python from flask import Flask, session, redirect, url_for, escape, request app = Flask(__name__) app.secret_key = 'my_secret_key' @app.route('/') def index(): if 'username' in session: username = session['username'] return 'Logged in as ' + username + '<br>' + \ "<b><a href = '/logout'>click here to log out</a></b>" return "You are not logged in <br><a href = '/login'></b>" + \ "click here to log in</b></a>" @app.route('/login', methods=['GET', 'POST']) def login(): if request.method == 'POST': session['username'] = request.form['username'] return redirect(url_for('index')) return ''' <form action="" method="post"> <p><input type="text" name="username"> <p><input type="submit" value="Login"> </form> ''' @app.route('/logout') def logout(): session.pop('username', None) return redirect(url_for('index')) ``` 在上面的例子中,我们使用了Flask框架来实现Web应用。在应用启动时,我们设置了一个`secret_key`,这个密钥用于保护Session数据的安全性。 在`index`函数中,我们检查了Session中是否存在`username`键。如果存在,说明用户已经登录,我们将显示用户的用户名和一个链接,可以用于退出登录。如果不存在,说明用户尚未登录,我们将显示一个登录链接。 在`login`函数中,我们检查了请求的方法是否为POST。如果是,说明用户提交了登录表单,我们将从表单中获取用户名,并将其存储到Session中。然后,我们将重定向到`index`函数中。如果请求的方法为GET,我们将显示一个包含用户名输入框和提交按钮的表单。 在`logout`函数中,我们使用`pop`方法从Session中删除`username`键。然后,我们将重定向到`index`函数中。 总之,Session是一个非常有用的工具,可以帮助我们在Web应用中存储和共享用户数据。使用Python中的`session`对象可以很容易地实现Session功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值