农产品网站设计方案百姓网网站源码

web/2025/10/7 7:17:36/文章来源:
农产品网站设计方案,百姓网网站源码,wordpress 新闻门户,wordpress中文客户端Cookie和Session简介。 Spring MVC的 2.请求 Cookie的设置和两种获取方式 Session的设置和三种获取方式。 3.响应 1.返回静态页面 2.返回数据 3.返回HTML片段 4.返回JSON 5.设置状态码 6.设置header 三、#xff08;接上文#xff09;SpringMVC剩余基本操作 3.2postman请求 … Cookie和Session简介。 Spring MVC的 2.请求 Cookie的设置和两种获取方式 Session的设置和三种获取方式。 3.响应 1.返回静态页面 2.返回数据 3.返回HTML片段 4.返回JSON 5.设置状态码 6.设置header 三、接上文SpringMVC剩余基本操作 3.2postman请求 3.2.10 获取Cookie和Session 1.理解Cookie 我们知道HTTP协议自身是“无状态”协议。 无状态 的含义指的是: 默认情况下 HTTP 协议的客⼾端和服务器之间的这次通信和下次通信之间没有直接的联系. 实际开发中我们很多时候需要知道请求之间的关联关系。 例如登陆网站成功后,第二次访问的时候服务器就能知道该请求是否是已经登陆过了. 当用户输入用户名和密码点击登录后服务器响应这时候登陆成功后服务器会给用户一个“令牌”这样下次用户再访问就会带上“令牌”。服务器就知道这个用户已经登陆过了。 令牌 通常就存储在 Cookie 字段中. 此时在服务器这边就需要记录令牌信息,以及令牌对应的用户信息,这个就是 Session 机制所做的工作. 2.理解Session 此时在服务器这边就需要记录令牌信息,以及令牌对应的用户信息,这个就是 Session 机制所做的工作. Session就是会话的意思比如10个浏览器请求同一个服务器同样的进程。那么就会产生10个会话。这10个会话服务器会通过Session来分辨出会话是哪个浏览器请求的。 服务器同⼀时刻收到的请求是很多的.服务器需要清楚的区分每个请求是从属于哪个用户,也就是属于哪个会话,就需要在服务器这边记录每个会话以及与用户的信息的对应关系. Session是服务器为了保存用户信息而创建的⼀个特殊的对象. Session的本质就是⼀个 哈希表,存储了⼀些键值对结构.Key就是SessionID,Value就是用户信息(用户信息可以根据需求灵活设计)。 SessionID就是由服务器生成的“唯一性”字符。从Session机制角度看来这个唯一性字符就是SessionID。如果站在登录流程中看待也可以把这个唯一性字符称作“token”。 3.Cookie 和 Session之间的关系。举例 举一个生活中的例子新生入学学校会收录学生信息存储在教务系统并为每一个学生设定学号 存储学生信息示例如下 001        张三        18        计科1班 002        李四        19        计科1班 003        王五        18        计科1班 这里的信息就相当于Session 而学校存储信息之后会给学生发学生证。 出入校园使用学生证来证明学生身份。 这里的学生证就相当于Cookie 注意 学生证Cookie是可以造假。 教务系统信息Session一定是真的 4.Cookie和session的区别 5.获取Cookie 两种方式 ①传统写法可获取所有Cookie RestController RequestMapping(/request) public class RequestController {/*** 传统方法获取Cookie* 每个方法都内置了HttpServletRequest request/HttpServletResponse response对象* param request* param response* return*/RequestMapping(/getCookie)public String getCookie(HttpServletRequest request, HttpServletResponse response){Cookie[] cookies request.getCookies();//通过这种方式可以获取Cookie//我们使用lambda表达式的方式来打印Cookie。这种写法可以先了解一下。 // Arrays.stream(cookies).forEach(x-{ // System.out.println(x.getName() : x.getValue()); // });//等价于使用foreach循环来打印Cookiefor (Cookie c: cookies){System.out.println(c.getName():c.getValue());}return 获取Cookie成功;} } 注意如果Cookie为空会报异常。因此写法如下。  RequestMapping(/getCookie)public String getCookie(HttpServletRequest request, HttpServletResponse response){Cookie[] cookies request.getCookies();//通过这种方式可以获取Cookie //使用foreach循环来打印Cookieif(cookies ! null){for (Cookie c: cookies){System.out.println(c.getName():c.getValue());}return 获取Cookie成功;}return Cookie为空;} 运行结果  当我们添加Cookie之后刷新一下 Cookie也被打印在控制台上。从这里也可以看出Cookie是可以造假除了通过浏览器造假通过Postman也是可以造假的。  ②Spring Boot写法CookieValue注解获取指定Cookie 我们使用postman添加几个Cookie当我们使用传统方式打印Cookie 我们得到了所有的Cookie。但是当我们用SpringBoot方式打印。我们只能通过注解  CookieValue来或者指定key值的cookie。 RequestMapping(getCookie2)public String getCookie2(CookieValue(yang)String yang){return yang:yang;}因此使用这两种方法取决于你想要获取 全部Cookie还是 只获得某些Cookie 6.获取Session ①传统写法 RequestMapping(setSession)public String setSession(HttpServletRequest request){HttpSession session request.getSession();session.setAttribute(student,zzx);return 设置Session成功;}RequestMapping(getSession)public String getSession(HttpServletRequest request){HttpSession session request.getSession(); //默认值为ture如果Session为null就创建一个空的SessionString student (String) session.getAttribute(student);return 登录用户student;} http://127.0.0.1:1208/request/setSession http://127.0.0.1:1208/request/getSession ②SpringBoot写法 I.直接使用内置对象HttpSession session获取Session。 RequestMapping(getSession2)public String getSession(HttpSession session){String student (String) session.getAttribute(student);return 登录用户student;} II.使用注解 SessionAttribute RequestMapping(getSession3)public String getSession(SessionAttribute(student)String student){return 登录用户student;} 虽然这样写如下代码非常的简短但是也有一个问题就是如果直接getSession。会报错  没有找到student这个类型。这是因为加了注解之后这个参数就变成了必传参数因此不能为空。 如何修改呢如下 SessionAttribute(value student,required false) RequestMapping(getSession3)public String getSession(SessionAttribute(value student,required false)String student){return 登录用户student;} 此时就不报错了。  3.2.11 获取Header 我们请求打印Header。中的 User-Agent 的信息。 它表示用的哪个客户端去请求的。 ①传统方式 RequestMapping(/getHeader)public String getHeader(HttpServletRequest request){String userAgent request.getHeader(User-Agent);return userAgent:userAgent;} ②SpringBoot方式RequestHeader注解  RequestMapping(/getHeader2)public String getHeader2(RequestHeader(User-Agent)String userAgent){return userAgent:userAgent;} 上图当我们使用Postman请求。  上图当我们使用浏览器请求。   我们只想获取Header信息中的其中的一个使用SpringBoot方式很方便。 当我们想要获取多个内容使用SpringBoot方式就需要写很多参数。 因此我们可以使用传统方式更加方便的获取。 请求完结。 3. 3响应: 在响应中我们有以下操作 1.返回静态页面 2.返回数据 3.返回HTML片段 4.返回JSON 5.设置响应头状态码编码或者其他header 我们可以 使用Fiddler来查看请求和响应的数据 执⾏了业务逻辑之后要把程序执⾏的结果返回给⽤⼾,也就是响应. 1.返回静态页面页面 首先要有一个静态页面 创建前端页面index.html(注意路径)。 如果要访问的目录在静态目录static下面还有其他目录那么路径url中需要带上这个目录 Controller RequestMapping(/return) public class ReturnController {RequestMapping(/r1)public String r1(){return /index.html;} } 注意  1.在SpringBoot中。RequestMapping中的/是可以被省略的。而return中的/不能省略。 2.当我们想要访问静态页面时我们需要把原先 RestController注解改为Controller RestController注解与Controller的区别和联系 想要返回数据使用RestController 想要返回页面使用Controller RestController  ResponseBody Controller Controller告诉Spring帮我们管理哪些程序默认返回的是页面 ResponseBody表示返回数据 我们看看注解RestController的源码 Target({ElementType.TYPE}) Retention(RetentionPolicy.RUNTIME) Documented Controller ResponseBody public interface RestController {AliasFor(annotation Controller.class)String value() default ; } 注解解释  Target表示注解的使用范围如上ElementType.TYPE 表示注解只能修饰类 Retention表示注解的生命周期 我们看看注解Controller的源码 Target({ElementType.TYPE}) Retention(RetentionPolicy.RUNTIME) Documented Component public interface Controller {AliasFor(annotation Component.class)String value() default ; } 2.返回数据 ResponseBody注解 源码 Target({ElementType.TYPE, ElementType.METHOD}) Retention(RetentionPolicy.RUNTIME) Documented public interface ResponseBody { } 表示返回数据。响应正文里面的内容。 这里区别RequestBody是请求正文里面的内容。接收JSON的时候我们经常用到。 它既可以修饰类也可以修饰方法。 修饰类表示该类所有的方法返回的都是数据 修饰方法表示该方法的返回都是数据。 示例 ResponseBodyRequestMapping(/r2)public String r2(){return hello SpringMVC我是返回的数据;} ps关于路径中是否有项目名一个项目部署多个服务/部署多个项目 3.返回HTML片段数据 ResponseBodyRequestMapping(/r3)public String r3(){return h1hello SpringMVC我是HTML片段/h1;} 注意这里文本类型是html。 content-Typetext/html 无论返回的是页面还是数据。content-Type类型都是html 如果让它返回JSON呢请往下看。 psget和post的区别 get可以被缓存get是幂等的。不管什么时候请求得到响应是一样的。 post不可以被缓存。 4.返回JSON对象哈希表等键值对格式 JSON通常也是表示对象我们返回一个对象试试。 ResponseBodyRequestMapping(/r4)public UserInfo r4(){UserInfo userInfo new UserInfo();userInfo.setName(zzx);userInfo.setId(9);userInfo.setAge(18);return userInfo;} 如上如我们返回对象成功返回了JSON类型的文本。  content-Typeapplication/json  ResponseBodyRequestMapping(/r5)public MapString,String r5(){HashMap map new HashMap();map.put(k1,v1);map.put(k2,v3);map.put(k3,v3);return map;} content-Typeapplication/json  如上如使用Map也成功返回了JSON类型的文本。  RequestMapping(/r6)public String r6(){return /a.js;} content-Typeapplication/javascript 成功返回了页面a.js RequestMapping(/r7)public String r7(){return /b.css;} content-Typetext/css 成功返回了页面b.css 总结 在SpringBoot中 content-Type  不需要我们自己设置。 会自动根据我们的返回的结果自行设置。 5.设置状态码HttpServletResponse 状态码的设置不影响页面的展示。 错误显示可以自定义的图。也有很多公共的页面格式。 ResponseBodyRequestMapping(/r8)public String r8(HttpServletResponse response){response.setStatus(401);return 设置状态成功;} 6.设置Header了解 Http响应报头也会向客户端传递⼀些附加信息, 比如服务程序的名称,请求的资源已移动到新地址等 如:Content-Type、Local等. 这些信息通过RequestMapping注解的属性来实现 先来看RequestMapping的源码: Target({ElementType.TYPE, ElementType.METHOD}) Retention(RetentionPolicy.RUNTIME) Documented Mapping public interface RequestMapping {String name() default ;AliasFor(path)String[] value() default {};AliasFor(value)String[] path() default {};RequestMethod[] method() default {};String[] params() default {};String[] headers() default {};String[] consumes() default {};String[] produces() default {}; } 简单了解一下它的属性了解就好不用记 1.value:指定映射的URL 下面这些属性更多的是对请求的限制 2.method:指定请求的method类型,如GET,POST等 3.consumes:指定处理请求(request)的提交内容类型(Content-Type)例如application/json、text/html; 4.produces:指定返回的内容类型仅当request请求头中的(Accept)类型中包含该指定类型才返回 5.Params:指定request中必须包含某些参数值时才让该方法处理 6.headers:指定request中必须包含某些指定的header值才能让该方法处理请求 我们前面了解到在Spring中content-Type的类型不需要我们自己设置不过在工作中可能有时候还需要我们设置。 而且有些 Header 是自定义的。 什么都没写的时候我们发现只有 这样的如 Content-Type: Content-Length: Data: Keep-Alive: Connection: 但是我们访问其他网站就会发现会有许多。有些就是他们自定义的。 设置Content-Typeproduce属性 SpringBoot给我们默认的是 text/html 类型。要想我们自定义我们就要用到 RequestMapping的produce属性。下面是我们给它设置成json的代码 ResponseBodyRequestMapping(value /r9,produces application/json)public String r9(){return 自定义Header中的Content-Type成功;} 那么我们返回的本身就不是json如果不自定义那么就是text/html 什么时候会使用这种情况呢 比如当我们返回{ok:1}这串数据是json格式但是Spring这里默认还是html。这样就可以会对前端造成一定的影响。不过现在前端框架也更新了可以自动识别为json 通过这样我们也可以在后面写 RequestMapping(value /r9,produces application/json;charset utf-8) 因此也可以同步的设置编码。 自定义HeaderHttpServletResponse  ResponseBodyRequestMapping(value /r10)public String r10(HttpServletResponse response){response.setHeader(myHeader,myHeaderValue);return 自定义Header成功;} 这就多了一个 myHeadermyHeaderValue 对于SpringMVC来说掌握了以上3个功能建立链接请求响应就相当于掌握了SpringMVC.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/88342.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

