我是 Tomcat、servlet 和 Spring Web 的新手。我有 PHP 背景,所以至少可以说我有点迷失方向。我想要一个控制器为我创建一个会话 cookie。
有人告诉我,我可以在标准 servlet 中获得这样的会话:
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// Somewhere inside the method...
HttpSession session = request.getSession(true);
// Set a cookie
session.setAttribute("hello", "world");
// More stuff...
}
这如何转化为 Spring Web MVC 的做事方式?我可以在控制器内创建会话cookie吗?
您在示例中所做的事情与 cookie 无关。
session.setAttribute("key", valueObject);
在会话中设置一个 java 对象。会话保存在服务器上。 sessionid 是唯一返回给客户端的内容。它可以是 cookie,也可以位于 URL 中。会话中的属性未序列化为字符串。
另一方面,Cookie 是发送回客户端的字符串。客户有责任存储他们的 cookie(有些人将其关闭)并将其返回到服务器。
从复杂的对象图中设置 cookie 值需要序列化和反序列化。会话属性不会。
如果你想读取 cookie,请使用以下命令:
@CookieValue("key") String cookie
在控制器参数列表中。 cookie 变量将使用名为“key”的 cookie 中的值进行填充。
要设置 cookie,请调用:
response.addCookie(cookie);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)