Java学习之Cookie与Session篇

Java学习之Cookie与Session篇0x00前言到后面的学习中,其实大部分都是一些类的调用,只要清楚一些方法的使用。0x01Cookiecookie概念:客户端会话技术,将数据保

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

Java学习之Cookie与Session篇

0x00 前言

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

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

常见方法:

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代码:


@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代码:

@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

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

常用方法:

 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持久化保存。


@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文件里面修改。


<session-config>
		        <session-timeout>60</session-timeout>
		    </session-config>

0x03 结尾

结尾处就贴张图吧!

 Java学习之Cookie与Session篇

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • jdbc和数据库连接池_数据库连接池满了

    jdbc和数据库连接池_数据库连接池满了数据库连接池JDBC数据库连接池的必要性在使用开发基于数据库的web程序时,传统的模式基本是按照以下步骤:在主程序(如servlet beans)中建立数据库连接进行sql操作断开数据库连接这种模式开发,存在的问题:普通的JDBC数据库连接使用DriverManager来获取,每次向数据库建立连接的时候都要将Connection加载到内存中,再验证用户名和密码(大概花费0.05s-1s),需要数据库连接的时候,就向数据库要求一个,执行完成后再断开。这样的方式将会消耗大量的时间。数据库的

    2022年8月8日
    23
  • 红外传感器型号和参数_红外传感器参数

    红外传感器型号和参数_红外传感器参数1、组成:红外线传感器包括光学系统、检测元件和转换电路。2、分类:光学系统按结构不同可分为透射式和反射式两类。检测元件按工作原理可分为热敏检测元件和光电检测元件。热敏元件应用最多的是热敏电阻。热敏电阻受到红外线辐射时温度升高,电阻发生变化,通过转换电路变成电信号输出。光电检测元件常用的是光敏元件,通常由硫化铅、硒化铅、砷化铟、砷化锑、碲镉汞三元合金、锗及硅掺杂等材料制成。(1)红外线传感器依动作可…

    2022年5月25日
    52
  • MySQL索引原理以及查询优化「建议收藏」

    一、介绍1.什么是索引?一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语

    2022年3月29日
    54
  • 列举出linux文件和目录常用的命令_linux常用命令

    列举出linux文件和目录常用的命令_linux常用命令目录命令总览ls(英文全拼:listfiles):列出目录及文件名cd(英文全拼:changedirectory):切换目录pwd(英文全拼:printworkdirectory):显

    2022年7月31日
    6
  • RabbitMQ(七):常用方法说明 与 学习小结

    RabbitMQ(七):常用方法说明 与 学习小结

    2021年10月5日
    40
  • armv7在哪儿看(armv7s)

    iOS中的armv7,armv7s,arm64,i386,x86_64都是什么在做静态库的时候以及引用静态库的时候经常会遇到一些关于真机模拟器不通用的情况,会报错找不到相应库导致编译失败,这里简单记录一下各种设备支持的架构。iOS测试分为模拟器测试和真机测试,处理器分为32位处理器,和64位处理器,模拟器32位处理器测试需要i386架构,(iphone5,iphone5s以下的模拟器…

    2022年4月11日
    43

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号