树苗网站源码网站建设方案 流程

引言: 北京时间:2024/3/19/11:16,若是说记忆有克星的话,那么一定是时间。若是说耐心有克星的话,那么一定是人的心态。连续几天睡眠问题,加上环境影响,上篇博客还有部分知识只能放在该篇博客介绍…

大背景类型的网站设计wordpress留言代码

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 话说HTML5的炫酷真的是让我爱不释手,即使在这个提到IE就伤心不完的年代。但话又说回来,追求卓越Web创造更美世界…

响应式网站模板 开源网站建设合同违约金一般多少

文章目录 常规方式第 1 步:添加依赖第 2 步:配置 API 信息及全局参数配置 OpenAPI 文档配置单个 OpenAPI 文档 - 方式 1配置单个 OpenAPI 文档 - 方式 2配置多个 OpenAPI 文档其它 SpringDoc 及 Swagger-UI 配置第 3 步:添加 Swagger3 注解Swagger2 和 Swagger3 注解对应关系…

苏州网站建设自助建站模板搭建网站首页

为什么80%的码农都做不了架构师?>>> 原 找回Xcode7的代码折叠功能 升级到Xcode7后,会发现代码折叠功能不见了,这是怎么回事? 其实这个功能还在的,只是苹果默认把这个功能禁掉了:在Xcode菜单里选…

