首页 > 编程语言 >javaweb实操之session'

javaweb实操之session'

时间:2022-10-17 21:46:29浏览次数:54  
标签:utf javaweb resp req setCharacterEncoding Person session 实操

什么是session

  • 服务器会给一个用户(浏览器)创建一个session对象
  • 一个session独占一个浏览器,只要浏览没有关闭,这个session就存在
  • 用户登录之后,整个网站都可以访问 ->保存用户信息,保存购物车信息

cookie和session的区别

  • session还能替代context来共享数据
  • cookie是把用户的数据写给浏览器,浏览器保存(可以保存多个)
  • session是把用户数据写道用户独占的session中,服务器端保存(保存重要的数据,减少服务器资源浪费)
  • session由服务器创建

使用场景

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

使用session

 		req.setCharacterEncoding("utf-8");
        resp.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");

        //得到session
        HttpSession session = req.getSession();
        //存数据
        session.setAttribute("name",new Person("石瑛智",25));
        //获取session的id
        String id = session.getId();
        PrintWriter writer = resp.getWriter();
        //判断session是不是新创建的
        if (session.isNew()) {
            writer.write("session创建成功,sessionID为"+id);
        }else {
            writer.write("session已经在服务器中存在了,sessionID为"+id);

        }
        //session在创建时做了什么
//        Cookie cookie = new Cookie("JSESSIONID",id);
//        resp.addCookie(cookie);

读取session

		req.setCharacterEncoding("utf-8");
        resp.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");

        //得到session
        HttpSession session = req.getSession();
        //获取session
        try {
            Person person =  (Person) session.getAttribute("name");
            resp.getWriter().write(person.toString());
        } catch (IllegalStateException e){
            resp.sendRedirect("makesession");
        }catch (NullPointerException e){
            resp.sendRedirect("makesession");
        }

清除session

	 	 req.setCharacterEncoding("utf-8");
         resp.setCharacterEncoding("utf-8");
         resp.setContentType("text/html;charset=utf-8");

         //得到session
         HttpSession session = req.getSession();
         //获取session
         session.invalidate();
         try {
             Person person = (Person) session.getAttribute("name");
             resp.getWriter().write(person.toString() + session.getId());
         } catch (IllegalStateException e) {
             resp.getWriter().write("清除成功,会话已失效");
         }

会话自动过期 在web.xml中配置

    <!--设置session默认超时时间-->
    <session-config>
        <!--15分钟session移自动失效。以分钟为单位-->
        <session-timeout>1</session-timeout>
    </session-config>

标签:utf,javaweb,resp,req,setCharacterEncoding,Person,session,实操
From: https://www.cnblogs.com/teststack/p/16800790.html

相关文章

  • javaweb
    <td><astyle="color:blue"href='showall.jsp?name=<%=(d.getName())%>'><%=(d.getName())%></a></td>                   ......
  • JavaWeb(一):MySql基础
    目录​​1、数据库相关概念​​​​1.1数据库​​​​1.2数据库管理系统​​​​1.3常见的数据库管理系统​​​​1.4SQL​​​​2、MySQL​​​​2.1MySQL安装​​​......
  • javaweb学习记录
    学习javaweb是完完全全自学的,从mysql,tomcat,到Servlet,html都是自学的,主要是看黑马次程序员,但是因为时间原因,我并没有哪个都看,在寒假时我需要再次观看一遍。首先......
  • JAVAWEB学习——JDBC连接及相关操作
    //加载数据库驱动MySQL://1MySQL驱动:com.mysql.jdbc.Drive//2Oracle驱动:oracle.jdbc.driver.OracleDriver//3SQLS......
  • L - Session in BSU
    传送门题意:有n场考试,给出每场考试的\(a_i,b_i\)值,\(a_i<b_i\),\(a_i,b_i\)代表这场考试可以考的时间,问最少需要多少天来考完n场考试,如果不能考完就输出-1思路:......
  • Session共享实现
    Session共享实现为什么要实现session共享呢随着互联网公司的项目在微服务和分布式的环境下进行的搭建,导致一个项目可能分别部署在几个甚至很多的服务器集群下,此时就会......
  • 基于session和redis两种方式的短信登录业务流程及代码实现
    短信登录业务短信登录的业务流程基于session实现短信登录的业务流程流程说明:发送短信:从前端获取到手机号,校验手机号,生成验证码,将验证码保存到session,并将验证码发......
  • javaweb
    学习文档:https://blog.csdn.net/qq_36188127/article/details/109370717学习视频:https://www.bilibili.com/video/BV12J411M7Sj网站访问流程:1.输入一个域名,回车,2.检查本机......
  • javaweb链接到数据库(mysql)操作
    准备:配置好数据库,下好mysqlconnect第一步:将myconnec文件复制到webapp文件下WEB-INF的lib文件中,然后右键构建路径。第二步:定义String类型的Name(数据库的用户名)和psw(数......
  • JavaWeb学习3:Tomcat
    1、安装Tomcathttps://tomcat.apache.org/2、Tomcat启动和关闭启动关闭3、Tomcat的配置可以配置启动的端口号Tomcat默认端口号:8080<Connectorport="8080"......