当前位置: 代码网 > it编程>编程语言>Java > Spring获取Cookie和Session(@CookieValue()和@SessionAttribute())

Spring获取Cookie和Session(@CookieValue()和@SessionAttribute())

2026年01月13日 Java 我要评论
获取 cookie传统获取 cookie这是没有 spring 的时候,用 servlet 来获取(获取所有的 cookie)spring mvc 是基于 servlet api 构建的原始 web

获取 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内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com