千家信息网

Java中Session的介绍以及用法是怎样的

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,Java中Session的介绍以及用法是怎样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1.什么是session:服务器会给每一
千家信息网最后更新 2026年11月04日Java中Session的介绍以及用法是怎样的

Java中Session的介绍以及用法是怎样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

1.什么是session:

服务器会给每一个用户(浏览器)创建一个session对象

一个session独占一个浏览器,只要浏览器不关闭,这个session就一直存在

session称为会话控制,存储用户会话所需的属性和配置信息,这样,用户在应用程序的web页面跳转时,存储在session对象中的用户信息不会丢掷,而是在整个用户会话中一直保持下去

2.session的经典应用场景:

一个用户登陆后,访问该网站的其他网页时,一直处于登录状态

保存购物车信息等等

3.session中常用的方法

getId():获取session的唯一标识

getServletContext():代表整个web服务

getAttribute(String):获取session的节点,比如你在其中一个Servlet中通过setAttribute(String,Object)配置了相关的session信息,然后通过另一个Servlet获取这个Servlet中的session信息,就要用到getAttribute(String)这个方法

setAttribute(String,Object):设置session节点

removeAttribute(String):一出一个session节点

isNew():判断一个session是否是一个新的session

invalidate():注销session的

4.举例

例1:创建一个session并获取到session的ID,判断这个session是否是新的session

步骤1:新建一个maven项目,使用webapp模板

步骤2:在Java文件夹下创建一个com.xiaoma.servlet.SessionDemo01的类,编写servlet类文件

