设置、获取cookie,设置cookie的过期时间

cookies
谷歌浏览器——f12——Application:应用信息——cookies
session保存在浏览器的cookie里
cookie是浏览器缓存,下次读取优先读取缓存
cookie是以key、value的形式存储的
cookie也是有过期时间:cookie.setMaxAge(0);设置cookie的过期时间
通过response设置cookie
session是通过request设置的

cookie是javax.servlet.http.cookie的包,别引错包

通过HttpServletResponse设置cookie,通过HttpServletRequest获取cookie

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@Controller
@RequestMapping("/test")
public class SpringBootTest {
//设置cookie
@RequestMapping("/test1")
public void test1(HttpServletResponse httpServletResponse){
    //使用cookie的构造方法,传key,value
    Cookie cookie=new Cookie("cookieName","cookie名称");
    //HttpServletResponse的addCookie方法设置cookie
    httpServletResponse.addCookie(cookie);
}


@RequestMapping("/test2")
//获取cookie,用request获取,参数请求用name
public @ResponseBody String test2(HttpServletRequest request,String name){
    //获取到的cookie是个数组,用数组接收
    Cookie [] cookies=request.getCookies();
    for (Cookie cookie:cookies){
        //获取与cookie相同的名称参数并返回该cookie的value
        if(cookie.getName().equalsIgnoreCase(name)){
            return cookie.getValue();
        }
    }
    return "cookie名称不匹配";
}
}

先请求设置cookie http://127.0.0.1:8080/test/test1 设置成功
后请求获取cookie http://127.0.0.1:8080/test/test2?name=cookieName 参数name的值与设置cookie的key相同返回value 不相同返回“cookie名称不匹配”

通过HttpServletResponse设置cookie,通过注解获取cookie

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CookieValue;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletResponse;

@Controller
@RequestMapping("/test")
public class SpringBootTest {
//设置cookie
@RequestMapping("/test1")
public @ResponseBody String test1(HttpServletResponse httpServletResponse){
    //使用cookie的构造方法,传key,value
    Cookie cookie=new Cookie("cookieName","cookie名称");
    //HttpServletResponse的addCookie方法设置cookie
    httpServletResponse.addCookie(cookie);
    return "cookie设置成功!!!";
}



@RequestMapping("/test2")
/**
 * 用注解@CookieValue,
 * 参数name的值与设置cookie的key相同才能取到设置的value,
 * 否则获取到的是defaultValue
 */
public @ResponseBody String test2
        (@CookieValue(name="cookieName",defaultValue = "默认的cookie值")String value) {
    return value+"!!!";
}
}

先请求设置cookie http://127.0.0.1:8080/test/test1
后请求获取cookie http://127.0.0.1:8080/test/test2

在springboot中可以设置一个全局的过期时间
在资源文件resource下的application.properties文件中设置
server.session.cookie.max-age=60单位是秒

猜你喜欢

转载自blog.csdn.net/qq_41767337/article/details/89257315
今日推荐