html5高端装修公司网站源码环球贸易网站

反转链表 一、题目描述 输入一个链表,反转链表后,输出新链表的表头。 (看过答案和测试之后,题目隐藏条件是要求链表是不带头结点的) 二、题目思路 就是用三个指针,head、pre、next,head之前都是…

铁岭做网站一般多少钱成都装修办公室公司

目录 一、四个坐标 二、两个坐标系的相互转换(齐次矩阵)

定制v教程免费保定百度推广优化排名

前言 众所周知,webpack配置环境变量文件,是根据打包命令寻找对应的环境变量文件,从而获取接口地址。所以触发时机是在每次打包的时候,接口地址才会被打包进去,无法自由修改。 本次要求一次打包后,修改接口…

网站续费公司北京网站建设公司朝阳

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 说到透视变换,以前我也不明白为什么有这样一个需求。后来在tier1做车道线检测的时候,才知道如果把camera拍摄到的图像做一次…

网站建设冫首先金手指十五上海高中生做课题的网站

一、朴素贝叶斯算法 1、什么是朴素贝叶斯分类方法 之前用KNN算法,分类完直接有个结果,但是朴素贝叶斯分完之后会出现一些概率值,比如: 这六个类别,它都有一定的可能性 再比如,对文章进行分类:…

八字排盘网站建设推广的网站有哪些

