首页 > 编程语言 >Javaweb-cookiea和session

Javaweb-cookiea和session

时间:2022-08-29 18:46:42浏览次数:48  
标签:Javaweb resp cookiea session Cookie import servlet javax

Cookie、Session

1. 会话

会话:用户打开了浏览器,打开了多个链接,然后关闭浏览器,这就是一次会话。

有状态会话
浏览器怎么证明你来过。

服务端和客户端
1.服务端给客户端一个信物,客户端拿着信物来,服务端就能识别(cookie);
2.服务器登记你来过,下才来就能识别你(session);

2.保存会话的两种技术

1.cookie
客服端技术请求和响应

解决中文乱码问题

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

源码

package com.wang.servlet;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.crypto.Data;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;

public class cookie extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       //把时间当成信件
        resp.setContentType("text/html");
        req.setCharacterEncoding("utf-8");
        resp.setCharacterEncoding("utf-8");
        PrintWriter out = resp.getWriter();
        //服务器从客户端获取cookie
        Cookie[] cookies = req.getCookies();
       //判断cookie是否存在
        if(cookies!=null)
        {
            out.print("你上一次访问的时间为");
            for(int i=0;i<cookies.length;i++)
            {
                Cookie cookie=cookies[i];
            if(cookie.getName().equals("lastLoginTime"))
            {
                long lastLoginTime = Long.parseLong(cookie.getValue());
                Date date = new Date(lastLoginTime);
                out.write(date.toLocaleString());
            }
            }
        }
        else
        {
            out.print("添加cookie");
        }
        //服务端给客户端cookie
        Cookie cookie = new Cookie("lastLoginTime",System.currentTimeMillis()+"");
        resp.addCookie(cookie);
    }
    }

2.session
服务端技术,浏览器记录保存会话,把数据和信息放在session中
比如一个网站登录,你上次登录过,下次就不用登录了

3.Cookie

1.从请求中拿到Cookie信息
2.服务器给客户端一个Cookie

Cookie[] cookies = req.getCookies();//获取Cookie
cookie.getName()//获得Cookiekey
cookie.getValue()//获得Cookie的值
Cookie cookie = new Cookie//新建Cookie
cookie.setMaxAge(24*60*60);//设置有效期
resp.addCookie(cookie);//服务器响应给客户端一个Cookie

一个Cookie保存一个信息
Cookie上限大小为4kb

4.session

1.Session将用户交互信息保存在了服务器端,ID是客户端第一次访问服务器的时候生成的,而且每个客户端是唯一的,这样就不用Cookie每次请求响应,ID就能在服务器取得所有的用户交互信息
2.服务端记录你来过,session起登记作用(个人理解)
3.例如,用户登陆了一个网站,这个用户就可以访问这个网站的整个内容

请求设置session源码

package com.wang.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 session extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html");
        req.setCharacterEncoding("utf-8");
        resp.setCharacterEncoding("utf-8");
        //请求Session
        HttpSession session = req.getSession();
        //设置Session的值
        session.setAttribute("name","jinnice");
        //得到Session的id
        String id = session.getId();
        if(session.isNew())
        {
            resp.getWriter().write("session是新的");
        }
        else
        {
            resp.getWriter().write("session已经创建"+id);
        }
    }
}

读取session源码

package com.wang.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 session02 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html");
        req.setCharacterEncoding("utf-8");
        resp.setCharacterEncoding("utf-8");
        //请求Session
        HttpSession session = req.getSession();
        //得到session中的值
        String name = (String) session.getAttribute("name");
        System.out.println(name);
    }
}

session手动注销

package com.wang.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 session03 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        HttpSession session = req.getSession();
        session.removeAttribute("name");
        session.invalidate();
    }
}

按时自动注销

 <session-config>
    <session-timeout>1</session-timeout>
  </session-config>

Cookie和Session的区别

Session储存在服务器端,相当于sessionid是给用户的一把钥匙,可以打开服务器存储的数据,session存在时间短

Cookie保存在浏览器端(可以存多个)

session对象由服务器创建

标签:Javaweb,resp,cookiea,session,Cookie,import,servlet,javax
From: https://www.cnblogs.com/jinnice/p/16634897.html

相关文章

  • 2022-8-29 javaweb 第一天 servlet/tomcat
    软件架构1、C/S架构:客户端/服务器--------QQ,Typora,腾讯会议。2、B/S架构:浏览器/服务器--------京东,爱奇艺,B站。资源分类静态资源:所有用户访问后,得到的结果都是一......
  • localStorage本地缓存与sessionStorage会话缓存的区别
    localStorage一般用来存储少量信息如登录token,localStorage的数据是永久的除非主动删除数据,否则即便关闭浏览器数据也不会消失存储的数据大小一般是5MBsessionStorage会......
  • 分布式系统的session共享问题
    目前大多数大型网站的服务器都采用了分布式服务集群的部署方式。所谓集群,就是让一组计算机服务器协同工作,解决大并发,大数据量瓶颈问题。但是在服务集群中,session共享......
  • php中设置session过期时间方法
    php中设置session过期时间方法-php手册-PHP中文网 https://www.php.cn/php-notebook-45754.html在apache与php的环境中默认过期时间是20分钟左右,那么我们要怎么设置ses......
  • 为什么需要 Cookie 和 Session,他们有什么关联?
    为什么需要Cookie和Session说起来为什么需要Cookie,这就需要从浏览器开始说起,我们都知道浏览器是没有状态的(HTTP协议无状态),这意味着浏览器并不知道是张三还是李四......
  • Django入门到放弃之session
    1.Django中Session相关方法#取值request.session['k1']request.session.get('k1',None)#request.session这句是帮你从cookie里面将sessionid的值取出来,将django-sess......
  • spring boot 分布式session实现
    springboot分布式session实现主要是通过包装HttpServletRequest将session相关的方法进行代理。具体是的实现就是通过SessionRepositoryFilter过滤器将HttpServletReque......
  • 什么是 Cookie 和 Session ?
    什么是Cookie和Session?什么是CookieHTTPCookie(也叫WebCookie或浏览器Cookie)是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器......
  • phpStudy的session文件存储在哪里
    最近学习session,根据老师所讲,session文件存储在c:\windows\temp文件夹,但是找不到,利用百度查找发现具体存储位置在php.ini中,而我用的集成开发环境是phpStudy,就打开相应的ph......
  • PHP的session垃圾回收机制
     session垃圾回收机制-wen_php-博客园 https://www.cnblogs.com/wenphp/p/4871500.html在PHP中,没有任何变量指向这个对象时,这个对象就成为垃圾。PHP会将其在内......