会话层技术-cookie
会话层技术cookie的使用
cookie拿下!
package com.atguigu.servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet(name = "ServletA", urlPatterns = "/ServletA")
public class ServletA extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//servletA演示客户端如何获得cookie对象
//用户第一次发请求,servlet创建Cookie对象
Cookie cookies1 = new Cookie("keya", "valuea");
Cookie cookies2 = new Cookie("keyb", "valueb");
//设置cookies1的存活时间
//cookies1.setMaxAge(0);//0是请求生成后立即删除,下次访问没有这个cookie
//cookies1.setMaxAge(-1);//负值是保存在浏览器中,只要开着,一直有
//cookies1.setMaxAge(30);//正值是保存在浏览器中有时间,若浏览器开着就到期结束,若关闭,再打开没到期的话还有
//但是对于上述三种方法,一旦清楚浏览器缓存,cookie将全部消失
/*设置cookie的提交路径
表示cookies1只能提交给ServletB,就是客户端发请求时,cookies1只能存在访问ServletB的请求中,访问其他的ServletA,
请求中不会有cookies1
*/
cookies1.setPath("/demo06/ServletB");
//将Cookie对象放入响应对象中,响应给客户端
response.addCookie(cookies1);
response.addCookie(cookies2);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
}
package com.atguigu.servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet(name = "ServletB", urlPatterns = "/ServletB")
public class ServletB extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//servletB演示如何在servelt中获取某个客户端已经携带的cookie
Cookie[] cookies = request.getCookies();//注意获取的时候,一般有多个cookie对象,需要用数组存储
if (cookies != null) {
for (Cookie a : cookies) {
System.out.println("获取到改该客户端携带的cookie名为" + a.getName() + "=" + a.getValue());
}
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
}
具体的讲述都在上述代码中。
简单谈一下学习这个cookie技术后,对其的自我理解
- 最重要的是理解cookie是什么,其简单来说就是一张身份证,购物卡,学生证等类似的性质。会话就是谈话的过程,会话层技术cookie把会话数据(像购物数据,身份数据,谈话内容都可称为会话内容)保存下来。
- 此外,cookie是一个类,他只有一个构造方法,这个构造方法决定了它创建对象时,必须把cookie的名字和值定义好,名字就是你自己给你的学生证起个别名,值就是你学生证的信息,差不多就是这个意思。
- 还有一点就是脑海中清楚cookie使用的过程以及为什么要用cookie技术。如果不用cookie技术,用户访问数据无法存储,使用cookie技术,可以让浏览器知道是哪个用户访问我,从而做出响应。浏览器第一次访问没有cookie,服务器会用servlet创建cookie对象,并把它返回给用户,之后再访问,服务器的请求中就有身份证了。ok。
- 最后再普及一个知识:浏览器和服务器的区别:
- 浏览器:简单理解为客户端的一个应用程序即可,它让用户可以使用这个应用程序访问网页中各种内容。
- 服务器:其是一个机器(主机),包含了硬件设备和软件设备,比如:一台装有tomcat软件的电脑就是一个服务器,tomcat是服务器软件(web服务器),有各种协议。
作者:yzh先生
博客:https://www.cnblogs.com/ZiJun
本文版权归作者和博客园共有,转载请在文章中注明原文链接:https://www.cnblogs.com/ZiJun/p/18487103 ,愿尊重劳动成果,谢谢!
若有关于博客内容的各种问题,欢迎在评论区讨论或发消息,让我们一起进步!