丹阳企业网站建设,织梦免费企业网站,久久建筑网西瓜视频,网站源码库阿华代码#xff0c;不是逆风#xff0c;就是我疯 你们的点赞收藏是我前进最大的动力#xff01;#xff01; 希望本文内容能够帮助到你#xff01;#xff01; 目录
一#xff1a;实践
1#xff1a;获取URL中的参数
#xff08;1#xff09;PathVariable
2… 阿华代码不是逆风就是我疯 你们的点赞收藏是我前进最大的动力 希望本文内容能够帮助到你 目录
一实践
1获取URL中的参数
1PathVariable
2上传文件
1普通写法
2RequestPart 3注意
二获取Cookie和Session
1状态
2Cookie
编辑 3Session
4两者区别
5获取Cookie代码实现
1普通代码
2lambda表达式
3注解形式 6Cookie造假
7Session存储
0获取session
1第一次发送请求
2构架Session对象
3第二次请求
8Seesion读取 9精华总结
1公共部分提取
2提取公共部分封装成HttpSession
3封装获取属性 一实践
1获取URL中的参数
1PathVariable
路径变量这个注解主要作⽤在请求URL路径上的数据绑定
默认传递参数写在URL上SpringMVC就可以获取到
注意①请求路径中不能再{password}对应的地方写个字符串类型尽管url是字符串类型但是最后到服务器上转化为的是Integer类型
注意②下面这段代码中括号中的参数是连续赋值的这样一个过程
RequestMapping(m1/{password}/{name})public String m1(PathVariable(password) Integer id , PathVariable(name) String name){return id是 id name是 name;} 2上传文件
1普通写法
RequestMapping(m2)public String getfile(MultipartFile file){String fileName file.getOriginalFilename();return 接受到的文件的名称为 fileName;} 2RequestPart
RequestPart这个注解可以作为中间商进行传参
RequestMapping(m2)public String getfile(RequestPart(fileTemp) MultipartFile file){String fileName file.getOriginalFilename();return 接受到的文件的名称为 fileName;} 3注意
上传的文件体积可能会过大此时就要注意看日志了往往错误的日志信息才是提升自己代码能力的关键
二获取Cookie和Session
1状态
理解状态和无状态HTTP是一种无状态协议什么是无状态呢
无状态在服务器和客户端的连接中不保存对端信息。在下一次再连接时需要再次验证身份。
有状态类似第一次去医院需要办理一张就诊卡把身份信息登记一下再看病。第二次再去医院的时候直接刷卡工作人员就知道你是谁了不需要再走登记身份信息的流程了
实际开发中, 我们很多时候是需要知道请求之间的关联关系的 2Cookie
下述图中的 令牌 通常就存储在 Cookie 字段中 此时在服务器这边就需要记录令牌信息, 以及令牌对应的⽤⼾信息, 这个就是 Session 机制所做的⼯作. 3Session
服务器同⼀时刻收到的请求是很多的. 服务器需要清楚的区分每个请求是从属于哪个⽤⼾, 也就是属于哪个会话, 就需要在服务器这边记录每个会话以及与⽤⼾的信息的对应关系. Session是服务器为了保存⽤⼾信息⽽创建的⼀个特殊的对象 Session的本质就是⼀个 哈希表, 存储了⼀些键值对结构. Key 就是SessionID, Value 就是⽤⼾信息(⽤⼾信息可以根据需求灵活设计). 1模拟具体流程 ①当⽤⼾登陆的时候, 服务器在 Session 中新增⼀个新记录, 并把 sessionId返回给客⼾端. (通过 HTTP 响应中的 Set-Cookie 字段返回). ②客⼾端后续再给服务器发送请求的时候, 需要在请求中带上 sessionId. (通过 HTTP 请求中的 Cookie 字段带上). ③服务器收到请求之后, 根据请求中的 sessionId在 Session 信息中获取到对应的⽤⼾信息, 再进⾏后续操作.找不到则重新创建Session, 并把SessionID返回 Session 默认是保存在内存中的. 如果重启服务器则 Session 数据就会丢失 4两者区别 ①Cookie 是客⼾端保存⽤⼾信息的⼀种机制. Session 是服务器端保存⽤⼾信息的⼀种机制 ②Cookie 和 Session之间主要是通过 SessionId 关联起来的, SessionId 是 Cookie 和 Session 之间的桥梁 ③Cookie 和 Session 经常会在⼀起配合使⽤. 但是不是必须配合. ④完全可以⽤ Cookie 来保存⼀些数据在客⼾端. 这些数据不⼀定是⽤⼾⾝份信息, 也不⼀定是 SessionId ⑤Session 中的sessionId 也不需要⾮得通过 Cookie/Set-Cookie 传递, ⽐如通过URL传递. 5获取Cookie代码实现 1普通代码 RequestMapping(m3)public String m3(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;}2lambda表达式 RequestMapping(m3_5)public String m3_5(HttpServletRequest request , HttpServletResponse response){Cookie[] cookies request.getCookies();if(cookies ! null){Arrays.stream(cookies).forEach(ck- System.out.println(ck.getName() ck.getValue()));}return 获取Cookie;} 3注解形式 RequestMapping(m3.2)public String m3_2(CookieValue(bite) String bite){return bite: bite;} Spring MVC是基于 Servlet API 构建的原始 Web 框架, 也是在Servlet的基础上实现的 HttpServletRequest , HttpServletResponse 是Servlet提供的两个类, 是Spring MVC⽅法的内置对象. 需要时直接在⽅法中添加声明即可. HttpServletRequest 对象代表客⼾端的请求, 当客⼾端通过HTTP协议访问服务器时HTTP请 求头中的所有信息都封装在这个对象中通过这个对象提供的⽅法可以获得客⼾端请求的所有信 息. HttpServletResponse 对象代表服务器的响应. HTTP响应的信息都在这个对象中, ⽐如向客⼾ 端发送的数据, 响应头, 状态码等. 通过这个对象提供的⽅法, 可以获得服务器响应的所有内容 6Cookie造假 从这个例⼦中, 也可以看出Cookie是可以伪造的, 也就是不安全的, 所以使⽤Cookie时, 后端需要进⾏Cookie校验 7Session存储
0获取session
获取Session有两种⽅式 HttpSession getSession(boolean create); HttpSession getSession(); HttpSession getSession(boolean create) : 参数如果为 true, 则当不存在会话时新建会话; 参数如果 为 false, 则当不存在会话时返回 null HttpSession getSession(): 和getSession(true) 含义⼀样, 默认值为true. void setAttribute(String name, Object value): 使⽤指定的名称绑定⼀个对象到该 session 会话 public String m4(HttpServletRequest request){HttpSession session request.getSession();if(session ! null){session.setAttribute(username,java);}return session存储成功;} 简洁获取Session ①通过注解SessionAttribute获取 先调用m6方法获取session为null在调用m4方法存储session在调用m6 RequestMapping(m6)public String m6(SessionAttribute(value username , required false) String username){return m6方法中返回的username参数为 username;}②通过Spring MVC内置对象HttpSession 来获取 RequestMapping(m7)public String m7(HttpSession session){String username (String) session.getAttribute(username);return m7方法中返回的username参数为 username;} 1第一次发送请求 2构架Session对象 可以看到, Http请求时, 把SessionId通过Cookie传递到了服务器 3第二次请求 8Seesion读取
读取 Session 可以使⽤ HttpServletRequest Object getAttribute(String name): 返回在该 session 会话中具有指定名称的对象如果没有指定名 称的对象则返回 null RequestMapping(m5)public String m5(HttpServletRequest request){HttpSession session request.getSession(false);String username null;if(session ! null session.getAttribute(username) ! null ){username (String)session.getAttribute(username);}return username: username;} 运行服务器先用浏览器m5链接再访问m4链接最后再访问m5.可以看到下面这个有趣的现象 9精华总结 客户端第一次发送请求给服务器的时候会把自己的信息存储在请求中的Cookie字段中服务器接收到请求后进行解析用session存下来Cookie中解析后的用户信息然后把“令牌”保存在响应的set-Cookie字段中并返回给客户端客户端接受到响应之后下一次请求直接拿着“令牌”就可以了 1公共部分提取 2提取公共部分封装成HttpSession 3封装获取属性