飓风算法恢复的网站,阿里wordpress,局域网即时通讯软件排名,西安seo网站关键词优化大家好#xff0c;我叫小帅今天我们来继续Spring Boot的内容。 文章目录 1. 获取JSON对象2. 获取URL中参数PathVariable3.上传⽂件RequestPart3. 获取Cookie/Session3.1 获取和设置Cookie3.1.1传统获取Cookie3.1.2简洁获取Cookie 3. 2 获取和存储Session3.2.1获取Session…
大家好我叫小帅今天我们来继续Spring Boot的内容。 文章目录 1. 获取JSON对象2. 获取URL中参数PathVariable3.上传⽂件RequestPart3. 获取Cookie/Session3.1 获取和设置Cookie3.1.1传统获取Cookie3.1.2简洁获取Cookie 3. 2 获取和存储Session3.2.1获取Session1使⽤ HttpServletRequest3.2.2简洁获取 Session(1) SessionAttribute(value username,required false)3.2.2简洁获取 Session(2) 4. 获取Header4.1传统获取 header4.2简洁获取 Header RequestHeader(User-Agent) 里面参数是header里面的键值对的Key 1. 获取JSON对象
接收JSON对象, 需要使⽤ RequestBody 注解作用是这个 方法或者类是返回正文
但是RestController RequestBody Controller所以我们使用RestController就可以。
代码
RestController
RequestMapping(/test)
public class test {//produces参数是返回JSON字符串RequestMapping(value /getUser, produces application/json)public String getUser() {User user new User(111111, 111111);return user.toString();//字符串的方式返回}//consumes参数是传过来JSON字符串可以是格式化的JOSN字符串RequestMapping(value /setUser,produces application/json, consumes application/json)public String setUser(String name, String password) {User user new User(name, password);return user.toString();}
}
后端正确接收了 通过Fiddler观察⼀下请求参数效果 get:
post: 2. 获取URL中参数PathVariable
path variable: 路径变量
和字⾯表达的意思⼀样, 这个注解主要作⽤在请求URL路径上的数据绑定 默认传递参数写在URL上SpringMVC就可以获取到.
后端实现代码
RequestMapping(/get/{name}/{password})public String method8(PathVariable String name,PathVariable(name) String password){return 解析路径name: name ,password: password;}是postman发送请求 3.上传⽂件RequestPart
后端代码实现: RequestMapping(getFile)public String pushFile(RequestPart(file) MultipartFile file) throws IOException {//获取文件名称String fileName file.getOriginalFilename();return fileName;}效果 上传成功了。 3. 获取Cookie/Session
理解cookie
HTTP 协议⾃⾝是属于 “⽆状态” 协议. “⽆状态” 的含义指的是: 默认情况下 HTTP 协议的客⼾端和服务器之间的这次通信, 和下次通信之间没有直接的联系.
但是实际开发中, 我们很多时候是需要知道请求之间的关联关系的. 例如登陆⽹站成功后, 第⼆次访问的时候服务器就能知道该请求是否是已经登陆过了. 上述图中的 “令牌” 通常就存储在 Cookie 字段中。 比如说我现在访问了csdn现在我又退了出去这个时候浏览器就自动保存了一个身份标识。 理解Session
我们先来了解⼀下什么是会话就是对话的意思。 会话是⼀个客⼾与服务器之间的不中断的请求响应. 对客⼾的每个请求服务器能够识别出请求来⾃于同⼀个客⼾. 当⼀个未知的客⼾向Web应⽤程序发送第⼀个请求时就开始了⼀个会话.当客⼾明确结束会话或服务器在⼀个时限内没有接受到客⼾的任何请求时会话就结束了.
Session是服务器为了保存⽤⼾信息⽽创建的⼀个特殊的对象.
服务器需要清楚的区分每个请求是属于哪个⽤⼾, 也就是属于哪个会话, 就需要在服务器这边记录每个会话以及与⽤⼾的信息的对应关系. Session的本质就是⼀个 “哈希表”, 存储了⼀些键值对结构. Key 就是SessionID, Value 就是⽤⼾信息(⽤⼾信息可以根据需求灵活设计). 当⽤⼾登陆的时候, 服务器在 Session 中新增⼀个新记录, 并把 sessionId返回给客⼾端. (通过HTTP 响应中的 Set-Cookie 字段返回).客⼾端后续再给服务器发送请求的时候, 需要在请求中带上 sessionId. (通过 HTTP 请求中的Cookie 字段带上).服务器收到请求之后, 根据请求中的 sessionId在 Session 信息中获取到对应的⽤⼾信息, 再进⾏后续操作.找不到则重新创建Session, 并把SessionID返回。 Cookie 和 Session 的区别
Cookie 是客⼾端保存⽤⼾信息的⼀种机制. Session 是服务器端保存⽤⼾信息的⼀种机制.Cookie 和 Session之间主要是通过 SessionId 关联起来的, SessionId 是 Cookie 和 Session 之间的桥梁。cookie 和 Session 经常会在⼀起配合使⽤. 但是不是必须配合。 完全可以⽤ Cookie 来保存⼀些数据在客⼾端. 这些数据不⼀定是⽤⼾⾝份信息, 也不⼀定是SessionId。Session 中的sessionId 也不需要⾮得通过 Cookie/Set-Cookie 传递, ⽐如通过URL传递. 3.1 获取和设置Cookie
3.1.1传统获取Cookie
代码 RequestMapping(/getCookie)public String method10(HttpServletRequest request, HttpServletResponse response){// 获取所有 cookie 信息Cookie[] cookies request.getCookies();//打印Cookie信息StringBuilder builder new StringBuilder();if (cookies!null){for (Cookie ck:cookies) {builder.append(ck.getName():ck.getValue());}}return Cookie信息:builder;}解释
Spring MVC是基于 Servlet API 构建的原始 Web 框架, 也是在Servlet的基础上实现的
HttpServletRequest , HttpServletResponse 是Servlet提供的两个类, 是Spring MVC⽅法的内置对象. 需要时直接在⽅法中添加声明即可.
HttpServletRequest对象代表客⼾端的请求, 当客⼾端通过HTTP协议访问服务器时HTTP请求头中的所有信息都封装在这个对象中通过这个对象提供的⽅法可以获得客⼾端请求的所有信息.
HttpServletResponse对象代表服务器的响应. HTTP响应的信息都在这个对象中, ⽐如向客⼾ 端发送的数据, 响应头, 状态码等. 通过这个对象提供的⽅法, 可以获得服务器响应的所有内容
看看效果 此时没有设置Cookie, 通过浏览器访问: http://127.0.0.1:8080/test/getCookie,得到Cookie为null
我们设置⼀下Cookie的值键盘f12 再次访问 从这个例⼦中, 也可以看出Cookie是可以伪造的, 也就是不安全的, 所以使⽤Cookie时, 后端需要进⾏Cookie校验 3.1.2简洁获取Cookie RequestMapping(/getCookie2)public String cookie(CookieValue(cdm) String cdm) {return Cookie: cdm;}效果
3. 2 获取和存储Session
Session是服务器端的机制, 我们需要先存储, 才能再获取 Session 也是基于HttpServletRequest 来存储和获取的
Session的存储 代码
//存储SessionRequestMapping(/setSession)public String setSession(HttpServletRequest request) {// 获取Session对象HttpSession session request.getSession();if (session ! null) {session.setAttribute(username, java);}return session 存储成功;}解释
void setAttribute(String name, Object value): 使⽤指定的名称绑定⼀个对象到该 session 会话
效果 获取Session
获取Session有两种⽅式 HttpSession getSession(boolean create);HttpSession getSession(); HttpSession getSession(boolean create): 参数如果为 true, 则当不存在会话时新建会话; 参数如果为 false, 则当不存在会话时返回 null HttpSession getSession(): 和getSession(true) 含义⼀样, 默认值为true 3.2.1获取Session1使⽤ HttpServletRequest //存储SessionRequestMapping(/setSession)public String setSession(HttpServletRequest request) {// 获取Session对象HttpSession session request.getSession();if (session ! null) {session.setAttribute(username, java);}return session 存储成功;}//获取sessionRequestMapping(/getSession)public String session(HttpServletRequest request) {// 如果 session 不存在, 不会⾃动创建HttpSession session request.getSession(false);String username null;if (session ! null session.getAttribute(username) ! null) {username (String) session.getAttribute(username);}return username username;}Object getAttribute(String name): 返回在该 session 会话中具有指定名称的对象如果没有指定名 称的对象则返回 null. HttpServletRequest request 如果 session 不存在, 不会⾃动创建
效果 3.2.2简洁获取 Session(1) SessionAttribute(value “username”,required false)
代码 //获取sessionRequestMapping(/getSession2)public String getSession2(SessionAttribute(value username,required false)String username) {//获取到session字符串直接返回return username username;}
解释:value是获取username的值required是没有Session对象时不创建返回null 效果 3.2.2简洁获取 Session(2)
代码 //获取sessionRequestMapping(/getSession3)public String getSession3(HttpSession session) {//获取到session对象String username (String)session.getAttribute(username);return username username;}解释HttpSession session获取到session对象 效果 4. 获取Header
4.1传统获取 header
获取Header也是从 HttpServletRequest 中获取
效果 通过Fiddler观察, 获取的User-Agent是否正确 4.2简洁获取 Header RequestHeader(“User-Agent”) 里面参数是header里面的键值对的Key 比如说获取User-Agent:
代码 //获取headerRequestMapping(/getUserAgent2)public String getUserAgent2(RequestHeader(User-Agent) String userAgent) {return User-Agent userAgent;}再比如获取Host 好了今天就到在这里感谢观看。