Cookie

什么是Cookie

  1. Cookie是服务器通知客户端保存键值对的一种技术。
  2. 客户端有了Cookie后,每次请求都发送给服务器
  3. 每个Cookie大小不能超过4kb

如何创建Cookie

Cookie cookie=new Cookie("key1111","value1111");
response.addCookie(cookie);

服务器如何获取Cookie

一行即可

Cookie[] cookies = request.getCookies();

如何修改cookie

方案一:

  1. 先创建一个要修改的同名的cookie对象,赋予其新的value值
  2. 调用response.addCookie(cookie); 通知客户端保存修改

方案二:

  1. 先查找到要修改的cookie对象
  2. 调用setValue()方法赋予新的cookie值
  3. 调用response.addCookie(cookie); 通知客户端保存修改

注意:
cookie值不能包含空格,方括号,圆括号,等号,逗号,双引号,斜杠,问号,@,冒号,分号

cookie的生命控制

管理cookie什么时候被删除

setMaxAge()

正值: 表示指定的秒数后删除
负数: 表示浏览器一关,cookie就会被删除
0: 表示马上删除cookie

cookie有效路径path的设置

  1. cookie的path属性可以 有效的过滤那些cookie可以发送给服务器,哪些不发。
  2. 其通过请求地址进行有效过滤

举例:

CookieA path=/工程路径
CookieB path=/工程路径/abc

请求地址如下:
http://ip:port/工程路径/a.html
CookieA 发送
CookieB 不发送

http://ip:port/工程路径/abc/a.html
CookieA 发送
CookieB 发送

免用户名登陆

最关键的代码是这行:(在用户名栏中默认填入cookie值)

用户名:<input type="text" name="username" value="${cookie.username.value}">

login.jsp页面如下 :

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <form action="http://localhost:8080/Cookie_session/loginServlet" method="get">
        用户名:<input type="text" name="username" value="${cookie.username.value}"> <br>
        密码:<input type="password" name="password"> <br>
        <input type="submit" value="登录">
    </form>
</body>
</html>

LoginServlet 如下 :

package com.zzq.cookie;

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 java.io.IOException;

public class LoginServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String username = req.getParameter("username");
        String password = req.getParameter("password");

        if ("haifan".equals(username) && "123456".equals(password)) {
            //登录 成功
            Cookie cookie = new Cookie("username", username);
            cookie.setMaxAge(60 * 60 * 24 * 7);//当前Cookie一周内有效
            resp.addCookie(cookie);
            System.out.println("登录 成功");
        } else {
//            登录 失败
            System.out.println("登录 失败");
        }

    }
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值