获取 cookie
传统获取 cookie
这是没有 spring 的时候,用 servlet 来获取(获取所有的 cookie)
- spring mvc 是基于 servlet api 构建的原始 web 框架,也是在 servlet 的基础上实现的
@requestmapping("/getcookie")
public string getcookie(httpservletrequest request,
httpservletresponse response) {
//string name = request.getparameter("name");
cookie cookies[] = request.getcookies();
if (cookies != null) {
//将 cookie 转成了数据流,然后进行循环
arrays.stream(cookies).foreach(ck -> system.out.println
(ck.getname() + ":" + ck.getvalue()));
}
return "获取cookie成功";
}
- httpservletrequest 代表 http 的请求,http 请求里面有什么,这个对象里面就有什么
- httpservletresponse 代表 http 的响应,http 响应里面有什么,这个对象里面就有什么
这两个对象属于 spring 的内置对象,需要就加上,不用就不用写
cookie 是一个数组,所以进行循环打印
进入网页后,cookie 可以直接进行修改(f12)。然后在里面添加信息,name=bite,value=666,随后保存

之后刷新,可在服务端看到 cookie 信息

- spring mvc 是基于 servlet api 构建的原始 web 框架,也是在 servlet 的基础上实现的
- httpservletrequest,httpservletresponse 是 servlet 提供的两个类,是 spring mvc 方法的内置对象,需要时直接在方法中添加声明即可
- httpservletrequest 对象代表客户端的请求,当客户端通过 http 协议访问服务器时,http 请求头中的所有信息都封装在这个对象中,通过这个对象提供的方法,可以获得客户端请求的所有信息
- httpservletresponse 对象代表服务器的响应。http 响应的信息都在这个对象中,比如向客户端发送的数据,响应头,状态码等。通过这个对象提供的方法,可以获得服务器响应的所以内容
- spring mvc 在这两个对象的基础上进行封装,给我们提供更加简单的使用方法
简洁获取 cookie(注解)
spring mvc 在这两个对象的基础上进行封装,给我们提供更加简单的使用方法
上面获取的话,就是获取的所有的 cookie,而如果想要获取某个 cookie,就需要使用 @cookievalue
@requestmapping("/getcookie2")
public string getcookie2(@cookievalue("bite") string bite) {
return "从cookie中获取值, bite:"+bite;
}
@cookievalue 里面的值,就是你要获取的 cookie

获取 session
session 存储和获取
传统方式也是用 servlet 进行实现的
@requestmapping("/getsession")
public string getsession(httpservletrequest request) {
//从 cookie 中获取到了 sessionid,根据 session 获取 session对象
httpsession session = request.getsession();
string name = (string) session.getattribute("name");
return "从session中获取name:"+name;
}
- 第四行是从
cookie中获取到sessionid,然后根据sessionid获取到session对象 - 然后通过
getattribute来获取你要拿的值
因为 session 是在服务器中进行存储的,所以就不能像前面 cookie 一样可以直接“伪造”了。就需要学习如何设置 session
@requestmapping("/setsession")
public string setsession(httpservletrequest request){
//从 cookie 中获取到了sessionid,根据 sessionid 获取session对象
//如果没有获取到,就会创建一个session对象
httpsession session = request.getsession();
session.setattribute("name","zhangsan");
return "设置session成功";
}
- 首先是在
cookie中获取sessionid,然后根据sessionid获取session对象。如果没有获取到,就会创建一个session对象 - 创建好
session之后,就可以进行设置了- 使用
setattribute进行设置,前面是name,后面是value
- 使用
可以通过 fiddler 进行观察

之后就可以通过 sessionid 获取到 session 的值了

如果擅自将下面的 sessionid 改了,就获取不到 session 了

简洁获取 session (1)
封装一些冗余的过程
@requestmapping("/getsession2")
public string getsession2(httpsession session){
string name = (string) session.getattribute("name");
return "从session中获取name"+name;
}
- 这里
httpsession就直接省略了自己getsession的过程,直接就给我们提供了一个session
简洁获取 session (2)
更进一步,能直接给到我们想要的 name 的值吗
@requestmapping("/getsession3")
public string getsession3(@sessionattribute("name") string name){
//string name = (string) session.getattribute("name");
return "从session中获取name:"+name;
}
这里的 @sessionattribute 里面的值就是想要获取的 session 的值,省略掉了指定 name 的步骤

到此这篇关于spring获取cookie和session(@cookievalue()和@sessionattribute())的文章就介绍到这了,更多相关spring获取cookie和session内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论