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

Session

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

Session

1、Sessio(会话):就是从打开浏览器到关闭浏览器即为一次会话,只要浏览器不关闭Session就不会消失,Sessio可以用来保存用户的信息。比如:你用Chrome浏览器打开了B站,并且进行了登录,如果你关闭了B站的窗口然后过一会再次打开B站主页面的时候,你会发现你的用户仍然处于登录状态。

2、服务器会给每一个用户(浏览器)创建一个Session,打开两个浏览器(Chrome、Edge)就是两个用户。

3、Sessio简单代码:

session.setAttribute("name","小明") 用来存String类型,session.setAttribute(String ,Object)还可以存对象(下面写)。setAttribute(String ,Object)方法除了session可以调用,ServletContext context对象也可以用,context.setAttribute(String ,Object)。session.getAttribute()返回的是Object。

public class Session01 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    //    解决乱码
        resp.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");
    //    获取Session对象
        HttpSession session = req.getSession();

    //    用Session对象存东西
        session.setAttribute("name","小明");
    //获得session的Id
        String sessionId = session.getId();
    //    判断Session是否创建
        if (session.isNew()){
            resp.getWriter().write("session创建成功"+sessionId);
        }else {
            resp.getWriter().write("session已经在服务器上创建了,ID为:"+sessionId);
        }
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}



public class Session02 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //    解决乱码
        resp.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");
        //    获取Session对象
        HttpSession session = req.getSession();

        //获取Session对象存的东西
       String name = (String) session.getAttribute("name");

        resp.getWriter().print("session获得的东西"+name);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        
    }
}

web.xml

    
        Session01
        com.iflytek.servlet.Session01
    
    
        Session01
        /s1
    


    
        Session02
        com.iflytek.servlet.Session02
    
    
        Session02
        /s2
    

session.setAttribute(Object)

public class Person {
    private String name;
    private int age;

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + ''' +
                ", age=" + age +
                '}';
    }

    public Person() {
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

 运行结果:

    
        1
    

(web.xml中配置)

 用户一段时间没有登录,服务器就会默认让session小时,不认session一直存在服务器量太大,易崩。

4、Session和cookie的区别:

cookie:用户的数据写给用户的浏览器,浏览器保存。

Session:用户的数据写给session,服务器保存。Session对象时服务器创建,获取对象时是request请求 HttpSession session = req.getSession();

使用场景:

保存用户登录信息、保存购物车信息、在整个网站中经常会使用的数据。 

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

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

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