Cookie cookie = new Cookie("JSESSIONID", session.getId()); cookie.setMaxAge(60 * 30 * 30); cookie.setPath("/Servlet"); resp.addCookie(cookie);
时间: 2024-04-21 22:25:14 浏览: 6
根据您提供的代码,您正在创建一个名为“JSESSIONID”的cookie,并将其添加到HTTP响应中。该cookie的最大寿命为半个小时,其路径为“/Servlet”。
请确保您已经在您的代码中正确设置了cookie,并且已经启用了cookie。此外,请确保您正在访问的网站已经启用了cookie。如果您仍然遇到问题,您可以尝试清除浏览器缓存和cookie,并重新启动浏览器。如果问题仍然存在,请提供更多的信息,这样我才能更好地帮助您。
相关问题
@RequestMapping(value = "/do_login.do", method = RequestMethod.POST) public SverResponse<UserEntity> doLogin(String account, String password, HttpSession session) { SverResponse<UserEntity> response = userService.doLogin(account, password); if (response.isSuccess()) { // 登陆成功,将用户信息存入session // Cookie cookie = new Cookie("JSESSIONID", session.getId()); // respons.addCookie(cookie); // respons.addHeader("Set-Cookie", "JSESSIONID=" + session.getId()); // 设置Cookie session.setAttribute(ConstUtil.CUR_USER, response.getData()); // System.out.println(session.getAttribute(ConstUtil.CUR_USER)); } return response; } 在这端程序中设置cookie响应头
在 Spring MVC 中,可以通过 `HttpServletResponse` 对象来设置响应的 Header,从而设置 Cookie。具体来说,可以在控制器方法中通过注入 `HttpServletResponse` 对象来实现,代码如下:
```
@RequestMapping(value = "/do_login.do", method = RequestMethod.POST)
public SverResponse<UserEntity> doLogin(String account, String password, HttpSession session, HttpServletResponse response) {
SverResponse<UserEntity> response = userService.doLogin(account, password);
if (response.isSuccess()) {
// 登陆成功,将用户信息存入session
session.setAttribute(ConstUtil.CUR_USER, response.getData());
// 设置 Cookie
Cookie cookie = new Cookie("JSESSIONID", session.getId());
cookie.setMaxAge(30 * 60); // 设置 Cookie 的过期时间为 30 分钟
cookie.setPath("/");
response.addCookie(cookie);
}
return response;
}
```
在上面的代码中,我们通过 `response.addCookie(cookie)` 方法来设置 Cookie。其中,`cookie` 是要设置的 Cookie 对象,`setMaxAge` 方法用于设置 Cookie 的过期时间(单位为秒),`setPath` 方法用于设置 Cookie 的路径。需要注意的是,如果不设置 Cookie 的路径,则默认为当前请求的路径。
除了通过 `addCookie` 方法来设置 Cookie,还可以通过设置响应头的方式来实现。具体来说,可以通过以下代码来设置响应头:
```
response.setHeader("Set-Cookie", "JSESSIONID=" + session.getId() + "; Path=/; Max-Age=1800");
```
其中,`setHeader` 方法用于设置响应头,`Max-Age` 用于设置 Cookie 的过期时间(单位为秒)。需要注意的是,如果要设置多个 Cookie,可以将它们用分号和空格隔开,例如:
```
response.setHeader("Set-Cookie", "cookie1=value1; Path=/; Max-Age=1800; " +
"cookie2=value2; Path=/; Max-Age=1800; " +
"cookie3=value3; Path=/; Max-Age=1800");
```
以上就是在 Spring MVC 中设置 Cookie 响应头的基本步骤。
el表达式我获取不到session 我只能使用Java表达式 也就是这样<%= session.getId() %> 但是请求发出去以后是这样的gmsOaoProtocolList?jsessionid=%3C%=session.getId()%20%%3E
你可以使用以下代码来获取 session ID 并拼接到表单的 action 属性后面:
```jsp
<form action="someAction.jsp;jsessionid=<%= session.getId() %>">
<!-- 表单元素 -->
</form>
```
在这个例子中,我们使用 Java 表达式 `<%= session.getId() %>` 来获取 session ID,并使用字符串拼接符 `+` 将其拼接到表单的 action 属性后面,生成完整的 URL。需要注意的是,表单的 action 属性值需要使用双引号 `"` 包含起来,否则编译器会报错。
另外,如果你在使用这个方法时,发现拼接出来的 URL 中包含了 `%3C` 和 `%20%%3E` 这样的编码字符,可能是因为 JSP 编译器将 `<%= session.getId() %>` 解析为了字符串 `"<%= session.getId() %>"`,而不是表达式的值。你可以尝试在 JSP 页面中使用以下语句来输出 session ID:
```
<%
String sessionId = session.getId();
response.encodeURL("someAction.jsp;jsessionid=" + sessionId);
%>
```
在这个例子中,我们使用 Java 代码获取 session ID,然后使用 `response.encodeURL()` 方法将其编码成 URL 格式。然后,你可以将编码后的 URL 作为表单的 action 属性值。需要注意的是,`response.encodeURL()` 方法需要在 JSP 页面中使用 `page` 对象调用,所以你需要在 JSP 页面的开头加上以下语句:
```
<%@ page import="javax.servlet.http.HttpServletResponse" %>
```
这样就可以正确生成带有 session ID 的 URL 了。