栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Session-session的创建和获取、生命周期的修改

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Session-session的创建和获取、生命周期的修改

1、Session简介

    什么是session
    session是javaEE下面的一个HttpSession接口,它可以实现一次会话的多次请求之间共享数据。比如请求的转发里面共享的request域,就是在一次请求之间共享数据。session就是在一次会话之间共享数据,还有一个比较大的域对象,叫application,它是在一个应用里面共享数据。

    session与cookie的区别
    1、session与cookie都是存储用户数据的功能,他们都是一个对象。但是cookie是存储在浏览器里的,而session是存储在服务器里面。
    2、存储数据大小不同,session没有任何大小限制,而cookie好像最多只能存储4KB。
    3、安全性不同:session存储在服务器,相当于比较安全,而cookie在浏览器随时能够查看,你的登录信息很可能被别人盗走,所以不怎么安全。

2、session的创建和获取

session比较特殊,它的创建和获取都是用req.getSession();如果服务器已经有对应的session,那就直接通过请求头向服务器发送session的ID,可以利用session的ID获取。如果服务器没有session就新建一个,然后将session的ID响应给浏览器。

@WebServlet("/session001")
public class SessionDemo001 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1.修改编码方式
        resp.setContentType("text/html;charset=utf-8");
        //2.创建session
        HttpSession session = req.getSession();
        //3.判断session是否为刚创建的
        if(session.isNew()){
            resp.getWriter().write("这个session是刚创建的!!!");
        }else{
            resp.getWriter().write("这个session不是刚创建的!!!");
        }
        //4.获取sessionID
        String id = session.getId();
        resp.getWriter().write("
session的ID是:"+id); } }

第一次请求,新建session

第二次请求:ID完全一样

3、创建和获取session域数据(方法和request域大致一样)

1、创建session域数据

@WebServlet("/session002")
public class SessionDemo002 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html;charset=utf-8");

        HttpSession session = req.getSession();

        session.setAttribute("key1","value1");
        session.setAttribute("key2","value2");
        session.setAttribute("key3","value3");
        session.setAttribute("key4","value4");

        resp.getWriter().write("session数据创建好了!!!");
    }
}

2、获取session域数据

@WebServlet("/session003")
public class SessionDemo003 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html;charset=utf-8");
        HttpSession session = req.getSession();
        Object key1 = session.getAttribute("key1");
        Object key2 = session.getAttribute("key2");
        Object key3 = session.getAttribute("key3");
        Object key4 = session.getAttribute("key4");
        resp.getWriter().write("session数据获取了"+"
"); resp.getWriter().write("以下是Session程序2中的session域数据
"+key1+"
"+key2+"
"+key3+"
"+key4); } }

4、修改session超时时长

什么是超时时长:就是在浏览器连续两次请求之间的最大允许时间,超过这个时间session就会被销毁。
session可以保存在服务器,但不是永久保存的。如果永久保存服务器将会浪费大量资源。session有一个默认的超时属性,这个属性可以在Tomcat服务器下面的配置文件查看。
tomcat工程confweb.xml查看。这里的30是默认的30分钟。

获取session超时时长:getMaxInactiveInterval();

@WebServlet("/session004")
public class SessionDemo004 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html;charset=utf-8");

        HttpSession session = req.getSession();
        int maxInactiveInterval = session.getMaxInactiveInterval();

        resp.getWriter().write("默认的session超时时长是:"+maxInactiveInterval+"秒");
    }
}


2.修改超时时长

@WebServlet("/session005")
public class SessionDemo005 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html;charset=utf-8");

        HttpSession session = req.getSession();
        session.setMaxInactiveInterval(10);
        resp.getWriter().write("session超时时长已经修改!!!");
    }
}

5、html页面



    
    Title
    






转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/756726.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号