spring和cookie

本文介绍如何利用Cookie实现网站用户的免登录功能,并探讨了通过令牌机制解决页面刷新带来的数据重复提交问题。

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

<% 
  Cookie cookie = new Cookie("username","zhangsan");
  //永久性cookie
  cookie.setMaxAge(3600*24*7);
  response.addCookie(cookie);
  %>
  <% 
Cookie[] cookies = request.getCookies();
//KEY-VALUE - cookie对象  1 1
for (Cookie coo : cookies){
System.out.println(coo.getName()+"--"+coo.getValue());
}
%>
cookie 正常是无法跨越站点的
http://localhost/web->cookie  usernamex
http://localhost/java
web->cookie
java做不到
cookie能做什么?
(1)免登录
购买购物车 session ->服务器 session没 永久性 1小时 3600
cookie 备份服务器 宕机了 死机了
1.防刷新 新增
新增 修改 删除  查询
刷新
向服务器产生一次新的请求,
但是请求的数据是上次产生请求时产生的
刷新对新增的影响 : 如何解决
通过程序解决
iframe
frameset
不能让用户不能刷新
不能破坏正常业务流程
如何区分哪些正常提交和刷新提交的数据
刷新的数据是不会变化的   时间值
提交数据
提交
2个  传递  参考比较值(每次走流程时产生的) 刷新  新增
令牌机制
通关令牌
2
1
刷新问题
验证作用的


验证系统


用户名
密码




权限




进入系统的服务器  令牌机制   参考值 传递值


http://localhost//quanxian1 参考值    2


http://localhost//quanxian2


http://localhost//yewu  参考值 传递值    1==1


http://localhost//yewu ?传递值=1


http://localhost//yewu ?传递值=1 1==2
数据库
技巧
财务系统
申请报销单
总单
详单
表格式
出发日期  起始地  到达日期 到达地  交通方式 价格 单位 说明 发票类型
 1980-1-1
 1980-1-2
出发日期
起始地
到达日期


1980-1-2
1980-1-1








动态表 竖表




灵活扩展性


行 列






















### 如何在 Spring 框架中实现 Cookie 功能 为了在 Spring 应用程序中处理 Cookies,可以利用 `@CookieValue` 注解读取客户端发送过来的 cookie 值,并通过 HttpServletResponse 对象设置新的 cookies 或更新现有 ones。 当需要向响应中添加一个新的 cookie 时,在控制器的方法内获取到 `HttpServletResponse` 参数并创建一个 `Cookie` 实例: ```java import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletResponse; @RequestMapping("/set-cookie") public String setCookie(HttpServletResponse response) { // 创建cookie对象 Cookie cookie = new Cookie("user", "JohnDoe"); // 设置过期时间(秒), 这里是一天 cookie.setMaxAge(86400); // 将路径设为根目录, 让整个应用都能访问此cookie cookie.setPath("/"); // 添加至HTTP响应头 response.addCookie(cookie); return "redirect:/"; } ``` 如果想要从请求中读取已有的 cookie,则可以在处理器方法签名处声明参数并标注 `@CookieValue` 来指定要查找的具体名称: ```java import org.springframework.web.bind.annotation.CookieValue; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.stereotype.Controller; @Controller public class MyController { @RequestMapping("/read-cookie") public String readCookie(@CookieValue(value="user", defaultValue="Guest") String user){ System.out.println(user); // 输出用户的值或默认值 Guest return "index"; // 跳转视图页面 } } ``` 上述代码展示了如何操作 HTTP 请求中的 cookies。对于更复杂的场景,比如加密存储敏感数据或者跨域共享 cookies 等情况,则可能涉及到额外的安全措施技术细节[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值