package com.xiaoma.servlet;import com.xiaoma.pojo.Person;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;  import javax.servlet.http.HttpServletRequest;  import javax.servlet.http.HttpServletResponse;  import javax.servlet.http.HttpSession; import java.io.IOException; public class SessionDemo01 extends HttpServlet {     @Override     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {         //解决中文乱码         resp.setHeader("content-type","text/html;charset=UTF-8");         //得到session         HttpSession session = req.getSession();         //通过setAttribute方法向Session中存放信息         session.setAttribute("name","小马");         //获取session相关信息,包括id,是否是新的session等         String sessionId = session.getId();         if(session.isNew()) {             resp.getWriter().write("创建Session成功,ID为:" + sessionId);         }else{             resp.getWriter().write("Session已经存在了,ID为:" + sessionId);         }     }     @Override     protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {         doGet(req, resp);     } }

步骤3:配置XML文件

         SessionDemo01         com.xiaoma.servlet.SessionDemo01                   SessionDemo01         /s1     

例2:从一个servlet中读取另一个servlet中的session信息

步骤1:在Java文件夹下创建一个com.xiaoma.servlet.SessionDemo01的类,编写servlet类文件

  package com.xiaoma.servlet;  import com.xiaoma.pojo.Person;  import javax.servlet.ServletException;  import javax.servlet.http.HttpServlet;  import javax.servlet.http.HttpServletRequest;  import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.io.IOException; public class SessionDemo01 extends HttpServlet {     @Override     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {         //解决中文乱码         resp.setHeader("content-type","text/html;charset=UTF-8");         //得到session         HttpSession session = req.getSession();         //通过setAttribute方法向Session中存放信息         session.setAttribute("name","小马");         //获取session相关信息,包括id,是否是新的session等         String sessionId = session.getId();         if(session.isNew()) {             resp.getWriter().write("创建Session成功,ID为:" + sessionId);         }else{             resp.getWriter().write("Session已经存在了,ID为:" + sessionId);        }     }     @Override     protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {         doGet(req, resp);     } }

步骤2:在Java文件夹下创建一个com.xiaoma.servlet.SessionDemo02的类,编写另一个用来读取的servlet类,通过SessionDemo02来读取SessionDemo01中的session信息

 package com.xiaoma.servlet;  import com.xiaoma.pojo.Person;  import javax.servlet.ServletException;  import javax.servlet.http.HttpServlet;  import javax.servlet.http.HttpServletRequest;  import javax.servlet.http.HttpServletResponse;  import javax.servlet.http.HttpSession;  import java.io.IOException; public class SessionDemo02 extends HttpServlet {    @Override     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {         //解决中文乱码        resp.setHeader("content-type","text/html;charset=UTF-8");         //得到session         HttpSession session = req.getSession();         String name=(String) session.getAttribute("name");         resp.getWriter().write(name);     }     @Override     protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {         super.doPost(req, resp);     } }

步骤3:配置xml文件

          SessionDemo02        com.xiaoma.servlet.SessionDemo02                   SessionDemo02         /s2     

例3:session中还可以存放对象信息

步骤1:在Java文件夹下创建一个com.xiaoma.pojo.Person的类,编写我们的实体类

 package com.xiaoma.pojo;  public class Person {      private String name;      private int age;      public Person() {      }     public Person(String name, int age) {         this.name = name;         this.age = age;     }     public String getName() {         return name;     }     public void setName(String name) {         this.name = name;     }      public int getAge() {         return age;     }     public void setAge(int age) {         this.age = age;     }     @Override     public String toString() {         return "Person{" +                "name='" + name + '\'' +                 ", age=" + age +                 '}';     } }

步骤2:在Java文件夹下创建一个com.xiaoma.servlet.SessionDemo01的类,编写servlet类文件

  package com.xiaoma.servlet;  import com.xiaoma.pojo.Person;  import javax.servlet.ServletException;  import javax.servlet.http.HttpServlet;  import javax.servlet.http.HttpServletRequest;  import javax.servlet.http.HttpServletResponse;  import javax.servlet.http.HttpSession; import java.io.IOException; public class SessionDemo01 extends HttpServlet {     @Override     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {        //解决中文乱码         resp.setHeader("content-type","text/html;charset=UTF-8");        //得到session         HttpSession session = req.getSession();         //通过setAttribute方法向Session中存放信息         session.setAttribute("name",new Person("小马",18));         //获取session相关信息,包括id,是否是新的session等         String sessionId = session.getId();         if(session.isNew()) {             resp.getWriter().write("创建Session成功,ID为:" + sessionId);         }else{             resp.getWriter().write("Session已经存在了,ID为:" + sessionId);         }     }     @Override     protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {         doGet(req, resp);     } }

步骤3:在Java文件夹下创建一个com.xiaoma.servlet.SessionDemo02的类,编写另一个servlet类文件,用来读取SessionDemo01中的Session对象信息

 package com.xiaoma.servlet;  import com.xiaoma.pojo.Person;  import javax.servlet.ServletException; import javax.servlet.http.HttpServlet;  import javax.servlet.http.HttpServletRequest;  import javax.servlet.http.HttpServletResponse;  import javax.servlet.http.HttpSession;import java.io.IOException; public class SessionDemo02 extends HttpServlet {     @Override     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {         //获取session中的Person对象         //解决中文乱码         resp.setHeader("content-type","text/html;charset=UTF-8");         //得到session         HttpSession session = req.getSession();         Person person=(Person) session.getAttribute("name");         resp.getWriter().write(person.toString());     }     @Override     protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {         super.doPost(req, resp);     } }

步骤4:编写xml文件,与上同理

例4:注销session(注销session有两种方式,一种是通过removeAttribute(String)方法,另一种是通过xml配置文件)

第一种,通过removeAttribute(String)方法,这种方式是使session手动过期

  package com.xiaoma.servlet;  import javax.servlet.ServletException;  import javax.servlet.http.HttpServlet;  import javax.servlet.http.HttpServletRequest;  import javax.servlet.http.HttpServletResponse;  import javax.servlet.http.HttpSession; import java.io.IOException; public class SessionDemo03 extends HttpServlet {     @Override     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {         //得到session         HttpSession session = req.getSession();         //手动注销session        session.removeAttribute("name");         session.invalidate();     }     @Override     protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {         super.doPost(req, resp);     }}

第二种,通过xml文件的方法,这种方式是时session自动过期

                        1     

5.session与cookie的区别

  ·(1)cookie是吧用户的数据写给浏览器,浏览器保存(可以保存多个)

  ·(2)session是把用户的数据写给用户独占的session中,服务器保存(保存重要信息,避免浪费服务器资源)

  ·(3)session是由服务器创建的

关于Java中Session的介绍以及用法是怎样的问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

信息 文件 步骤 方法 用户 文件夹 乱码 对象 浏览器 中文 服务 浏览 配置 服务器 成功 小马 方式 节点 问题 手动 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 花魁咖啡 鸠鸠互联网科技 互联网中国科技 广州互联网科技公司 善班互联网科技有限公司 菲比寻常互联网科技 长亮科技互联网金融 互联网 新科技 太原新华互联网科技学校怎么样 青岛中康互联网医疗科技有限公司 中国互联网有什么科技含量 成都互联网科技公司100强 银川新华互联网科技职业技术培训学校图片 互联网经济与金融科技 企晟互联网信息科技有限公司 晋城互联网科技 明优互联网科技有限公司 南京一网一红互联网科技有限公司 互联网科技手抄报图片 陕西彩京云互联网科技有限公司 美国互联网科技巨头监管 广州互联网科技公司 华中科技大学互联网 火传媒上海互联网科技 镁科技互联网资讯平台 湖南洣水互联网科技有限公司扣款 浙南科技城互联网大厦建设工程 2021互联网科技公司排名 广州互联网高科技取餐柜 北京天晋互联网科技有限公司
0