美文网首页Javaweb…网络项目
Servlet:第五篇【seesion】

Servlet:第五篇【seesion】

作者: __y | 来源:发表于2018-05-22 11:14 被阅读17次

    1.session的基本概念

    session是另外一种会话技术。不同的是Cookie是保存在浏览器里,session是保存在服务器中。用户在使用浏览器的时候,服务器把用户的信息以某种形式记录在服务器上。相比较于Cookie,session使用上更方便也更灵活,Cookie只能保存字符串,session可以保存对象!

    2.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<String> getAttributeNames();【获取Session所有的属性名】
    • void setAttribute(String var1, Object var2);【设置Session属性】
    • void removeAttribute(String var1);【移除Session属性】
    • void invalidate();【销毁该Session】
    • boolean isNew();【该Session是否为新的】

    session域对象

    session作为域对象只要没被销毁就可以在servlet之间实现通讯。

    //初始化session对象
     HttpSession session = request.getSession();
    //设置session属性
    session.setAttribute("name","Test");
    

    获得上面设置的值

    //初始化session对象
     HttpSession session = request.getSession();
    String value = (String)session.getAttribute("name");
    

    什么时候用session?
    一般我们我们要存进用户级别的数据就用session,只要浏览器不关闭,希望数据还在就用session。

    3.session生命周期和有效期

    1.session在用户第一次访问服务器的servlet,jsp等动态资源的时候就会被创建且保存在服务器的内存中(如果访问HTML,IMAGE等静态资源的话不会创建)
    2.session生成后,用户继续访问,无论是否对session进行读写,服务器都会认为session活跃了一次
    3.为了防止内存溢出,服务器会把长时间没有活跃的session从内存中删除,这个时间也就是session的超时时间
    4.session默认的超时时间是30分钟,有以下三种方式修改时间:

    • 在Tomcat/conf/web.xml中配置
    <session-config>
        <session-timeout>20</session-timeout>
    </session-config>
    
    • 在项目中的web.xml中设置
    <session-config>
        <session-timeout>20</session-timeout>
    </session-config>
    
    • 通过setMaxInactiveInterval()

    4.Cookie和session比较

    1.有效期不同。session周期指的是不活动的时间。比如我们设置了10S,在10S内如果session没有活跃,就失效。但是如果在9S的时候使用session则重新计算,重启,关闭服务器,或者重新加载web应用session也会失效。cookie的生命周期则是按累计的时间来算
    2.Cookie存储在客户端,session在服务端
    3.对服务器的负担比较。如果并发量过大,session会大量消耗内存,一般推荐使用cookie


    先到这,以后更新项目上的应用~

    相关文章

      网友评论

        本文标题:Servlet:第五篇【seesion】

        本文链接:https://www.haomeiwen.com/subject/blthjftx.html