前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Java学习之Cookie与Session篇

Java学习之Cookie与Session篇

作者头像
全栈程序员站长
发布2022-07-13 19:26:19
发布2022-07-13 19:26:19
13500
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

Java学习之Cookie与Session篇

0x00 前言

到后面的学习中,其实大部分都是一些类的调用,只要清楚一些方法的使用。

0x01 Cookie

cookie 概念:客户端会话技术,将数据保存到客户端

常见方法:

代码语言:javascript
代码运行次数:0
复制
1. 创建Cookie对象,绑定数据
			* new Cookie(String name, String value) 
2. 发送Cookie对象
response.addCookie(Cookie cookie)

3. 获取Cookie,拿到数据
* Cookie[]  request.getCookies() 

4.* setMaxAge(int seconds)

正数:将Cookie数据写到硬盘的文件中。持久化存储。并指定cookie存活时间,时间到后,cookie文件自动失效

负数:默认值

零:删除cookie信息
		
5.* setPath(String path):设置cookie的获取范围。默认情况下,设置当前的虚拟目录
* 如果要共享,则可以将path设置为"/",cookie默认情况下不共享	

6. setDomain(String path):如果设置一级域名相同,那么多个服务器之间cookie可以共享

cookieservlet1代码:

代码语言:javascript
代码运行次数:0
复制
@WebServlet("/CookieServlet")
public class CookieServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    this.doGet(request,response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Cookie cookie = new Cookie("name","hello");
        cookie.setMaxAge(10);  //cookie 存储10秒
        cookie.setPath("/");  //设置共享

        response.addCookie(cookie);

    }

cookieservlet2代码:

代码语言:javascript
代码运行次数:0
复制
@WebServlet("/CookieServlet2")
public class CookieServlet2 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Cookie[] cookies = request.getCookies();
        for (Cookie cookie : cookies) {
            String name = cookie.getName();
            String value = cookie.getValue();
            System.out.println("cookie名"+name);
            System.out.println("cookie值"+value);
        }
    }
}

0x02 Session

服务器端会话技术,在一次会话的多次请求间共享数据,将数据保存在服务器端的对象中。

常用方法:

代码语言:javascript
代码运行次数:0
复制
 request.getSession()     :获取session对象
 
 
 session方法:
 
 Object getAttribute(String name)  
		void setAttribute(String name, Object value)
		void removeAttribute(String name)  

Cookie 和Session 不同的地方是 cookie是存在于客户端,而session是存在于服务器上。

如果客户端关闭后,服务端不关闭,session需要相同,则可以创建Cookie,键为JSESSIONID,设置最大存活时间,让cookie持久化保存。

代码语言:javascript
代码运行次数:0
复制
@WebServlet("/CookieServlet")
public class CookieServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    this.doGet(request,response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        HttpSession session = request.getSession();  //获取session对象
        Cookie cookie = new Cookie("JSESSIONID",session.getId());  //cookie传入session的值


        cookie.setMaxAge(10);  //cookie 存储10秒
        cookie.setPath("/");  //设置共享

        response.addCookie(cookie);

    }
}

由此可见,session是依赖于cookie的。

当服务器关闭后,会将session序列化到硬盘里面,重启的时候seesion文件会转换为内存中的session对象。

session默认的过期时间是30秒,如果需要设置可以到tomcat/conf/web.xml文件里面修改。

代码语言:javascript
代码运行次数:0
复制
<session-config>
		        <session-timeout>60</session-timeout>
		    </session-config>

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/119939.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021年12月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Java学习之Cookie与Session篇
    • 0x00 前言
    • 0x01 Cookie
    • 0x02 Session
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档