JSP——(8)Cookie

本文详细解析了Cookie的工作原理,包括服务端如何生成并发送Cookie至客户端,客户端如何存储及回传Cookie,以及Cookie在提高访问效率方面的应用。通过具体示例,如用户登录信息的保存,展示了Cookie的实际操作流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Cookie(客户端,不是内置对象)Cookie是由服务端生成的,在发送给客户端保存。相当于本地缓存作用。
作用:提高访问服务端的效率,但是安全性较差
Cookie 是存储在客户机的文本文件,它们保存了大量轨迹信息。在 Servlet 技术基础上,JSP 显然能够提供对 HTTP cookie 的支持。

应用:

  • 服务器脚本发送一系列 cookie 至浏览器。比如名字,年龄,ID 号码等等。
  • 浏览器在本地机中存储这些信息,以备不时之需。
  • 当下一次浏览器发送任何请求至服务器时,它会同时将这些 cookie 信息发送给服务器,然后服务器使用这些信息来识别用户或者干些其它事情。
    注意:
    a:cookie不是内对象,要使用必须new
    b:服务端会自动生成一个(服务端自动new一个cookie)name=JSESSIONID的cookie并返回给客户端

常用方法

序号方法 & 描述
1public void setMaxAge(int expiry) 设置 cookie 有效期,以秒为单位,默认有效期为当前session的存活时间
2public String getName() 返回 cookie 的名称,名称创建后将不能被修改
3public String getValue() 获取cookie的值

那么Cookie是怎么由服务端生成的,在发送给客户端保存?

步骤:
1:服务端准备Cookie——Cookie cookie = new Cookie(“key”,“value”); 调用 cookie 的构造函数,使用一个 cookie 名称和值做参数,它们都是字符串。
2:增加Cookie:response.addCookie();
3:页面跳转:
4:客户端获取cookie:request.getCookies();

演示:
getCookie.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
//客户端
Cookie []cookies=request.getCookies();//4:客户端获取cookie:request.getCookies();

for(Cookie cookie:cookies)
	
	out.println(cookie.getName()+"...."+cookie.getValue());

%>

</body>
</html>

addCookie.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    <%
    //服务端
    Cookie cookie1=new Cookie("zlj","1223345678");//1:服务端准备Cookie
    Cookie cookie2=new Cookie("lqx","111");

    response.addCookie(cookie1);// 2:增加Cookie:response.addCookie();
    response.addCookie(cookie2);
    
    //页面跳转
    response.sendRedirect("getCookie.jsp");//3:页面跳转
    %>
     

</body>
</html>

结果
在这里插入图片描述
这个结果说明:服务端会自动生成一个(服务端自动new一个cookie)name=JSESSIONID的cookie并返回给客户端

演示:记住用户名字,第一次登陆会记住你得名字,当你第二次登陆时,名字就还在那里
在这里插入图片描述
logging.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
      <%!
        
      String uname;
     
     %>
     <%
     boolean flag=false;
     Cookie []cookies=request.getCookies();
       for(Cookie cookie:cookies)
    	   
    	   if(cookie.getName().equals("uname")){
    			   
    			   uname=cookie.getValue();
    			   flag=true;
    	   }
       
       if(flag){
    	   out.println("uname:"+uname);
    	   
       }else{
    	   
    	   out.println("Cookiey已失效");

       }
     
     %>
   <form action="check.jsp" method="post">
    用户名:<input type="text" name="uname" value="<%=uname%>"></br>
    密码:<input type="password" name="upwd"></br>
    <input type="submit" value="登录"></br>
</body>
</html>

check.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
     
     <%
  String name= request.getParameter("uname");
  String pwd= request.getParameter("upwd");

  Cookie cookie=new Cookie("uname",name);
  response.addCookie(cookie);
  
  response.sendRedirect("remember.jsp");
  %>
</body>
</html>

remember.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

</body>
</html>

结果
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值