现在来了解一下JavaScript中的location对象。location记录了页面文档的位置信息,当然这个位置不是地址位置,而是指web中的文档位置。location其实是一个很特殊的对象,首先它是window的属性,同时也是document的属性,换句…

商务网站建设策划书域名到期查询

前言 在ffmpeg命令行中,ffmpeg -i test -pix_fmt rgb24 test.rgb,会自动打开ff_vf_scale滤镜,本章主要追踪这个流程。 通过gdb可以发现其基本调用栈如下: 可以看到,query_formats()中创建的v…

微信小程序推广赚佣金泉州网站关键词优化

当自然数 n 依次取 1、2、3、……、N 时,算式 ⌊ 有多少个不同的值?(注:⌊ 为取整函数,表示不超过 x 的最大自然数,即 x 的整数部分。) 输入格式: 输入给出一个正整数 N(…

个人网站服务器租用如何建设网站后台

网络抓包与协议分析 一. 以太网帧格式分析 这是以太网数据帧的基本格式,包含目的地址(6 Byte)、源地址(6 Byte)、类型(2 Byte)、数据(46~1500 Byte)、FCS(4 Byte)。 Mac 地址类型 分为单播地址、组播地址、广播地址。 单播地址:是指第一个字节的最低位…

一般网站用什么数据库襄阳seo站内优化

个人认为这是一篇很好,值得看的文章,但是没啥大用,可供参考。 数字化转型是一个复杂而全面的过程,它涉及到从战略规划到具体执行的多个层面。根据提供的信息,我们可以从以下几个方面来理解和探讨数字化转型的从战略到执…

wap企业网站模板济南网站设计建设公司

语法 sqlite3 命令的基本语法如下&#xff1a; $sqlite3 DatabaseName.db 通常情况下&#xff0c;数据库名称在 RDBMS 内应该是唯一的。 实例 如果您想创建一个新的数据库 <testDB.db>&#xff0c;SQLITE3 语句如下所示&#xff1a; $sqlite3 testDB.db SQLite ver…

山东seo网络推广seo入门培训课程

1. 两种异常处理机制 1.1 使用 throw 关键字手动抛出异常 使用throw关键字抛出异常&#xff0c;代码会的显得简单明了 如下图所示 1.2 使用 try-catch 捕获异常 使用try-catch进行捕获异常&#xff0c;往往会使代码变得更加笼统&#xff0c;层层包裹 如下图所示 2. 自定义…

网站建设入门培训阿里云商标注册

三极管 基本概念应用电路 基本概念 三极管 NPN 和PNP 电流方向 PNP是从e 流向 b c NPN是从 b c流向e 应用电路 箭头出发方向的电极比箭头指向方向的电极&#xff0c;高0.7v才导通。 NPN控制下游是否接到地&#xff0c;PNP控制上游的电源能否接过来。

网站推广渠道咨询长沙网站建设联系电话

P4768 [NOI2018] 归程 给定一个nnn个点&#xff0c;mmm条边的无向联通图&#xff0c;边的描述为[u,v,l,a][u, v, l, a][u,v,l,a]&#xff0c;表示uuu&#xff0c;vvv连有一条长度为lll&#xff0c;海拔为aaa的边&#xff0c; 有QQQ个询问&#xff0c;每次给出一个出发点uuu和…

上海排名优化工具价格宁波seo软件

局域网交换机作为局域网的集中连接设备&#xff0c;它的接口类型是随着各种局域网和传输介质类型的发展而变化的&#xff0c;交换机的许多接口与路由器接口完全一样。接下来就由杭州飞畅的小编来为大家介绍下交换机的接口类型以及连接方式有哪些&#xff1f;一起来看看吧&#…

企业做网站有什么用dede 更新网站地图

首先&#xff0c;为全面披露信息&#xff0c;在过去的1.5年中&#xff0c; 我一直担任 FuseSource&#xff08;现为Red Hat&#xff09; 的顾问&#xff0c;为零售&#xff0c;运输&#xff0c;银行/金融等不同行业的大型和小型公司提供SOA和集成项目支持。我的专长是使用该领域…