🙉专栏推荐:Java入门知识🙉
🐹今日诗词:青山一道同云雨,明月何曾是两乡🐹
目录
Cookie和Session
伪造Cookie
获取Cookie数据
传统方法获取Cookie编辑
使用注解获取Cookie
设置Session
简介获取Session信息
响应
访问静态页面
访问动态页面
@RestController和@Controller的区别
绝对路径和相对路径
@ResponseBody注解
返回HTML片段
返回Json数据
设置状态码
@RequestMapping注解(重点)
设置Content-Type
设置header
美图分享
⛳️点赞 ☀️收藏⭐️关注💬卑微小博主🙏
⛳️点赞 ☀️收藏⭐️关注💬卑微小博主🙏
Cookie和Session
HTTP协议是无状态的, 服务器不能持续跟踪用户的请求状态
无状态: 每次请求都是独立的, 相互之间没有任何影响, 就是做那种事之后就翻脸不认人,你是谁, 我们认识吗, 我有npy了.
为了弥补这一缺陷, Cookie和Session就被引入了, 用于帮助服务器跟踪用户状态, 管理用户信息, 身份验证, 会话数据
Cookie是存在客户端的小型文本文件
Session是存在服务器的
Cookie用于保存用户信息. 服务器将数据发送给浏览器, 浏览器会将这些数据保存下来并在之后的请求中自动发送回服务器. Cookie 是帮助服务器识别用户和保存用户偏好的一种方式
Session用于存储用户的会话数据,服务器为每个用户创建一个唯一的会话, 并在服务器端存储与该会话相关的信息. 浏览器只保存一个唯一的会话标识符(Session ID), 服务器通过该 ID 来识别和检索对应的会话数据
Cookie和Session数据的特点
Cookie 数据特点:
- 存储位置:客户端
- 长期有效:可设置过期时间
- 安全性较低: 一般存储一些不敏感, 安全性较低的数据, 因此容易被篡改攻击
- 存储信息类型: 如用户登录状态、偏好设置、网站主题、语言选择等
Session数据特点
- 存储位置:服务器端
- 持久性:短期有效
- 安全性较高
- 存储信息类型: Session 适合存储用户的敏感数据和复杂的状态信息,如用户身份、购物车信息、权限等。因为数据保存在服务器上,客户端无法直接访问这些信息
伪造Cookie
客户端的安全性不能说是十全十美, 只能说是聊胜于无(通辽语法), 因此十分容易伪造
方法1: Postman伪造
方法2: 通过浏览器伪造
通过Fiddler抓包查看Cookie数据文件
获取Cookie数据
获取Cookie数据有两个接口非常重要, 分别是HttpServletRequest, HttpServletResponse
HttpServletRequest: 接口方法可以获取Http请求的数据
HttpServletResponse: 接口方法可以获取Http响应的数据
传统方法获取Cookie
代码怎么写呢?
获取指定Key对应的Value值
使用注解获取Cookie
获取Cookie也可以通过@CookieValue注解获取Cookie数据的value值
@CookieValue: 从Cookie中获取指定数据的值
设置Session
设置Session一般通过HttpSession接口设置的
首先第一次连接服务器, 服务器会创建一个Session, 不然没有获取个蛋
有了SessionId之后, 后续客户端所有的请求都会带上Cookie
获取Session
也是通过HttpSession接口获取
执行, 发现日志啥也没有
解决办法: 先设置Session, 后面才能获取Session
简介获取Session信息
前面获取信息要写很多接口, 非常麻烦, 所以简介获取Session信息的方式应运而生
不仅如此还能简单获取Session中, "指定"的信息
方法: 通过@SessionAttribute注解
获取header
两种方式获取header, 这里以获取User-Agent为例
User-Agent: 用来标识客户端应用程序、操作系统、设备等信息
响应
访问静态页面
访问静态页面很简单, 只要知道文件在服务器的具体位置就能够访问了
那么如何通过项目访问静态页面呢?
访问动态页面
访问动态页面是通过控制器方法的方式访问页面, 静态访问是通过文件在服务器的地址访问的
@RestController和@Controller的区别
@Controller: 默认返回视图
@RestController: 默认返回数据
绝对路径和相对路径
避免出错, 建议统一使用绝对路径, 加斜杠的
@ResponseBody注解
这个注解既是类注解, 也是方法注解
加在类上, 表示该类下所有方法都返回 数据
加在方法上, 表示该方法返回 数据
返回HTML片段
返回HTML片段, 不是完整的HTML文件, 部分语句而已
返回Json数据
设置状态码
状态码是包含在响应里面, 因此我们可以通过HttpServletResponse接口方法设置状态码
@RequestMapping注解(重点)
这个注解使用频率分非常高, 下面是它的源码:
- value: 指定映射的URL
- method:指定请求的method类型,如GET,POST等
- Params:指定request中必须包含某些参数值时,才让该⽅法处理
- headers: 指定request中必须包含某些指定的header值,才能让该⽅法处理请求
- consumes:指定处理请求(request)的提交内容类型(Content-Type),例如application/json, text/html;
- produces: 指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回
设置Content-Type
我们通过设置produces属性的值,设置响应的报头Content-Type
设置header
header在响应里, 因此可以通过HttpServletResponse接口方法设置
美图分享
✨🎆谢谢你的阅读和耐心!祝愿你在编程的道路上取得更多的成功与喜悦!"🎆✨🎄
⭐️点赞收藏加关注,学习知识不迷路⭐️
🎉✔️💪🎉✔️💪🎉✔️💪🎉✔️💪🎉
👍😏⛳️点赞☀️收藏⭐️关注😏👍
👍😏⛳️点赞☀️收藏⭐️关注😏👍
👍😏⛳️点赞☀️收藏⭐️关注😏👍
🙆♂️🙆♂️🙆♂️🙆♂️🙆♂️🙆♂️🙆♂️🙆♂️🙆♂️🙆♂️🙆♂️🙆♂️🙆♂️