网站页面组成,小红书体现的网络营销方式,海城区建设局网站,宁波seo排名方案前言
#x1f31f;#x1f31f;本期讲解关于SpringMVC的编程之参数传递~~~
#x1f308;感兴趣的小伙伴看一看小编主页#xff1a;GGBondlctrl-CSDN博客
#x1f525; 你的点赞就是小编不断更新的最大动力
#x1f386;那么废…
前言
本期讲解关于SpringMVC的编程之参数传递~~~
感兴趣的小伙伴看一看小编主页GGBondlctrl-CSDN博客 你的点赞就是小编不断更新的最大动力
那么废话不多说直接开整吧~~ 目录
️1.请求
1.1了解Cookie与Session
1.2获取Cookie
1.传统的方式
2.注解的方式
1.3获取Session
1.传统的方式
2.注解的方式
1.4获取Header
1.传统的方式
2.注解的方式
️2.响应
2.1返回静态页面
2.2RestController与Controller的区别
2.3设置状态码
2.4设置Header
️3.总结 ️1.请求
1.1了解Cookie与Session
回顾之前我们学习过的cookie我们知道这是用于浏览器与页面存储某些信息的部分而HTTP 协议⾃⾝是属于 ⽆状态 协议 无状态默认情况下 HTTP 协议的客⼾端和服务器之间的这次通信, 和下次通信之间没有直接的联系. 但是在实际开发中在第一次用户登录后是要存储用户的信息的第⼆次访问的时候服务器就能知道该请求是否是已经登陆过了.具体的情况就是如下所示 解释
上面的令牌就是存储在cookie中的下次访问服务器的时候就要带上cookie中的“令牌”此时在服务器这边就需要记录令牌信息, 以及令牌对应的⽤⼾信息, 这个就是 Session 机制所做的⼯作.
理解session 我们先来了解⼀下什么是会话.会话: 对话的意思 解释
会话是⼀个客⼾与服务器之间的不中断的请求响应. 对客⼾的每个请求服务器能够识别出请求来⾃于同⼀个客⼾.
当⼀个未知的客⼾向Web应⽤程序发送第⼀个请求时就开始了⼀个会话.当客⼾明确结束会话或服务器在⼀个时限内没有接受到客⼾的任何请求时会话就结束了
总结
服务器需要清楚的区分每个请求是属于哪个⽤⼾, 也就是属于哪个会话, 就需要在服务器这边记录每个会话以及与⽤⼾的信息的对应关系. 所以session就是服务器用来保存用户信息而创建的一个特殊的对象 Session的本质就是⼀个 哈希表, 存储了⼀些键值对结构. Key 就是SessionID, Value 就是⽤⼾信息(⽤⼾信息可以根据需求灵活设计
此时cookie和session就可以合作来完成这个过程 解释
1首先客户端发送请求后服务器就会返回创建一个session然后把sessionID通过setcookie放回给客户端存在客户端中cookie里。
2.当客户端第二次进行访问的时候就会带上cookie发送请求
3.此时服务器就会拿到里面的sessionID这个key然后查找session这个对象返回给客户端
这两者的区别
• Cookie 是客⼾端保存⽤⼾信息的⼀种机制. Session 是服务器端保存⽤⼾信息的⼀种机制. • Cookie 和 Session之间主要是通过 SessionId 关联起来的, SessionId 是 Cookie 和 Session 之间的桥梁 • Cookie 和 Session 经常会在⼀起配合使⽤. 但是不是必须配合.
1.2获取Cookie
1.传统的方式
代码如下所示 public String request10(HttpServletRequest request){Cookie[] cookies request.getCookies();if(cookies!null){Arrays.stream(cookies).forEach(cookie - {System.out.println(cookie.getName()cookie.getValue());});}return 获取到cookie;}
解释
Spring MVC是基于 Servlet API 构建的原始 Web 框架, 也是在Servlet的基础上实现的
HttpServletRequest 对象代表客⼾端的请求, 当客⼾端通过HTTP协议访问服务器时HTTP请 求头中的所有信息都封装在这个对象中
HttpServletResponse 对象代表服务器的响应. HTTP响应的信息都在这个对象中, ⽐如向客⼾ 端发送的数据, 响应头, 状态码等
这里获取到cookie后转化为数据流的方式进行增强循环实现打印
当我们进行测试后 此时就能够在下面的面板中得到这里的字符串但是有由于没有设置所以我们能够自己进行设置cookie的值,此时我们可以在浏览器中进行修改 此时我们再次启动刷新· 我们就可以在控制面板进行观察了~~
2.注解的方式
这里spring进行分装此时就可以使用注解代替但是这种方式只能获取指定的cookie具体的代码就是如下所示 RequestMapping(r11)public String request11(CookieValue(nihao) String nihao){return nihao的cookie值nihao;}
此时我们就可以拿到cookie中“nihao”的value值 那么就可以拿到返回的cookie值了
1.3获取Session
我们知道session是服务器的此时我们就不能在客户端浏览器进行修改所以此时我们就在代码中先设置session的值这里和上面的cookie大差不差
RequestMapping(r13)public String request13(HttpServletRequest request){HttpSession sessionrequest.getSession();session.setAttribute(name,zhangsan);return session设置成功;}
此时我们就可以通过httpservletrequest来进行设置还有这里的session是一个键值对的形式所以要有两个参数
那么接下来我们就可以获取session了
1.传统的方式 RequestMapping(r12)public String request(HttpServletRequest request){HttpSession session request.getSession();String name(String) session.getAttribute(name);return 获取到了session:name;}
这里也是通过HttpServletRequest 来进行操作输入对应的key的值“value”来进行操作我们进行postman进行测试获取 那么就可以看到拿到了session的值
2.注解的方式
此时和上面一致进行了封装那么此时我们就可以拿到session的值了并且代码更加的简单 RequestMapping(r16)public String request16(SessionAttribute(name) String name){return 获取到了sessionname;}
这里还是只能获取对应的key值的value通过参数来接收这里的session的值这里小编就不在进行演示了 注意若没有获取到session的值并且为null很有可能就是刷新了浏览器由于session是存储来内存中的所以此时我们就要重新再次建立session然后再获取session 1.4获取Header
这里还是一样的我们知道HttpServletRequest包含了所有请求头中的所有相关的信息此时也可以通过这个来进行某个属性的获取
1.传统的方式
代码如下 RequestMapping(r17)public String request17(HttpServletRequest httpServletRequest){String contentTypehttpServletRequest.getHeader(Content-Type);return contentType;}
注意此时我们直接进行操作是不会得到任何的数据这里代表就是数据传输的方式此时我们需要在postman中进行数据的编写 此时我们再次点击发送那么此时的数据传输就是JSON的格式了 2.注解的方式
代码如下所示
RequestMapping(r18)public String request18(RequestHeader(Content-Type) String contentType){return contentType;}
这里和上面几乎是一致的还是一样的返回指定content-type那么所以小编就不再进行演示和赘述了
️2.响应
2.1返回静态页面
首先我们需要进行html的设置代码如下
!DOCTYPE html
html langen
headmeta charsetUTF-8titleIndex⻚⾯/title
/head
bodyHello,Spring MVC,我是Index⻚⾯.
/body
/html
此时我们规定的后端代码就是如下所示
RestController
RequestMapping(response)
public class ResponseController {RequestMapping(jump)public String response1(){return /index.html;}
此时我们进行输出后返回就是如下所示的 此时我们想要返回的是一个html页面结果这里当成了数据进行返回了那么此时我们就可以通过更改注解名的方式进行操作
Controller
RequestMapping(response)
public class ResponseController {RequestMapping(jump)public String response1(){return /index.html;}
解释
此时就是将上面的restcontroller进行了更改为controller那么此时就可以进行html的页面的跳转了那么这是问什么呢下面小编将进行讲解
2.2RestController与Controller的区别
随着互联⽹的发展, ⽬前项⽬开发流⾏前后端分离模式, Java主要是⽤来做后端项⽬的开发, 所以也就不再处理前端相关的内容了 MVC的概念也逐渐发⽣了变化, View不再返回视图, ⽽是返回显⽰视图时需要的数据.
所以RestController 其实是返回的数据
java.lang.annotation.Target({java.lang.annotation.ElementType.TYPE})
java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
java.lang.annotation.Documented
org.springframework.stereotype.Controller
org.springframework.web.bind.annotation.ResponseBody
public interface RestController {org.springframework.core.annotation.AliasFor(annotation org.springframework.stereotype.Controller.class)java.lang.String value() default ;
} 解释
上面的代码最重要的就是代表了如下 RestController Controller ResponseBody 所以如果想返回视图的话, 只需要把 ResponseBody 去掉就可以了, 也就是 Controller 这里的ResponseBody 代表就是返回数据据
注意
ResponseBody这既可以用作类也可以用在方法上面代表就是返回的是数据如果上面的RestController被Controller代替后想要返回数据不是视图那么就可以使用ResponseBody加在方法上面
Controller不能用在方法上面如下图所示 2.3设置状态码 Spring MVC会根据我们⽅法的返回结果⾃动设置响应状态码, 程序员也可以⼿动指定状态码 通过Spring MVC的内置对象HttpServletResponse 提供的⽅法来进⾏设置
代码如下 RequestMapping(setstatus)ResponseBodypublic String setstatus(HttpServletResponse httpServletResponse){httpServletResponse.setStatus(401);return 状态码设置成功;}
此时我们使用postman进行发送请求用fiddler进行抓包 可以发现状态码本来因该是200但是被修改后成为了401所以状态码不一定会影响是否响应成功
2.4设置Header
这里小编就直接步入正题吧
我们首先看看这个RequestMapping的内部的原码 java.lang.String name() default ;org.springframework.core.annotation.AliasFor(path)java.lang.String[] value() default {};org.springframework.core.annotation.AliasFor(value)java.lang.String[] path() default {};org.springframework.web.bind.annotation.RequestMethod[] method() default {};java.lang.String[] params() default {};java.lang.String[] headers() default {};java.lang.String[] consumes() default {};java.lang.String[] produces() default {};
解释 1.value: 指定映射的URL 2. method: 指定请求的method类型, 如GET, POST等 3. consumes: 指定处理请求(request)的提交内容类型(Content-Type)例如application/json, text/html; 4. produces: 指定返回的内容类型还可以同时设置返回值的字符编码 5. Params: 指定request中必须包含某些参数值时才让该⽅法处理 6. headers: 指定request中必须包含某些指定的header值才能让该⽅法处理请求 其实在上面有几个是小编之前讲解到的这里就举几个其他的例子
produce规定返回的内容的类型
RequestMapping(value /returnJson2,produces application/json)ResponseBodypublic String returnJson2() {return ji;} 此时我们进行抓包处理 可以看到此时就是JSON的格式
method指定请求的方法
RequestMapping(value /method,method RequestMethod.POST)public String method(){return 方法观察;}
此时我们使用postman进行发送请求 此时若为get方法那么就会出现方法不被允许的错误所以在我们更改请求的方法后 我们进行抓包可以看到此时的结果就是如下所示 那么此时就是抓包的结果可以看到请求的方法就是post
️3.总结
本期小编主要讲解了关于cookie和session的概念和如何进行获取的操作这里包括了传统的代码编写方式以及注解的代码编写的方式还讲解了响应中比较重要的RestController的概念理解和状态码Header的设置
~~~~最后希望与诸君共勉共同进步 以上就是本期内容了 感兴趣的话就关注小编吧。 期待你的关注~~~